第10章 账户和存取权限_第1页
第10章 账户和存取权限_第2页
第10章 账户和存取权限_第3页
第10章 账户和存取权限_第4页
第10章 账户和存取权限_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第10章章 账户和存取权限账户和存取权限对于一个数据库管理员来说,安全性就意味着必须保证那些具有特殊数据访问权限的用户能够登录到SQL Server,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,他还要防止所有的非授权用户的非法操作。 SQL Server提供了既有效又容易的安全管理模式,这种安全管理模式是建立在安全身份验证和访问许可两者机制上的。基本原理基本原理主体主体:它是一个标识,用来访问SQL 服务器的对象,可能是用户或应用程序。安全对象安全对象:在服务器和数据库中,可通过权限保护的对象。权限权限:用来规定特定主体在访问安全对象时允许或不允许的行为。安全级别安全级别

2、:SQL Server 具有多个安全级别,各级别间具有层次关系。登录名登录名:通过登录名可以连接到服务器。用户用户:通过用户可以访问数据库。角色角色:通过角色可以赋予访问数据库的权限。重要概念重要概念主 体主体Server 角色SQL Server 登录Windows 组域用户账户本地用户账户用户数据库角色应用程序角色组SQLServer数据库Windows安全对象权限安全对象主体Server 角色SQL Server 登录Windows 组域用户账户本地用户账户用户数据库角色应用程序角色组SQLServer数据库Windows安全对象权限文件密钥服务器架构数据库SQL Server 2005

3、 权限主体Server 角色SQL Server 登录Windows 组域用户账户本地用户账户用户数据库角色应用程序角色组SQLServer数据库Windows安全对象权限文件密钥服务器架构数据库CREATEALTERDROPCONTROLCONNECTSELECTEXECUTEUPDATEDELETEINSERTTAKE OWNERSHIPVIEW DEFINITIONBACKUP授予授予/撤销撤销/拒绝拒绝ACL10.1 10.1 SQL Server的验证模式SQL Server对用户的访问进行两个阶段的检验:验证阶段 登录SQL Server时进行的检查。如果验证通过,用户就可以连接到

4、SQL Server上;否则,服务器将拒绝用户的登录。从而保证了系统安全性。许可确认阶段 登录到SQL Server上以后,系统检查用户是否有访问服务器上数据的权限。10.1.1 Windows模式验证模式验证在windows验证模式下,SQL Server检测当前使用的Windows用户帐户,确定该账户是否有权限登录。该模式不必提交登录名和密码。10.1 SQL Server的验证模式Windows验证模式有以下主要优点:数据库管理员的工作可以集中在管理数据库上面,而不是管理用户账户。对用户账户的管理可以交给Windows去完成。 Windows有着更强的用户账户管理工具。可以设置账户锁定、

5、密码期限等。Windows的组策略支持多个用户同时被授权访问SQL Server。10.1 SQL Server的验证模式10.1.2 混合验证模式混合验证模式混合验证模式允许以SQL Server验证模式或Windows验证模式来进行验证。使用哪种模式取决于在最初的通信时使用的网络库。如果一个用户使用的是TCP/IP Sockets进行登录验证,则将使用SQL Server验证模式;如果用户使用Named Pipes,则登录时将使用Windows验证模式。SQL Server验证模式处理登录的过程: 用户输入登录名和密码后, SQL Server在系统注册表中检测输入的登录名和密码。如果输入

6、的登录名存在,而且密码也正确,就可以登录到SQL Server上。10.1 SQL Server的验证模式混合验证模式具有如下优点:创建了Windows之上的另外一个安全层次。支持更大范围的用户,例如非Windows客户、Novell网络等。一个应用程序可以使用单个的SQL Server登录和口令。10.1 SQL Server的验证模式10.1.3 设置验证模式设置验证模式第1步:在“对象资源管理器”窗口中,选择服务器,右击,在弹出的快捷菜单上选择“属性”命令,然后在打开的“服务器属性”对话框中,选择“安全性”选项,打开“安全性”选项卡 .第2步:在“服务器身份验证”栏中设置验证模式后,单击

7、“确定”按钮.第3步:重新启动SQL Server,以新的验证模式登录服务器。 10.1 SQL Server的验证模式10.2 账户和角色SQL Server的两种账户:的两种账户:登录服务器的登录帐户(login name)登录帐户只是让用户登录到SQL Server中,但登录名本身并不能让用户访问服务器中的数据。要访问特定的数据库,还必须具有用户名。使用数据库的用户帐户(user name )用户名在特定的数据库内创建。用户定义的信息放在服务器上的每个数据库的sysusers表中。通过授权给用户来指定银行可以访问的数据库对象的权限。角色角色角色是一组用户所构成的组,可分为服务器角色和数据

8、库角色。当几个用户需要在某个特定的数据库中执行类似的动作时,就可以向该数据库中添加一个角色(role)。数据库角色指定了可以访问相同数据库对象的一组数据库用户。10.2 账户和角色服务器角色服务器角色Sysadmin 可执行SQL Server中的任何动作Serveradmin 可设置服务器范围的配置选项Setupadmin 可管理链接服务器和启动过程Securityadmin 可管理登录和创建数据库、读取错误日志和更改密码。Processadmin 管理SQL Server进程Dbcreator 创建、修改和删除数据库Diskadmin 管理磁盘文件Public 具有查看任何数据库的权限10

9、.2 账户和角色10.2.1 登录帐户登录帐户登录帐户的添加登录帐户的设置登录帐户的删除10.2 账户和角色 登录帐户的添加登录帐户的添加1、SQL Server服务器登录管理:创建、管理SQL Server登录帐号,具体执行步骤如下:(1)打开SSMS在【对象资源管理器】中,展开【安全性】文件夹。(2)右击【登录名】,从弹出的快捷菜单中选择【新建登录名】选项,则出现【登录名新建】对话框,如下图。(3)选择【服务器角色】页框,如图。在框中,列出了系统的固定服务器角色。在这些固定服务器角色的左端有相应的复选框,打勾的复选框表示该登录帐号是相应的服务器角色成员。 10.2 账户和角色 登录帐户的添

10、加登录帐户的添加(3)选择【服务器角色】页框,如图。在框中,列出了系统的固定服务器角色。在这些固定服务器角色的左端有相应的复选框,打勾的复选框表示该登录帐号是相应的服务器角色成员。 10.2 账户和角色图图10-3 服务器角色对话框服务器角色对话框 登录帐户的添加登录帐户的添加(4)选择)选择【用户映射用户映射】页框,如图。上面的列表框列出了页框,如图。上面的列表框列出了【映映射到此登录名的用户射到此登录名的用户】,单击左边的复选框设定该登录账号可,单击左边的复选框设定该登录账号可以访问的数据库以及该帐号在各个数据库中对应的用户名。在以访问的数据库以及该帐号在各个数据库中对应的用户名。在【数据

11、库角色成员身份数据库角色成员身份】中可指定该帐号所属的数据库角色。中可指定该帐号所属的数据库角色。 10.2 账户和角色图图10-4 用户映射对话框用户映射对话框 登录帐户的添加登录帐户的添加5)选择)选择【安全对象安全对象】页框,如图。安全对象是页框,如图。安全对象是 SQL 数据库引数据库引擎授权系统控制对其进行访问的资源。点击擎授权系统控制对其进行访问的资源。点击【添加添加】按钮,按钮,可对不同类型的安全对象进行安全授予或拒绝;单击可对不同类型的安全对象进行安全授予或拒绝;单击【确定确定】即可完成登录帐号的创建。即可完成登录帐号的创建。10.2 账户和角色10.2.2 数据库用户数据库用

12、户每个登录帐户在一个数据库中中你能有一个用户帐户,但是每个登录帐户可以在不同的数据库中各有一个用户帐户。如果在创建登录帐户时没有指定对某个数据库的存取权限,则在数据库中,可创建一个新的用户帐户,并关联到该登录帐户,则该登录帐户会自动具有对该数据库的访问权限。例:在AdventureWorks库中创建一个用户帐户bookA,并将其关联到bookadm登录帐户中。10.2 账户和角色利用利用SSMS可授予可授予SQL Server登录访问数据库的许可权限:登录访问数据库的许可权限: 打开打开SSMS,展开要登录的服务器和数据库文件夹,展开要创建用户的数,展开要登录的服务器和数据库文件夹,展开要创建

13、用户的数据库及安全性文件夹。据库及安全性文件夹。图图10-6 新建数据库用户对话框新建数据库用户对话框 右击用户图标,从快捷菜单中选择右击用户图标,从快捷菜单中选择【新建用户新建用户】选项,则出现选项,则出现【数据库用户数据库用户新建新建】对话框,如图。对话框,如图。10.2.3 角色角色 拥有相同权限的用户集合称为角色服务器角色:由服务器账户组成的组,负责管理和维护SQL Server组。数据库角色:由数据库成员所组成的组,此成员可以是用户或者其他的数据库角色。10.2 账户和角色1.固定数据库角色固定数据库角色db_owner 在数据库中有全部权限db_accessadmin 可以添加、删

14、除用户db_datareader 可以查看所有数据库中用户表内数据db_datawriter 可以添加、修改或删除所有数据库中用户表内数据的用户db_ddladmin 可以在数据库中执行所有定义操作db_securityadmin可以管理数据库中与安全权限有关所有动作db_backoperator 可以备份数据库db_denydatareader 不能选择数据库中任何数据db_denydatawriter 不能改变数据库中任何数据Public 10.2 账户和角色(1)管理服务器角色。)管理服务器角色。 打开SSMS,展开指定的服务器,单击【安全性】文件夹,再单击【服务器角色】,在右边的页框中

15、右击所要的角色,从弹出菜单中选择【属性】,则出现【服务器角色属性】对话框,如图。在该对话框可看到属于该角色的成员。单击在该对话框可看到属于该角色的成员。单击【添加添加】或单击或单击【删除删除】按钮按钮。图图10-16 “数据库角色数据库角色新建新建”对话框对话框 (2)管理数据库角色。)管理数据库角色。 在SSMS中,展开【服务器】、【数据库】和【安全性】文件夹,右击【数据库角色】,从弹出菜单中选择【新建数据库角色】,则出现【新建数据库角色】对话框,如图。图图10-16 “数据库角色数据库角色新建新建”对话框对话框 2.应用程序角色应用程序角色 应用程序角色只使用应用程序,因而不需要把权限直接

16、赋予用户,所以应用程序角色没有任何成员。此外需要为应用程序设置一个口令来激活它。 应用程序角色可以加强对某个特定的应用程序的安全。这些角色允许应用程序自己代替SQL Server接管用户身份验证的职责。比如,如果公司中的员工只是使用某个特定的应用程序(而不是使用Transact-SQL语句或其他任何工具)来修改员工的数据信息,那么就可以为它创建一个应用程序角色。 当应用程序角色被应用程序的会话激活以用于连接时,在连接期间,会话就失去了登录、用户账户或所有数据库中的角色的权限。10.2 账户和角色3.public数据库角色的权限数据库角色的权限public角色是一种特殊的固定数据库角色,当在数据

17、库添加新用户帐户时,SQL Server会自动将新用户帐户加入public数据库角色中,即数据库的每个合法用户都属于该角色。 public角色为数据库中的用户提供了所有默认权限。对于用户建立的数据库对象, public角色默认是不设置权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。10.2 账户和角色10.2.4 用户和角色的权限问题用户和角色的权限问题 用户是否具有对数据库存取的权利,要看其权限设置而定,但是,它还要受其所属角色的权限的限制。10.2 账户和角色1. 用户权限继承角色的权限用户权限继承角色的权限用户对数据库对象的存取权限继承于所属角色。假如用

18、户User1属于角色Role1,角色Role1已经取得对表Table1的SELECT权限,则用户User1也自动取得对表Table1的SELECT权限,如果角色Role1对表Table1没有INSERT权限,而用户User1取得了对表Table1的INSERT权限,则角色Role1最终也取得对表Table1的INSERT权限。拒绝权限优先,只要角色Role1和用户User1中的之一拒绝,则该权限就是拒绝。10.2 账户和角色2. 用户分属不同角色用户分属不同角色如果一个用户分属于不同的数据库角色,例如,用户User1即属于角色Role1,又属于角色Role2,则用户User1的权限是以Role

19、1和Role2的并集为准。但是只要有一个拒绝,则用户User1的权限就是拒绝。10.2 账户和角色 在在SSMS中,展开中,展开【服务器服务器】、【数据库数据库】和和【安全性安全性】,单击,单击【用户用户】图标,在页框中将显示数据库的所有用户。图标,在页框中将显示数据库的所有用户。 右击要进行许可设置的右击要进行许可设置的【用户用户】,从弹出菜单中选择,从弹出菜单中选择【属性属性】,出现,出现【数据库用户数据库用户属性属性】对话框,选择对话框,选择【安全对象安全对象】,如图。,如图。 单击单击【添加添加】按钮,则弹出按钮,则弹出【添加对象添加对象】对话框,如左下图所示。选择对话框,如左下图所示

20、。选择【特特定对象定对象】单选钮后,出现如右下图所示的对话框。单选钮后,出现如右下图所示的对话框。 点击点击【确定确定】后则出现左下图的对话框,在该框中可进行对象许可的设置后则出现左下图的对话框,在该框中可进行对象许可的设置。 点击对话框底部点击对话框底部【列权限列权限】按钮,出现右下图所示对话框,在该对话框中可选择用户按钮,出现右下图所示对话框,在该对话框中可选择用户对哪些列具有哪些权限;单击对哪些列具有哪些权限;单击【确定确定】即可完成许可的设置。即可完成许可的设置。 在选项页在选项页【常规常规】中,在中,在【数据库角色成员身份数据库角色成员身份】中选择一个数据库中选择一个数据库角色,就完

21、成了数据库用户角色,就完成了数据库用户语句许可语句许可的设置。的设置。图图10-14 表属性中的权限对话框表属性中的权限对话框 在在SSMS中展开中展开【服务器服务器】、【数据库数据库】和和【具体数据库具体数据库】,选择需要设,选择需要设置的用户对象,即表、视图等。置的用户对象,即表、视图等。 右击该对象,从弹出菜单中选择右击该对象,从弹出菜单中选择【属性属性】,在弹出的该对象对话框中选择,在弹出的该对象对话框中选择【权限权限】,单击,单击【添加添加】按钮设置好相应的对象许可后,如图;单击按钮设置好相应的对象许可后,如图;单击【确定确定】即可。即可。(2)面向数据库对象的许可设置:)面向数据库

22、对象的许可设置: 命名空间将相关对象组织在一起,从而使复杂的对象列表更加方便管理。 SQL Server 2005 使用架构架构对数据库对象实现了类似的概念。提问: 在数据库中专门有名为 student_id 的表用来统计学生的学号和姓名,现在的问题就是每一届的学生数据都会存在这样一张同名的表,这可能会给查询带来困难。 举例:针对上面的情况,数据库将不知道如何区分 2006 级的学生和 2007 级的学生。如何解决这一问题呢?举例:我们以每一届的学生建立架构,要查找 2007 级的学生学号时,在这个数据库中就可以通过 2007.student.id 来找到合适的表了。架构:是数据库对象的命名空

23、间。换言之,架构定义了一个边界,边界内的所有名称都是唯一的。数据库中每一个对象的唯一完全限定名称为server.database.schema.object。PersonContact(Server1.AdventureWorks.Person.Contact)SalesCustomer(Server1.AdventureWorks.Sales.Customer)AdventureWorksdboErrorLog(Server1.AdventureWorks.dbo.ErrorLog) 数据库对象的命名空间数据库对象的命名空间下图有名为 Server的 SQL Server 实例中 AdventureWorks 数据库内的三个架构。架构分别名为Person、Sales和dbo,每一个架构都包含一个表。表的完全限定名称:包括服务器名、数据库名和架构名。例如:dbo 架构中的 ErrorLog 表的完全限定名称为server1. Adv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论