SQL-Server的安全管理.ppt

上传人:鲁** 文档编号:569385355 上传时间:2024-07-29 格式:PPT 页数:139 大小:2.03MB
返回 下载 相关 举报
SQL-Server的安全管理.ppt_第1页
第1页 / 共139页
SQL-Server的安全管理.ppt_第2页
第2页 / 共139页
SQL-Server的安全管理.ppt_第3页
第3页 / 共139页
SQL-Server的安全管理.ppt_第4页
第4页 / 共139页
SQL-Server的安全管理.ppt_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《SQL-Server的安全管理.ppt》由会员分享,可在线阅读,更多相关《SQL-Server的安全管理.ppt(139页珍藏版)》请在金锄头文库上搜索。

1、SQL Server数据库应用技术数据库应用技术第第10章章 SQL Server安全管理安全管理2024/7/291SQL Server 20052SQL Server 2005第第1010章章 SQL ServerSQL Server的安全管理的安全管理 n数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。n系系统安全保安全保护措施是否有效是数据措施是否有效是数据库系系统的主要指的主要指标之一。之一。n数据库安全性和计算机系统安全性(包括操作系统、网络系统的安全性)是紧密联系、相互支持的。n主要内容:主要内容:SQL Server 2005SQL Server 2

2、005安全性概述、安全性概述、SQL SQL Server 2005Server 2005的的验证模式、登模式、登录管理、用管理、用户管理、管理、角色管理、角色管理、权限管理及系限管理及系统加密机制等。加密机制等。3SQL Server 2005目录目录10.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述10.2 SQL Server 200510.2 SQL Server 2005的验证模式的验证模式10.3 10.3 登录管理登录管理10.4 10.4 用户管理用户管理10.5 10.5 角色管理角色管理10.6 10.6 权限管理权限管理1

3、0.7 10.7 加密机制加密机制练习题练习题10 10 上机实习上机实习9 9 4SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页nSQL Server 2005安全系统的构架建立在用户和用户用户和用户组组的基础上。nWindowsWindows中的用户和本地组及全局组中的用户和本地组及全局组可以映射到SQL Server 2005中的安全登录帐户安全登录帐户,也可以创建独立Windows帐户的安全登录帐户。nSQL ServerSQL Server提供了提供了2 2种安全管理模式:种安全管理模式

4、:Windows Windows 身份验证模式身份验证模式混合身份验证模式。混合身份验证模式。5SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页1 1、两个安全性阶段、两个安全性阶段 在SQL Server 2005中工作时,用户要经过两个安全性阶段:n身份验证:身份验证:每个用户必须通过登录帐户登录帐户建立自己的连接能力(身份验证),以获得对SQL Server 2005实例的访问权限。n权限验证(授权):权限验证(授权):该登录必须映射到用于控制在数据库中所执行的活动(权限验证)的 SQL Se

5、rver SQL Server 用户帐户用户帐户。如果数据库中没有用户帐户,则即使用户能够连接到 SQL Server 实例,也无法访问该数据库。 6SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页2 2、用户权限、用户权限当用户连接到当用户连接到SQL Server 2005SQL Server 2005实例后,他们可以执行实例后,他们可以执行的活动由授予以下帐户的权限确定:的活动由授予以下帐户的权限确定:用户安全帐户;用户安全帐户所属Windows组或角色层次结构;用户若要进行任何涉及更改数据库

6、定义或访问数据的活动,则必须有相应的权限。管理权限包括授予或废除执行以下活动的用户权限:管理权限包括授予或废除执行以下活动的用户权限:处理数据和执行过程(对象权限对象权限);创建数据库或数据库中的项目(语句权限语句权限);利用授予预定义角色的权限(暗示性权限暗示性权限)。7SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页 3 3、视图安全机制、视图安全机制n视图作为安全机制:视图作为安全机制:SQL Server 2005通过限制可由用户使用的数据。n数据子集:数据子集:用户可以访问某些数据,进行查

7、询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。n视图授权:视图授权:对SQL Server 2005来说,无论在基础表(一个或多个)上的权限集合有多大,都必须授予、拒绝或废除访问视图中数据子集的权限。8SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页4 4、加密方法、加密方法 SQL Server 2005SQL Server 2005支持加密或可以加密的内容为:支持加密或可以加密的内容为:SQL Server 中存储的登录和应用程序角色密码;作为网络数据包而在客户端和服务器端之间发

8、送的数据;SQL Server 2005中如下对象的定义内容:存储过程、用户定义函数、视图、触发器、默认值、规则等。 例如:例如:SQL Server 2005SQL Server 2005可使用安全套接字层可使用安全套接字层(SSL)(SSL)加密在应加密在应用程序计算机和数据库计算机上的用程序计算机和数据库计算机上的 SQL Server SQL Server 实例之间传输实例之间传输的所有数据。的所有数据。9SQL Server 200510.1 SQL Server 200510.1 SQL Server 2005安全性概述安全性概述 返回本节首页5 5、审核活动、审核活动nSQL S

9、erver 2005提供审核功能,用以跟踪和记录每个SQL Server实例上已发生的活动(如成功和失败的记录)。nSQL Server 2005还提供管理审核记录的接口,即SQL事件探查器。n只有sysadmin固定安全角色的成员才能启用或修改审核,而且审核的每次修改都是可审核的事件。10SQL Server 200510.2 SQL Server 200510.2 SQL Server 2005的验证模式的验证模式 返回本节首页10.2.1 Windows10.2.1 Windows身份验证模式身份验证模式10.2.2 10.2.2 混合身份验证模式混合身份验证模式 ( (也称也称SQL

10、ServerSQL Server身份验证模式身份验证模式) )10.2.3 10.2.3 设置验证模式设置验证模式10.2.4 SQL Server10.2.4 SQL Server系统登录验证过程系统登录验证过程11SQL Server 200510.2 SQL Server 200510.2 SQL Server 2005的验证模式的验证模式 返回本节首页SQL Server 2005SQL Server 2005有两种安全验证模式:有两种安全验证模式:nWindows Windows 身份验证模式身份验证模式n混合身份验证模式(也称混合身份验证模式(也称SQL Server SQL Se

11、rver 身份验身份验证模式)。证模式)。12SQL Server 2005返回本节首页 图图10-2 SQL Server10-2 SQL Server系统登录验证过程系统登录验证过程10.2.3 10.2.3 设置验证模式设置验证模式13SQL Server 2005返回本节首页nWindows 身份验证模式是指用户通过 Windows 用户帐户连接到SQL Server,即用户身份由Windows 系统来验证。n默认的身份验证模式,比混合验证模式安全得多。nWindows 身份验证使用 Kerberos 安全协议,通过强密码的复杂性验证提供密码策略强制,提供帐户锁定支持,并且支持密码过期

12、。n用户和组是由Windows维护的,因此当用户进行连接时,SQL Server将读取有关该用户在组中的成员资格信息。10.2.1 Windows10.2.1 Windows身份验证模式身份验证模式14SQL Server 2005返回本节首页使用使用WindowsWindows身份验证有如下特点:身份验证有如下特点:1)Windows验证模式下由Windows管理登录帐户,数据库管理员主要是使用该帐户;2)Windows有功能很强的工具与技术去管理用户的登录帐户;3)可以在SQL Server中增加用户组,可以使用用户组。 SQL Server支持的登录帐户,能在系统表syslogins或目

13、录视图sys.syslogins中找到。10.2.1 Windows10.2.1 Windows身份验证模式身份验证模式15SQL Server 2005返回本节首页n 混合身份验证模式允许用户使用混合身份验证模式允许用户使用WindowsWindows身份和身份和SQL ServerSQL Server身份进行连接。身份进行连接。通过Windows登录帐户连接的用户可使用Windows验证的受信任连接。当用户使用指定登录名称和密码进行非信任连接时,SQL Server检测输入的登录名和密码是否与系统Syslogins表记录的情况相同,据此进行身份验证。如果不存在该用户的登录帐户,则身份验证失

14、败。n 提供提供SQL ServerSQL Server身份验证是为了考虑非身份验证是为了考虑非WindowsWindows客户兼容及客户兼容及向后兼容,早期向后兼容,早期SQL ServerSQL Server的应用程序可能要求使用的应用程序可能要求使用SQL SQL ServerServer登录和密码。登录和密码。10.2.2 10.2.2 混合身份验证模式混合身份验证模式( (也称也称SQL ServerSQL Server身份验证模式身份验证模式) )16SQL Server 2005返回本节首页混合身份验证模式有如下特点:混合身份验证模式有如下特点:1)混合模式允许非Windows客

15、户、Internet客户和混合的客户组连接到SQL Server中;2)增加了完全性方面的选择。 如果必须选择“混合身份验证模式”并要求使用SQL登录以适应旧式应用程序,则必须为所有SQL帐户设置强密码强密码。这对于属于sysadmin角色的帐户(特别是sa帐户)尤其重要。10.2.2 10.2.2 混合身份验证模式混合身份验证模式( (也称也称SQL ServerSQL Server身份验证模式身份验证模式) )17SQL Server 2005返回本节首页在在Management StudioManagement Studio中的两种设置方法。中的两种设置方法。 方法之一:方法之一:1)打

16、开Management Studio;2)在“视图”“已注册的服务器”子窗口中要设置验证模式的服务器上按鼠标右键,然后在弹出的快捷菜单上选择“属性”,系统弹出如图10-1所示的“编辑服务器注册属性”窗口。10.2.3 10.2.3 设置验证模式设置验证模式18SQL Server 2005返回本节首页 图图10-1 10-1 服务器注册属性服务器注册属性10.2.3 10.2.3 设置验证模式设置验证模式19SQL Server 2005返回本节首页 方法之二:方法之二:1)在Management Studio对象资源管理器中,右键单击服务器,再单击“属性”。2)在“安全性”页上的“服务器身份

17、验证”下,选择新的服务器身份验证模式,再单击“确定”。以上两种方法,均需要重新启动SQL Server后,才能生效。10.2.3 10.2.3 设置验证模式设置验证模式20SQL Server 200510.2.3 10.2.3 设置验证模式设置验证模式21SQL Server 200510.3 10.3 登录管理登录管理 返回本节首页10.3.1 系统管理员登录帐户10.3.2 使用Management Studio管理SQL Server登录帐户10.3.3 用T-SQL管理SQL Server登录帐户10.3.4 管理登录的最新T-SQL命令22SQL Server 200510.3 1

18、0.3 登录管理登录管理 返回本节首页登录是基于服务器级使用的用户名称。登录是基于服务器级使用的用户名称。在SQL Server中要成为数据库的用户,必须先成为服务器的登录。一个登录可以成为多个数据库的用户。n在Windows验证模式下,可以在Windows全局组或域用户中创建登录;n在SQL Server验证模式下,还可以在Windows的非全局组、非域用户甚至非Windows用户中创建登录。23SQL Server 2005返回本节首页nSQL Server有两个默认的系统管理员登录帐户:sasa和和BUILTINAdministratorsBUILTINAdministrators。ns

19、asa是一个特殊的登录名,是SQL Server身份验证机制下SQL Server的系统管理员,sa始终关联dbo数据库用户,并且没有为sa帐号指定口令,应尽快地给系统管理员帐户指定口令。nBUILTINAdministrators是Windows系统的系统管理员组。10.3.1 10.3.1 系统管理员登录帐户系统管理员登录帐户24SQL Server 2005返回本节首页在在Management StudioManagement Studio中能方便地创建、查看、修改、删除登录帐户。中能方便地创建、查看、修改、删除登录帐户。1.1.映射映射WindowsWindows登录帐户为登录帐户为S

20、QL ServerSQL Server登录帐户登录帐户2.在Management Studio中可以将一个Windows帐户或一个组映射成SQL Server登录帐户3.具体操作:4.选择“服务器”-“安全性”-“登录名”-“新建登录名”10.3.2 10.3.2 使用使用Management StudioManagement Studio管理管理SQL ServerSQL Server登录帐户登录帐户25SQL Server 200510.3.2 10.3.2 使用使用Management StudioManagement Studio管理管理SQL ServerSQL Server登录帐户

21、登录帐户26SQL Server 2005在在Management StudioManagement Studio中能方便地创建、查看、修改、删除登录帐户。中能方便地创建、查看、修改、删除登录帐户。2.创建SQL Server登录帐户10.3.2 10.3.2 使用使用Management StudioManagement Studio管理管理SQL ServerSQL Server登录帐户登录帐户在Management Studio中可以将一个Windows帐户或一个组映射成SQL Server登录帐户具体操作:选择“服务器”-“安全性”-“登录名”-“新建登录名”27SQL Server

22、200510.3.2 10.3.2 使用使用Management StudioManagement Studio管理管理SQL ServerSQL Server登录帐户登录帐户28SQL Server 2005返回本节首页3 3、在、在Management StudioManagement Studio中查看、修改或删除登录帐户中查看、修改或删除登录帐户方法如下:方法如下:1)启动Management Studio,分别展开“服务器”、“安全性”、“登录名”;2)单击“登录名”下的某一个登录帐户,在系统弹出菜单上点击“属性”,可进入“登录属性”对话框查看该登录帐户的信息。sp_helplogi

23、nssp_helplogins系统存储过程也能提供有关每个数据库中的登系统存储过程也能提供有关每个数据库中的登录及相关用户的信息。录及相关用户的信息。n sp_helplogins LoginNamePattern=login10.3.2 10.3.2 使用使用Management StudioManagement Studio管理管理SQL ServerSQL Server登录帐户登录帐户29SQL Server 2005返回本节首页 1 1、映射、映射WindowsWindows登录帐户为登录帐户为SQL ServerSQL Server登录帐户登录帐户 映射Windows登录帐户为SQL

24、 Server登录帐户的相关系统存储过程和命令有:nsp_grantlogin = CREATE LOGINnsp_denylogin = ALTER LOGINnsp_revokelogin = DROP LOGIN10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户30SQL Server 2005返回本节首页1 1)sp_grantloginsp_grantlogin:创建:创建 SQL Server SQL Server 登录名。登录名。其语法:sp_grantlogin loginame=login例如为例如为Windo

25、wsWindows用户用户CorporateBobJCorporateBobJ. .创建创建SQL SQL ServerServer登录名,命令为:登录名,命令为:sp_grantlogin CorporateBobJ;改用改用CREATE LOGINCREATE LOGIN首选实现方法命令为:首选实现方法命令为:CREATE LOGIN CorporateBobJ FROM WINDOWS;10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户31SQL Server 2005返回本节首页2 2)sp_denyloginsp_de

26、nylogin:禁止:禁止 Windows Windows 用户或组连接到用户或组连接到 SQL Server SQL Server 实例。实例。其语法:其语法:sp_denylogin loginame=login例例10-1 10-1 本例禁用本例禁用WindowsWindows用户用户CorporateBobJCorporateBobJ的的SQL SQL ServerServer登录名,命令为:登录名,命令为:sp_denylogin CorporateBobJ改用改用ALTER LOGINALTER LOGIN首选实现方法命令为:首选实现方法命令为:ALTER LOGIN Corpor

27、ateGeorgeW DISABLE;10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户32SQL Server 2005返回本节首页3 3)sp_revokeloginsp_revokelogin:从:从 SQL Server SQL Server 中删除使用中删除使用 CREATE CREATE LOGINLOGIN、sp_grantloginsp_grantlogin或或sp_denyloginsp_denylogin 为为 Windows Windows 用户或组用户或组创建的登录项。创建的登录项。其语法:其语法:sp_

28、revokelogin loginame= login10-2 10-2 本例删除本例删除 Windows Windows 用户用户 CorporateBobJCorporateBobJ 的登录项。的登录项。EXEC sp_revokelogin CorporateBobJ 或 EXEC sp_revokelogin CorporateBobJ改用改用DROP LOGINDROP LOGIN首选实现方法命令为:首选实现方法命令为:drop login CorporateBobJ10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户3

29、3SQL Server 2005返回本节首页2 2、管理、管理SQL ServerSQL Server登录帐户登录帐户管理管理SQL ServerSQL Server登录帐户的相关系统存储过程和命登录帐户的相关系统存储过程和命令有:令有:nsp_addlogin = CREATE LOGINnsp_droplogin、sp_revokelogin = DROP LOGIN10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户34SQL Server 2005返回本节首页1 1)sp_addloginsp_addlogin:创建新的:

30、创建新的 SQL Server SQL Server 登录,该登录,该登录允许用户使用登录允许用户使用 SQL Server SQL Server 身份验证连接到身份验证连接到 SQL SQL Server Server 实例。实例。其语法为:其语法为:sp_addlogin loginame=login,passwd =password,defdb=database,deflanguage=language,sid=sid,encryptopt=encryption_option10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐

31、户35SQL Server 2005返回本节首页 例例10-3 10-3 本例为用户本例为用户 Michael Michael 创建创建 SQL Server SQL Server 登录,密码登录,密码为为 B548bmM%f6B548bmM%f6,默认数据库为,默认数据库为AdventureWorksAdventureWorks,默认语言为,默认语言为us_englishus_english,SIDSID为为 0x0123456789ABCDEF0123456789ABCDEF0x0123456789ABCDEF0123456789ABCDEF。 EXEC sp_addlogin Micha

32、el, B548bmM%f6,AdventureWorks,us_english, 0x0123456789ABCDEF0123456789ABCDEF 改用改用CREATE LOGINCREATE LOGIN首选实现方法命令为:首选实现方法命令为: CREATE LOGIN Michael WITH PASSWORD=B548bmM%f6,DEFAULT_DATABASE=AdventureWorks,SID=0x0123456789ABCDEF0123456789ABCDEF,DEFAULT_LANGUAGE=us_english10.3.3 10.3.3 用用T-SQLT-SQL管理管理

33、SQL ServerSQL Server登录帐户登录帐户36SQL Server 2005返回本节首页2 2)sp_droploginsp_droplogin:删除:删除 SQL Server SQL Server 登录,禁止以登录,禁止以该登录名访问该登录名访问 SQL Server SQL Server 实例。实例。其语法:其语法:sp_droplogin loginame=login例例10-4 10-4 本例从本例从SQL ServerSQL Server实例中删除实例中删除MichaelMichael登录:登录:sp_droplogin Michael;改用改用DROP LOGIND

34、ROP LOGIN首选实现方法命令为:首选实现方法命令为:drop login Michael10.3.3 10.3.3 用用T-SQLT-SQL管理管理SQL ServerSQL Server登录帐户登录帐户37SQL Server 2005返回本节首页管理登录的最新管理登录的最新T-SQLT-SQL命令为:命令为:CREATE LOGINCREATE LOGIN、ALTER ALTER LOGINLOGIN、DROP LOGINDROP LOGIN。1 1、CREATE LOGINCREATE LOGIN创建新的SQL Server登录名。语法为:语法为:CREATE LOGIN logi

35、n_name WITH | FROM :=WINDOWS WITH ,.|CERTIFICATE certname|ASYMMETRIC KEY asym_key_name10.3.4 10.3.4 管理登录的最新管理登录的最新T-SQLT-SQL命令命令38SQL Server 2005返回本节首页例例10-5 10-5 创建映射到凭据的登录名创建映射到凭据的登录名: : 将创建将创建RLaszloRLaszlo登录名。此登录名将映射登录名。此登录名将映射到到 LaszloRLaszloR凭据。凭据。CREATE LOGIN RLaszlo WITH PASSWORD= 978(*Mmz0K

36、Wnkdo26985,CREDENTIAL=LaszloR例例10-6 10-6 从证书创建登录名从证书创建登录名: : 将从将从 master master 中的证书创建中的证书创建 FOgisuFOgisu 登录名。登录名。USE MASTER; CREATE CERTIFICATE FOgisuCert09 WITH SUBJECT = FOgisu certificate in master database, EXPIRY_DATE = 02/02/2009; GOCREATE LOGIN FOgisu FROM CERTIFICATE FOgisuCert09;例例10-7 10-

37、7 从从WindowsWindows域帐户创建登录名域帐户创建登录名: : 将从将从WindowsWindows域帐户创建域帐户创建 ADVWORKSfogisuADVWORKSfogisu 登录名。登录名。CREATE LOGIN ADVWORKSfogisu FROM WINDOWS10.3.4 10.3.4 管理登录的最新管理登录的最新T-SQLT-SQL命令命令39SQL Server 2005返回本节首页2 2、ALTER LOGINALTER LOGIN更改SQL Server登录帐户的属性。语法:语法:ALTER LOGIN login_name | WITH ,. 10.3.4

38、 10.3.4 管理登录的最新管理登录的最新T-SQLT-SQL命令命令40SQL Server 2005返回本节首页例例10-8 10-8 启用已禁用的登录,本例将启用启用已禁用的登录,本例将启用 KittiLertKittiLert 登录:登录:ALTER LOGIN KittiLert ENABLE;例例10-9 10-9 更改登录密码,本例将更改登录密码,本例将 KittiLertKittiLert 登录密码更改为登录密码更改为 3948wJ698FFF73948wJ698FFF7。ALTER LOGIN KittiLert WITH PASSWORD=3948wJ698FFF7;例例

39、10-10 10-10 更改登录名称,本例将更改登录名称,本例将KittiLertKittiLert 登录名称更改为登录名称更改为 MacraeSMacraeS。ALTER LOGIN KittiLert WITH NAME=MacraeS;例例10-11 10-11 将登录名映射到凭据,本例将登录名将登录名映射到凭据,本例将登录名MacraeSMacraeS映射到凭据映射到凭据Custodian04Custodian04。ALTER LOGIN MacraeS WITH CREDENTIAL=Custodian04;10.3.4 10.3.4 管理登录的最新管理登录的最新T-SQLT-SQL

40、命令命令41SQL Server 2005返回本节首页3. 3. 删除删除 SQL Server SQL Server 登录帐户。登录帐户。语法:语法:DROP LOGIN login_name,参数:参数:login_name 指定要删除的登录名。例例10-12 10-12 将删除登录名将删除登录名WilliJoWilliJo,命令为:,命令为:DROP LOGIN WilliJo10.3.4 10.3.4 管理登录的最新管理登录的最新T-SQLT-SQL命令命令42SQL Server 200510.4 10.4 用户管理用户管理 返回本节首页10.4.1 登录名与数据库用户名的关系10.

41、4.2 使用Management Studio管理数据库用户10.4.3 用T-SQL管理数据库用户10.4.4 改变数据库所有权43SQL Server 200510.4 10.4 用户管理用户管理 返回本节首页n用户是基于数据库的名称,是和登录帐户用户是基于数据库的名称,是和登录帐户相关联的。相关联的。n可以使用Management Studio和系统存储过程sp_grantdbaccess向数据库添加用户。n只有数据库所有者及数据库管理员才有执只有数据库所有者及数据库管理员才有执行系统存储过程行系统存储过程sp_grantdbaccesssp_grantdbaccess的权力的权力44S

42、QL Server 2005返回本节首页n登录名是访问登录名是访问SQL ServerSQL Server的通行证。的通行证。每个登录名的定义存放在master数据库的表syslogins(登录名是服务器级的)中。登录名本身并不能让用户访问服务器中的数据库资源。要访问具体数据库中的资源,还必须有该数据库的用户名。新的登录创建以后,才能创建数据库用户。n数据库用户用于数据库权限的控制。数据库用户用于数据库权限的控制。定义信息存放在与其相关的数据库的sysusers表(用户名是数据库级的)中的,这个表包含了该数据库的所有用户对象以及和它们相对应的登录名的标识。数据库用户在特定的数据库内创建,必须和

43、某个登录名相关联。用户名没有密码和它相关联。大多数情况下,用户名和登录名使用相同的名称。10.4.1 10.4.1 登录名与数据库用户名的关系登录名与数据库用户名的关系45SQL Server 2005返回本节首页n用户用一个登录名登录用户用一个登录名登录SQL ServerSQL Server,以数据库用户的身份访问,以数据库用户的身份访问服务器上的数据库。服务器上的数据库。登录帐户试图访问数据库时查找登录帐户试图访问数据库时查找sysuserssysusers中对应的用户名,或者是中对应的用户名,或者是GuestGuest用户,找不到将失败。用户,找不到将失败。一个登录帐户可以与服务器上的

44、所有数据库进行关联,而数据库用户是一个登录帐户可以与服务器上的所有数据库进行关联,而数据库用户是一个登录帐户在某数据库中的映射。一个登录帐户在某数据库中的映射。一个登录帐户可以映射到不同的数据库,产生多个数据库用户;但一个登录帐户在一个数据库至多只能映射一个数据库用户一个数据库用户只能映射到一个登录帐户。n允许数据库为每个用户对象分配不同的权限,这一特性为在组允许数据库为每个用户对象分配不同的权限,这一特性为在组内分配权限提供了最大的自由度与可控性。内分配权限提供了最大的自由度与可控性。10.4.1 10.4.1 登录名与数据库用户名的关系登录名与数据库用户名的关系46SQL Server 2

45、005返回本节首页n管理数据库用户包括对数据库用户的创建、查看、修改、删管理数据库用户包括对数据库用户的创建、查看、修改、删除等管理操作。除等管理操作。n创建数据库用户的两种方法:创建数据库用户的两种方法:(1)在创建登录帐户的同时指定该登录帐户允许访问的数据库,同时生成该登录帐户在数据库中的用户;(2)先创建登录帐户,再将登录帐户映射到某数据库,在其中创建同名用户名。10.4.2 10.4.2 使用使用Management StudioManagement Studio管理数据库用户管理数据库用户47SQL Server 2005返回本节首页1 1、在、在Management StudioM

46、anagement Studio中创建数据库用户中创建数据库用户1)启动Management Studio,分别展开“服务器”、“数据库”、“sales”、“安全性”、“用户”,在“用户”文件夹下能看到该数据库的已有用户;2)右击“用户”文件夹,选择“新建数据库用户”,弹出出“数据库用户-新建”对话框;3)输入要创建的数据库用户的名字,然后在“登录名”对应的文本框中输入相对应的登录名,或点击“浏览”按钮,在系统中选择相应的登录名;4)按“确定”按钮,将新创建的数据库用户添加到数据库中。10.4.2 10.4.2 使用使用Management StudioManagement Studio管理数

47、据库用户管理数据库用户48SQL Server 200510.4.2 10.4.2 使用使用Management StudioManagement Studio管理数据库用户管理数据库用户49SQL Server 2005返回本节首页 2 2、在、在Management StudioManagement Studio中查看、修改或删除数据中查看、修改或删除数据库用户库用户1)启动Management Studio,分别展开“服务器”、“数据库”、“sales”、“安全性”、“用户”,在“用户”文件夹下能看到该数据库的已有用户;2)右击某要操作的用户,在系统弹出的快捷菜单中含有“属性”、“删除”

48、等菜单项;3)若按“属性”菜单项,可以查看或修改用户的权限信息,如“常规”中的“拥有架构”、“角色成员”;“安全对象”中的具体权限设置及“扩展属性”等;4)若按“删除”菜单项,可从数据库中删除该用户。10.4.2 10.4.2 使用使用ManagementStudioManagementStudio管理数据库用户管理数据库用户50SQL Server 2005返回本节首页 利用利用T-SQLT-SQL命令对数据库用户同样有创建、查看、命令对数据库用户同样有创建、查看、修改、删除等操作方法。修改、删除等操作方法。主要使用到的主要使用到的T-SQLT-SQL命令有命令有nCREATE USER、n

49、ALTER USER、nDROP USER等。10.4.3 10.4.3 用用T-SQLT-SQL管理数据库用户管理数据库用户51SQL Server 2005返回本节首页1 1、用、用CREATE USERCREATE USER语句创建数据库用户语句创建数据库用户CREATE USER user_name FOR | FROM LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name | WITHOUT LOGIN WITH DEFAULT_SCHEMA = schema_name 注意:注意:n不能使用

50、CREATE USER 创建 guest 用户,因为每个数据库中均已存在 guest 用户。n可通过授予 guest 用户 CONNECT 权限来启用该用户:GRANT CONNECT TO GUESTn可以在sys.database_principals目录视图中查看有关数据库用户的信息。10.4.3 10.4.3 用用T-SQLT-SQL管理数据库用户管理数据库用户52SQL Server 2005返回本节首页例例10-13 10-13 创建数据库用户:创建名为创建数据库用户:创建名为 AbolrousHazemAbolrousHazem 且具有密码的服务器登录名,然后在且具有密码的服务器

51、登录名,然后在 AdventureWorksAdventureWorks 中创建对应的数据库用户中创建对应的数据库用户AbolrousHazemAbolrousHazem。CREATE LOGIN AbolrousHazem WITH PASSWORD = 340$Uuxwp7Mcxo7Khy; USE AdventureWorks; CREATE USER AbolrousHazem10.4.3 10.4.3 用用T-SQLT-SQL管理数据库用户管理数据库用户53SQL Server 2005返回本节首页2 2、用、用ALTER USERALTER USER语句创建数据库用户语句创建数据库

52、用户ALTER USER user_name WITH ,.n := NAME = new_user_name | DEFAULT_SCHEMA = schema_name 例例10-16 10-16 更改数据库用户的名称,本例将数据库用户更改数据库用户的名称,本例将数据库用户AbolrousHazemAbolrousHazem的名称更改为的名称更改为 AbolrousAbolrous。 ALTER USER AbolrousHazem WITH NAME=Abolrous 例例10-17 10-17 更改用户的默认架构,本例将用户更改用户的默认架构,本例将用户AbolrousAbolrous

53、的默认的默认架构更改为架构更改为PurchasingPurchasing。 ALTER USER Abolrous WITH DEFAULT_SCHEMA=Purchasing;10.4.3 10.4.3 用用T-SQLT-SQL管理数据库用户管理数据库用户54SQL Server 2005返回本节首页3 3、数据库中删除数据库用户。、数据库中删除数据库用户。sp_revokedbaccess name_in_db=name 例例10-18 10-18 本例从当前数据库中删除映射到本例从当前数据库中删除映射到EdmondsLolanSoEdmondsLolanSo的数据库用户。的数据库用户。

54、EXEC sp_revokedbaccess EdmondsLolanSo;但请避免在新的开发工作中使用sp_revokedbaccessp_revokedbaccess 命令,因为后续版本中将不再支持它了,请改用DROP USERDROP USER。10.4.3 10.4.3 用用T-SQLT-SQL管理数据库用户管理数据库用户55SQL Server 2005返回本节首页n在在SQL Server 2005SQL Server 2005中,可以更改当前数据库的所有者。中,可以更改当前数据库的所有者。任何可以访问到SQL Server 的连接的用户(SQL Server登录帐户或Window

55、s用户)都可成为数据库的所有者。无法更改系统数据库的所有权。sp_changedbowner loginame=login,map=remap_alias_flag 10.4.4 10.4.4 改变数据库所有权改变数据库所有权56SQL Server 2005返回本节首页例例10-19 10-19 本例将登录名本例将登录名U1U1作为当前数据库的所有者,并映射到作为当前数据库的所有者,并映射到已分配给旧的数据库所有者的已分配给旧的数据库所有者的 U1U1现有别名。现有别名。 EXEC sp_changedbowner U1; - 当前数据库的所有者改为U1 go sp_helpuser; -

56、查看数据库用户及所有者情况 EXEC sp_changedbowner sa -当前数据库的所有者改还为sa(设原为sa)10.4.4 10.4.4 改变数据库所有权改变数据库所有权57SQL Server 200510.5 10.5 角色管理角色管理 返回本节首页10.5.1 public角色10.5.2 固定服务器角色10.5.3 数据库角色10.5.4 用户定义的角色10.5.5 应用程序角色58SQL Server 200510.5 10.5 角色管理角色管理 返回本节首页nSQL Server 2005数据库管理系统利用角色设置,管理用户的权限,大大减少了管理员的工作量。n角色的使用

57、与Windows组的使用很相似。n通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予、拒绝或吊销权限时,将对其中的所有成员生效。n角色可以嵌套。嵌套的深度没有限制,但不允许循环嵌套。n数据库用户可以同时是多个角色的成员。59SQL Server 2005返回本节首页npublic角色在每个数据库(包括系统数据库master、msdb、tempdb和model)中都存在,它也是数据库角色成员。nPublic角色供提供数据库中用户的默认权限,不能删除。其功能相当于Windows环境中的Everyone组。n每个数据库用户都自动是此角色的成员,因此,无法在此角色中添加或删除用户

58、。n当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象在public角色中对应的权限。10.5.1 public10.5.1 public角色角色60SQL Server 2005返回本节首页 固定服务器角色的作用域在服务器范围内。它们存在于数据库之外,固定服务器角色的每个成员都能够向该角色中添加其它登录。 打开Management Studio,用鼠标单击“对象资源管理器”窗口中某数据库引擎的“安全性”目录下的“服务器角色”,显示当前数据库服务器的所有服务器角色,共有8个,具体名称及角色描述如下: 1)Bulkadmin:固定服务器角色的成员可以运行 BULK I

59、NSERT 语句。 2)Dbcreator:固定服务器角色的成员可以创建、更改、删除和还原任何数据库。 3)diskadmin:固定服务器角色用于管理磁盘文件。 4)Processadmin:固定服务器角色的成员可以终止 SQL Server 实例中运行的进程。 5)securityadmin:固定服务器角色的成员将管理登录名及其属性。它们可以GRANT、DENY和REVOKE服务器级权限。也可以GRANT、DENY和REVOKE 数据库级权限。另外,它们可以重置SQL Server登录名的密码。 6)serveradmin:固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。 7)

60、setupadmin:固定服务器角色的成员可以添加和删除链接服务器,并且也可以执行某些系统存储过程。 8)Sysadmin:固定服务器角色的成员可以在服务器中执行任何活动。默认情况下,Windows BUILTINAdministrators组(本地管理员组)的所有成员都是sysadmin固定服务器角色的成员。10.5.2 10.5.2 固定服务器角色固定服务器角色61SQL Server 2005返回本节首页 1 1、固定服务器角色的权限、固定服务器角色的权限n固定服务器角色可以映射到SQL Server 2005包括的更为具体的权限。下表说明了固定服务器角色与权限的映射。固定服务器角色服务

61、器级权限bulkadmin已授予:ADMINISTER BULK OPERATIONSDbcreator已授予:CREATE DATABASEDiskadmin已授予:ALTER RESOURCESProcessadmin已授予:ALTER ANY CONNECTION、ALTER SERVER STATESecurityadmin已授予:ALTER ANY LOGINServeradmin已授予:ALTER ANY ENDPOINT、ALTER RESOURCES、ALTER SERVER STATE、ALTER SETTINGS、SHUTDOWN、VIEW SERVER STATESetu

62、padmin已授予:ALTER ANY LINKED SERVERSysadminSysadmin已使用 GRANT 选项授予:CONTROL SERVER10.5.2 10.5.2 固定服务器角色固定服务器角色62SQL Server 2005返回本节首页 (1 1)在)在Management StudioManagement Studio中添加或删除固定服务器角色成员中添加或删除固定服务器角色成员 方法一:打开Management Studio,用鼠标单击“对象资源管理器”窗口某数据库引擎“安全性”“服务器角色”。 方法二:打开Management Studio,用鼠标单击“对象资源管理器

63、”窗口某数据库引擎“安全性”“登录名”;在某登录名上右击,按“属性”菜单,出现“登录属性”对话框或按“新建登录名”出现“登录-新建”对话框;点击“服务器角色”选项卡。10.5.2 固定服务器角色固定服务器角色63SQL Server 200510.5.2 固定服务器角色固定服务器角色64SQL Server 2005返回本节首页(2 2)利用)利用T-SQLT-SQL添加或删除固定服务器角色成员添加或删除固定服务器角色成员固定服务器角色成员添加或删除,主要使用到的系统存储过程有:nsp_addsrvrolemember、nsp_dropsrvrolemember、nsp_helpsrvrole

64、、nsp_helpsrvrolemember10.5.2 10.5.2 固定服务器角色固定服务器角色65SQL Server 2005返回本节首页1 1)sp_addsrvrolemembersp_addsrvrolemember 用于添加登录,使其成为固定服务器角色的成员。用于添加登录,使其成为固定服务器角色的成员。sp_addsrvrolemember loginame= login,rolename= role备注:role 可以是下列任意值:sysadmin、securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcr

65、eator、bulkadmin例例10-20 10-20 本示例将本示例将WindowsWindows登录名登录名CorporateHelenSCorporateHelenS添加到添加到sysadminsysadmin固定固定服务器角色中:服务器角色中:EXEC sp_addsrvrolemember CorporateHelenS,sysadmin;10.5.2 10.5.2 固定服务器角色固定服务器角色66SQL Server 2005返回本节首页2 2)sp_dropsrvrolemembersp_dropsrvrolemember 用于从固定服务器角色中删除用于从固定服务器角色中删除S

66、QL SQL ServerServer登录或登录或WindowsWindows用户或组。用户或组。语法:语法:sp_dropsrvrolemember loginame=login,rolename=role例例10-21 10-21 本示例从本示例从 sysadminsysadmin 固定服务器角色中删除登录固定服务器角色中删除登录CorporateHelenSCorporateHelenS。EXEC sp_dropsrvrolemember CorporateHelenS,sysadmin10.5.2 10.5.2 固定服务器角色固定服务器角色67SQL Server 2005返回本节首页

67、3 3)sp_helpsrvrolesp_helpsrvrole 用于返回用于返回 SQL Server SQL Server 固定服务器角固定服务器角色的列表。色的列表。语法:语法:sp_helpsrvrole srvrolename = role 以下查询返回可用固定服务器角色列表:以下查询返回可用固定服务器角色列表:EXEC sp_helpsrvrole10.5.2 10.5.2 固定服务器角色固定服务器角色68SQL Server 2005返回本节首页4 4)sp_helpsrvrolemembersp_helpsrvrolemember 用于用于返回有关 SQL Server 固定服

68、务器角色成员的信息。语法:语法:sp_helpsrvrolemember srvrolename = role 例例10-22 10-22 本示例将列出本示例将列出 sysadminsysadmin 固定服务器角色的成员。固定服务器角色的成员。EXEC sp_helpsrvrolemember sysadmin10.5.2 10.5.2 固定服务器角色固定服务器角色69SQL Server 2005返回本节首页 固定数据库角色在数据库级别定义以及每个数据库中都存在。固定数据库角色在数据库级别定义以及每个数据库中都存在。db_ownerdb_owner和和db_securitydb_securi

69、ty管理员角色的成员可以管理固定数据库角管理员角色的成员可以管理固定数据库角色的成员身份。色的成员身份。1)db_accessadmin:可以为 Windows 登录帐户、Windows 组和 SQL Server 登录帐户添加或删除访问权限;2)db_backupoperator:可以备份该数据库;3)db_datareader:可以读取所有用户表中的所有数据;4)db_datawriter:可以在所有用户表中添加、删除或更改数据;5)db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令;6)db_denydatareader:不能读取数据库内用户表中的任何数据;7)db

70、_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据;8)db_owner:可以执行数据库的所有配置和维护活动;9)db_securityadmin:可以修改角色成员身份和管理权限。10.5.3 10.5.3 数据库角色数据库角色70SQL Server 2005返回本节首页通过用户定义的角色可以轻松地管理数据库中的权通过用户定义的角色可以轻松地管理数据库中的权限,用户定义的角色只适用于数据库级别,并且只限,用户定义的角色只适用于数据库级别,并且只对创建时所在的数据库起作用。对创建时所在的数据库起作用。 1 1、数据库角色创建、修改与删除、数据库角色创建、修改与删除

71、数据库角色的创建、修改与删除操作可以通过Management Studio或T-SQL两种方法来操作: (1)在Management Studio中创建、修改或删除数据库角色10.5.4 10.5.4 用户定义的角色用户定义的角色71SQL Server 200510.5.4 10.5.4 用户定义的角色用户定义的角色72SQL Server 2005返回本节首页(2 2)利用)利用T-SQLT-SQL创建、修改或删除数据库角色创建、修改或删除数据库角色数据库角色的创建、修改或删除,主要使用到的T-SQL命令有:nCREATE ROLE、sp_addrole、nALTER ROLE、nDROP

72、 ROLE、sp_droprole、nsp_helprole10.5.4 10.5.4 用户定义的角色用户定义的角色73SQL Server 2005返回本节首页1 1)CREATE ROLE CREATE ROLE 在当前数据库中创建新数据库角色。在当前数据库中创建新数据库角色。CREATE ROLE role_name AUTHORIZATION owner_name例例10-23 10-23 本示例将创建用户本示例将创建用户BenMillerBenMiller拥有的数据库拥有的数据库角色角色 buyersbuyers。USE AdventureWorks; CREATE ROLE buy

73、ers AUTHORIZATION BenMiller10.5.4 10.5.4 用户定义的角色用户定义的角色74SQL Server 2005返回本节首页2 2)sp_addrolesp_addrole 在当前数据库中创建新的数据库角色。在当前数据库中创建新的数据库角色。sp_addrole rolename = role , ownername = owner例例10-24 10-24 本示例向当前数据库中添加名为本示例向当前数据库中添加名为 Managers Managers 的新角色。的新角色。EXEC sp_addrole Managers - 尽量改用CREATE ROLE。10.

74、5.4 10.5.4 用户定义的角色用户定义的角色75SQL Server 2005返回本节首页3 3)ALTER ROLE ALTER ROLE 更改数据库角色的名称。更改数据库角色的名称。ALTER ROLE role_name WITH NAME = new_name例例10-25 10-25 本示例将角色本示例将角色buyersbuyers的名称更改为的名称更改为 purchasingpurchasing。USE AdventureWorks; ALTER ROLE buyers WITH NAME = purchasing10.5.4 10.5.4 用户定义的角色用户定义的角色76S

75、QL Server 2005返回本节首页4 4)DROP ROLE DROP ROLE 从数据库删除角色。从数据库删除角色。DROP ROLE role_name例例10-26 10-26 本示例从本示例从AdventureWorksAdventureWorks删除数据库角色删除数据库角色purchasingpurchasing。USE AdventureWorks; DROP ROLE purchasing10.5.4 10.5.4 用户定义的角色用户定义的角色77SQL Server 2005返回本节首页5 5)sp_droprolesp_droprole 从当前数据库中删除数据库角色。从

76、当前数据库中删除数据库角色。语法:sp_droprole rolename=role例例10-27 10-27 本示例删除应用程序角色本示例删除应用程序角色SalesSales。EXEC sp_droprole Sales - 尽量改用DROP ROLE。10.5.4 10.5.4 用户定义的角色用户定义的角色78SQL Server 2005返回本节首页6 6)sp_helprolesp_helprole 返回当前数据库中有关角色的信息。返回当前数据库中有关角色的信息。语法:sp_helprole rolename=role例例10-28 10-28 本查询将返回当前数据库中的所有角色。本查

77、询将返回当前数据库中的所有角色。EXEC sp_helprole10.5.4 10.5.4 用户定义的角色用户定义的角色79SQL Server 2005返回本节首页2 2、数据库角色成员的添加与删除、数据库角色成员的添加与删除数据库角色成员的添加与删除操作可以通过Management Studio或T-SQL两种方法来操作:(1 1)在)在Management StudioManagement Studio中添加与删除数据库角色成员中添加与删除数据库角色成员方法一:在上面提到过的某数据库角色的“数据库角色属性”对话框中,“常规”选项卡上,右下角色成员操作区,按“添加”或“删除”按钮实现操作。

78、方法二:通过“对象资源管理器”窗口某数据库引擎“数据库”“某具体数据库”“安全性”“用户”“某具体用户”;按鼠标右击,按“属性”菜单,出现“数据库用户”对话框,在右下角色成员操作区,通过多选按钮直接实现该用户从某个或某些数据库角色中添加或删除的操作功能。10.5.4 10.5.4 用户定义的角色用户定义的角色80SQL Server 200510.5.4 10.5.4 用户定义的角色用户定义的角色81SQL Server 2005返回本节首页(2 2)利用)利用T-SQLT-SQL添加与删除数据库角色成员添加与删除数据库角色成员数据库角色成员添加与删除,主要使用到的T-SQL命令有:nsp_a

79、ddrolemember、nsp_droprolemember、nsp_helprolemember10.5.4 10.5.4 用户定义的角色用户定义的角色82SQL Server 2005返回本节首页1 1)sp_addrolemembersp_addrolemember 为当前数据库中的数据库角色添加数据库用户、数据为当前数据库中的数据库角色添加数据库用户、数据库角色、库角色、Windows Windows 登录或登录或WindowsWindows组等。组等。sp_addrolemember rolename=role,membername=security_account例例10-29

80、10-29 本示例将本示例将WindowsWindows登录登录SammamishSandeepKSammamishSandeepK作为作为SandeepSandeep用户添加到用户添加到 AdventureWorksAdventureWorks 数据库。然后将数据库。然后将SandeepSandeep 添加到添加到Production Production 角色。角色。USE AdventureWorksEXEC sp_grantdbaccess SammamishSandeepK, SandeepGOEXEC sp_addrolemember Production, Sandeep10.5

81、.4 10.5.4 用户定义的角色用户定义的角色83SQL Server 2005返回本节首页2 2)sp_droprolemembersp_droprolemember 从当前数据库的从当前数据库的 SQL Server SQL Server 角色中角色中删除安全帐户。删除安全帐户。sp_droprolemember rolename=role,membername=security_account例例10-30 10-30 本示例将删除角色本示例将删除角色SalesSales中的用户中的用户JonBJonB。EXEC sp_droprolemember Sales,Jonb10.5.4 1

82、0.5.4 用户定义的角色用户定义的角色84SQL Server 2005返回本节首页3 3)sp_helprolemembersp_helprolemember 返回有关当前数据库中某个角色的返回有关当前数据库中某个角色的成员的信息。成员的信息。sp_helprolemember rolename =role例例10-31 10-31 本示例显示本示例显示SalesSales角色的成员:角色的成员:EXEC sp_helprolemember Sales10.5.4 10.5.4 用户定义的角色用户定义的角色85SQL Server 2005返回本节首页n应用程序角色是一个数据库主体,它使应

83、用程序能够用其自身的、类似用户的特权来运行。n使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。n与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的,使用时需要激活。n应用程序角色可以使用两种身份验证模式。应用程序角色可使用 sp_setapprole 激活,但此过程需要应用程序角色名和密码。n因为应用程序角色是数据库级主体,所以它们只能通过其它数据库中为 guest 授予的权限来访问这些数据库。n因此,其它数据库中的应用程序角色将无法访问任何已禁用guest的数据库。 10.5.5 10.5.5 应用程序角色应用程序角色86SQL Server 20

84、05返回本节首页应用程序角色切换安全上下文的过程包括下列步骤:应用程序角色切换安全上下文的过程包括下列步骤:1)创建应用程序角色;2)对该应用程序角色分配权限;3)用户执行客户端应用程序;4)客户端应用程序作为用户连接到 SQL Server;5)然后应用程序用一个只有它才知道的密码执行 sp_setapprole 存储过程;6)如果应用程序角色名称和密码都有效,将激活应用程序角色。此时,连接将失去用户权限,而获得应用程序角色权限。通过应用程序角色获得的权限在连接期间始终有效。10.5.5 10.5.5 应用程序角色应用程序角色87SQL Server 2005返回本节首页 1 1、应用程序角

85、色创建与删除、应用程序角色创建与删除(1)在Management Studio中创建与删除应用程序角色(2)利用T-SQL创建、修改与删除应用程序角色 创建、修改与删除应用程序角色,主要使用到的T-SQL命令有:nCREATE APPLICATION ROLE nALTER APPLICATION ROLE、nDROP APPLICATION ROLE、nsp_setapprole与sp_unsetapprole10.5.5 10.5.5 应用程序角色应用程序角色88SQL Server 2005返回本节首页1 1)CREATE APPLICATION ROLE CREATE APPLICAT

86、ION ROLE 向当前数据库中添加应用程序角色。CREATE APPLICATION ROLE application_role_name WITH PASSWORD = password , DEFAULT_SCHEMA= schema_name 可以在sys.database_principals目录视图中查看应用程序角色。例例10-32 10-32 本示例创建名为本示例创建名为weekly_receiptsweekly_receipts的应用程序角色,该角色使用的应用程序角色,该角色使用密码密码 987Gbv876sPYY5m23987Gbv876sPYY5m23和和SalesSale

87、s作为其默认架构。作为其默认架构。CREATE APPLICATION ROLE weekly_receipts WITH PASSWORD=987Gbv876sPYY5m23,DEFAULT_SCHEMA=Sales10.5.5 10.5.5 应用程序角色应用程序角色89SQL Server 2005返回本节首页2 2)ALTER APPLICATION ROLE ALTER APPLICATION ROLE 更改应用程序角色的名称、密码或默认架构。更改应用程序角色的名称、密码或默认架构。ALTER APPLICATION ROLE application_role_name WITH ,.

88、n := NAME = new_application_role_name|PASSWORD=password| DEFAULT_SCHEMA = schema_name重要事项:密码过期策略不应用于应用程序角色密码。为此,选择强密码时要格外谨慎。调用应用程序角色的应用程序必须存储其密码。例例10-33 10-33 本示例将同时更改应用程序角色本示例将同时更改应用程序角色receipts_ledgerreceipts_ledger的名称、密码和默的名称、密码和默认架构。认架构。ALTER APPLICATION ROLE receipts_ledger WITH NAME = weekly_l

89、edger, PASSWORD = 897yUUbv77bsrEE00nk2i, DEFAULT_SCHEMA = Production10.5.5 10.5.5 应用程序角色应用程序角色90SQL Server 2005返回本节首页3 3)DROP APPLICATION ROLE DROP APPLICATION ROLE 从当前数据库删除应用程序角色。从当前数据库删除应用程序角色。DROP APPLICATION ROLE rolename例例10-34 10-34 本示例从数据库中删除应用程序角色本示例从数据库中删除应用程序角色“weekly_ledgerweekly_ledger”D

90、ROP APPLICATION ROLE weekly_ledger10.5.5 10.5.5 应用程序角色应用程序角色91SQL Server 2005返回本节首页4 4)sp_setapprolesp_setapprole与与sp_unsetapprolesp_unsetapprolesp_setapprole 激活与当前数据库中的应用程序角色关联的权限。语法:sp_setapprole rolename = role, password = encrypt Npassword |password ,encrypt= none|odbc ,fCreateCookie = true|fals

91、e ,cookie=cookie OUTPUTsp_unsetapprole 恢复应用程序角色激活前的上下文语法:sp_unsetapprole cookie10.5.5 10.5.5 应用程序角色应用程序角色92SQL Server 2005返回本节首页例例10-35 10-35 本例使用密码本例使用密码 fdsd896#gfdbfdkjgh700mM fdsd896#gfdbfdkjgh700mM 激活激活Sales11Sales11应用程序应用程序角色并创建一个角色并创建一个cookiecookie。该示例返回当前用户的名称,然后通过执行。该示例返回当前用户的名称,然后通过执行sp_un

92、setapprolesp_unsetapprole恢复到原始上下文中。恢复到原始上下文中。DECLARE cookie varbinary(8000); EXEC sp_setapprole Sales11, fdsd896#gfdbfdkjgh700mM, fCreateCookie=true, cookie=cookie OUTPUT; -应用程序角色现在已被激活SELECT USER_NAME(); -这将返回应用程序角色,Sales11EXEC sp_unsetapprole cookie; -应用程序角色不再激活,恢复到原始上下文GOSELECT USER_NAME(); -将返回原

93、始用户名10.5.5 10.5.5 应用程序角色应用程序角色93SQL Server 200510.6 10.6 权限管理权限管理 返回本节首页10.6.1 权限类型10.6.2 管理权限94SQL Server 200510.6 10.6 权限管理权限管理 返回本节首页1 1、主体、主体n主体是可以请求 SQL Server 资源的个体、组和过程。n与 SQL Server 授权模型的其它组件一样,主体也可以按层次结构排列。n主体的影响范围取决于主体定义的范围(Windows、服务器或数据库)以及主体是否不可分或是一个集合。例如,例如,Windows Windows 登录名就是一个不可分主体

94、,而登录名就是一个不可分主体,而 Windows Windows 组则是一个集组则是一个集合主体。每个主体都有一个唯一的安全标识符合主体。每个主体都有一个唯一的安全标识符 (SID)(SID)。主体分为:主体分为:1)Windows 级别的主体:Windows 域登录名、Windows 本地登录名;2)SQL Server 级别的主体:SQL Server 登录名;3)数据库级别的主体:数据库用户、数据库角色(包括public角色)、应用程序角色。95SQL Server 200510.6 10.6 权限管理权限管理 返回本节首页 2 2、安全对象、安全对象n安全对象是SQL Server D

95、atabase Engine授权系统控制对其进行访问的资源。通过创建可以为自己设置安全性的名为“范围”的嵌套层次结构,可以将某些安全对象包含在其它安全对象中。安全对象范围有服务器、数据库和架构三个层次。n安全对象范围服务器:包含端点、登录帐户、数据库等安全对象。n安全对象范围数据库:包含用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定、架构等安全对象。n安全对象范围架构:包含类型、XML架构集合、对象等安全对象。n对象,下面是对象类的成员:聚合、约束、函数、过程、队列、统计信息、同义词、表、视图。96SQL Server 2005

96、返回本节首页 每个 SQL Server 2005 安全对象都有可以授予主体的关联权限。 1 1、命名权限的说明、命名权限的说明n CONTROL:为被授权者授予类似所有权的功能。 被授权者实际上对安全对象具有所定义的所有权限。也可以为已被授予 CONTROL 权限的主体授予对安全对象的权限。因为 SQL Server 安全模型是分层的,所以 CONTROL 权限在特定范围内隐含着对该范围内的所有安全对象的 CONTROL 权限。例如,对数据库的 CONTROL 权限隐含着对数据库的所有权限、对数据库中所有组件的所有权限、对数据库中所有架构的所有权限以及对数据库的所有架构中的所有对象的权限。n

97、 ALTER:授予更改特定安全对象的属性(所有权除外)的权限。当授予对某个范围的 ALTER 权限时,也授予更改、创建或删除该范围内包含的任何安全对象的权限。例如,对架构的 ALTER 权限包括在该架构中创建、更改和删除对象的权限。10.6.1 10.6.1 权限类型权限类型97SQL Server 2005返回本节首页nALTER ANY ,服务器安全对象可以是任何服务器安全对象。授予创建、更改或删除服务器安全对象的各个实例的权限。例如,ALTER ANY LOGIN 将授予创建、更改或删除实例中的任何登录名的权限。nALTER ANY ,其中的数据库安全对象可以是数据库级别的任何安全对象。

98、授予创建、更改或删除数据库安全对象的各个实例的权限。例,ALTER ANY SCHEMA 将授予创建、更改或删除任何架构的权限。nTAKE OWNERSHIP:允许被授权者获取所授予的安全对象的所有权。nIMPERSONATE :允许被授权者模拟该登录名。nIMPERSONATE :允许被授权者模拟该用户。nCREATE :授予被授权者创建服务器安全对象的权限。nCREATE :授予被授权者创建数据库安全对象的权限。nCREATE :授予创建包含在架构中的安全对象的权限,须对该架构具有 ALTER 权限。nVIEW DEFINITION:允许被授权者访问元数据。10.6.1 10.6.1 权限

99、类型权限类型98SQL Server 2005返回本节首页下表列出了主要的权限类别以及可应用这些权限的安全对象的种类。表10-2 权限类别以及可应用这些权限的安全对象的种类权限适用于SELECT同义词、表和列、表值函数T-SQL和公共语言运行时(CLR)和列、视图和列UPDATE同义词、表和列 、视图和列REFERENCES标量函数和聚合函数(T-SQL和CLR)、SQL Server 2005 Service Broker 队列、表和列、表值函数(T-SQL和CLR)和列、视图和列INSERT同义词、表和列 、视图和列DELETE同义词、表和列 、视图和列EXECUTE过程(T-SQL和CL

100、R)、标量函数和聚合函数(T-SQL和CLR)、同义词RECEIVEService Broker 队列VIEW DEFINITION过程(T-SQL和CLR)、Service Broker 队列、标量函数和聚合函数(T-SQL和CLR)、同义词、表、表值函数(T-SQL和CLR)、视图ALTER过程(T-SQL和CLR)、标量函数和聚合函数(T-SQL和CLR)、Service Broker 队列、表、表值函数(T-SQL和CLR)、视图TAKE OWNERSHIP过程(T-SQL和CLR)、标量函数和聚合函数(T-SQL和CLR)、同义词、表、表值函数(T-SQL和CLR)、视图CONTRO

101、L过程(T-SQL和CLR)、标量函数和聚合函数(T-SQL和CLR)、Service Broker 队列、同义词、表、表值函数(T-SQL和CLR)、视图10.6.1 10.6.1 权限类型权限类型99SQL Server 2005返回本节首页 SQL ServerSQL Server提供了权限的完整列表(篇幅限制略)。下列示例说明如何提供了权限的完整列表(篇幅限制略)。下列示例说明如何通过编程方式检索权限信息。通过编程方式检索权限信息。 例10-36 本例返回可授予权限的完整列表 SELECT * FROM sys.fn_builtin_permissions(default) 2)返回对

102、某类对象的权限 例例10-37 10-37 本例将返回对组件的权限。本例将返回对组件的权限。 SELECT * FROM sys.fn_builtin_permissions(assembly)10.6.1 10.6.1 权限类型权限类型100SQL Server 2005返回本节首页2 2、权限层次结构、权限层次结构nSQL Server 2005 Database Engine管理着可以通过权限进行保护的实体(或称资源)的分层集合。这些实体称为“安全对象”。n在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。nSQL Server通过验证主体是否已获得适当的权限来控

103、制主体对安全对象执行的操作。n可以使用常见的T-SQL查询GRANT、DENY和REVOKE来操作权限。n有关权限的信息,可以从sys.server_permissions和sys.database_permissions 目录视图中看到。n也可以使用内置函数来查询权限信息。10.6.1 10.6.1 权限类型权限类型101SQL Server 2005返回本节首页nSQL Server 2005中的权限管理操作,可以通过在Management Studio中对用户的权限进行交互式设置(包括授权、撤销、禁止或拒绝等),n可以使用T-SQL提供的GRANT、REVOKE和DENY等语句来完成设置

104、功能。 1 1、在、在Management StudioManagement Studio中管理权限中管理权限选择主体:某个数据库用户或角色,进入属性选择客体体:某个数据库或某个表,进入属性10.6.2 10.6.2 管理权限管理权限102SQL Server 2005返回本节首页图图10-4 10-4 数据库用户属性对话框数据库用户属性对话框10.6.2 10.6.2 管理权限管理权限103SQL Server 2005返回本节首页2 2、在、在Management StudioManagement Studio中管理凭据中管理凭据n凭据是包含连接到 SQL Server 以外的资源时所需的

105、身份验证信息的记录。n大多数凭据由一个 Windows 登录名和密码组成。通过凭据,使用SQL Server身份验证连接到 SQL Server 实例的用户可以连接到 Windows或SQL Server 实例以外的其它资源。n这些凭据还可以与标记为EXTERNAL_ACCESS的程序集关联。n在创建凭据之后,可以使用“登录属性”(“常规”页)将该凭据映射到登录名。n单个凭据可映射到多个SQL Server登录名。但是,一个SQL Server登录名只能映射到一个凭据。10.6.2 10.6.2 管理权限管理权限104SQL Server 2005返回本节首页(1 1)创建凭据)创建凭据1)在

106、对象资源管理器中,展开“安全性”,右键单击“凭据”,然后单击“新建凭据”。2)在“新建凭据”对话框中的“凭据名称”框中,键入凭据的名称。3)在“标识”框中,键入用于对外连接的帐户名称(在离开 SQL Server 的上下文时)。通常为 Windows 用户帐户。但标识可以是其它类型的帐户。4)在“密码”和“确认密码”框中,键入“标识”框中指定的帐户的密码。如果“标识”为 Windows 用户帐户,则密码为 Windows 密码。如果不需要密码,“密码”可为空。 5)单击“确定”。10.6.2 10.6.2 管理权限管理权限105SQL Server 2005返回本节首页(2 2)将登录名映射到

107、凭据)将登录名映射到凭据1)在对象资源管理器中,展开“安全性”,右键单击 SQL Server 登录名,然后单击“属性”;2)在“登录属性”对话框的“常规”页的“凭据”框中,键入凭据的名称,然后单击“确定”。10.6.2 10.6.2 管理权限管理权限106SQL Server 2005返回本节首页3 3、用、用T-SQLT-SQL命令管理权限命令管理权限管理权限同样能通过T-SQL命令来完成,主要命令有GRANT、REVOKE、DENY、CREATE CREDENTIAL、ALTER CREDENTIAL、DROP CREDENTIAL等,下面作一简单介绍与使用举例。1 1)GRANT GR

108、ANT 将安全对象的权限授予主体。将安全对象的权限授予主体。GRANT 命令的简单语法:GRANT ALL PRIVILEGES | permission ( column ,.n ) ,.n ON class : securable TO principal ,.n WITH GRANT OPTION AS principal 10.6.2 10.6.2 管理权限管理权限107SQL Server 2005返回本节首页ALLALL:该选项并不授予全部可能的权限。授予:该选项并不授予全部可能的权限。授予 ALL ALL 参数相当于授予以下权参数相当于授予以下权限。限。如果安全对象为数据库,则“

109、ALL”表示 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE和CREATE VIEW;如果安全对象为标量函数,则“ALL”表示 EXECUTE和REFERENCES;如果安全对象为表值函数,则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT和UPDATE如果安全对象为存储过程,则“ALL”表示 DELETE、EXECUTE、INSERT、SELECT和UPDATE;如果安全对象为表,

110、则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT和UPDATE;如果安全对象为视图,则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT和UPDATE。10.6.2 10.6.2 管理权限管理权限108SQL Server 2005返回本节首页2 2)GRANT GRANT 对象权限对象权限 授予对表、视图、表值函数、存储过程、授予对表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列或同义词的权扩展存储过程、标量函数、聚合函数、服务队列或同义词的权限。限。GRANT ,.n ON OBJECT : schema_

111、name . object_name ( column ,.n ) TO ,.n WITH GRANT OPTION AS := ALL PRIVILEGES | permission ( column ,.n) := Database_user | Database_role | Application_role | Database_user_mapped_to_Windows_User | Database_user_mapped_to_Windows_Group | Database_user_mapped_to_certificate | Database_user_mapped_t

112、o_asymmetric_key | Database_user_with_no_login10.6.2 10.6.2 管理权限管理权限109SQL Server 2005返回本节首页例例10-38 10-38 授予对表的授予对表的 SELECT SELECT 权限,本例授予用户权限,本例授予用户 RosaQdMRosaQdM 对对 AdventureWorksAdventureWorks 数据库中表数据库中表 Person.AddressPerson.Address 的的 SELECT SELECT 权限。权限。 USE AdventureWorks; GRANT SELECT ON OBJ

113、ECT:Person.Address TO RosaQdM 例例10-39 10-39 授予对存储过程的授予对存储过程的 EXECUTE EXECUTE 权限,本例授予名为权限,本例授予名为 Recruiting11 Recruiting11 的应用程序角色对存储过程的应用程序角色对存储过程 HumanResources.uspUpdateEmployeeHireInfoHumanResources.uspUpdateEmployeeHireInfo 的的 EXECUTE EXECUTE 权限。权限。 USE AdventureWorks; GRANT EXECUTE ON OBJECT:Hu

114、manResources.uspUpdateEmployeeHireInfo TO Recruiting11 例例10-40 10-40 使用使用 GRANT OPTION GRANT OPTION 授予对视图的授予对视图的 REFERENCES REFERENCES 权限,本例使用权限,本例使用 GRANT OPTIONGRANT OPTION,授予用户,授予用户 WanidaWanida 对视图对视图 HumanResources.vEmployeeHumanResources.vEmployee 中列中列 EmployeeIDEmployeeID 的的 REFERENCES REFERE

115、NCES 权限。权限。 USE AdventureWorks; GRANT REFERENCES(EmployeeID) ON OBJECT:HumanResources.vEmployee TO Wanida WITH GRANT OPTION10.6.2 10.6.2 管理权限管理权限110SQL Server 2005返回本节首页3 3)REVOKE REVOKE 取消以前授予或拒绝了的权限。取消以前授予或拒绝了的权限。REVOKEREVOKE简单简单语法语法:REVOKE GRANT OPTION FOR ALL PRIVILEGES |permission (column,.n ),

116、.n ON class:securable TO|FROMprincipal ,.n CASCADE AS principalREVOKE REVOKE 对象权限:撤消对表、视图、表值函数、存储过程、对象权限:撤消对表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列或同义词的权扩展存储过程、标量函数、聚合函数、服务队列或同义词的权限。限。语法语法:REVOKE GRANT OPTION FOR ,.n ON OBJECT:schema_name.object_name (column,.n)FROM|TO ,.n CASCADE AS 10.6.2 10.6.2 管理权限

117、管理权限111SQL Server 2005返回本节首页例例10-41 10-41 撤消对表的撤消对表的 SELECT SELECT 权限,本例从用户权限,本例从用户RosaQdMRosaQdM中撤中撤消对消对AdventureWorksAdventureWorks数据库中表数据库中表Person.AddressPerson.Address的的SELECTSELECT权限。权限。USE AdventureWorks; REVOKE SELECT ON OBJECT:Person.Address FROM RosaQdM例例10-42 10-42 撤消对存储过程的撤消对存储过程的EXECUTEE

118、XECUTE权限,本例从名为权限,本例从名为Recruiting11Recruiting11的应用程序角色中撤消对存储过程的应用程序角色中撤消对存储过程HumanResources.uspUpdateEmployeeHireInfoHumanResources.uspUpdateEmployeeHireInfo的的EXECUTEEXECUTE权限。权限。REVOKE EXECUTE ON OBJECT:HumanResources.uspUpdateEmployeeHireInfo FROM Recruiting1110.6.2 10.6.2 管理权限管理权限112SQL Server 200

119、5返回本节首页4 4)DENY DENY 拒绝授予主体权限。防止主体通过其组或角色成员身份继承权限。拒绝授予主体权限。防止主体通过其组或角色成员身份继承权限。DENY DENY 的简单的简单语法语法: : DENY ALL PRIVILEGES |permission(column,.n),.n ON class : securable TO principal ,.n CASCADE AS principal DENY DENY 对象权限,拒绝对安全对象的对象权限,拒绝对安全对象的 OBJECT OBJECT 类成员授予的权限。类成员授予的权限。OBJECTOBJECT类类的成员包括:表、视

120、图、表值函数、存储过程、扩展存储过程、标量函数、的成员包括:表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列以及同义词。聚合函数、服务队列以及同义词。语法语法: :DENY ,.n ON OBJECT : schema_name . object_name ( column ,.n ) TO ,.n CASCADE AS := ALL PRIVILEGES | permission ( column ,.n ) 10.6.2 10.6.2 管理权限管理权限113SQL Server 2005返回本节首页例例10-44 10-44 拒绝对表的拒绝对表的SELECTSELE

121、CT权限,本例拒绝用户权限,本例拒绝用户RosaQdMRosaQdM对对AdventureWorksAdventureWorks数据库中表数据库中表Person.AddressPerson.Address的的SELECTSELECT权限。权限。USE AdventureWorks; DENY SELECT ON OBJECT:Person.Address TO RosaQdM例例10-45 10-45 拒绝对存储过程的拒绝对存储过程的EXECUTEEXECUTE权限,本例拒绝名为权限,本例拒绝名为Recruiting11Recruiting11的应用程序角色对存储过程的应用程序角色对存储过程H

122、umanResources.uspUpdateEmployeeHireInfoHumanResources.uspUpdateEmployeeHireInfo的的EXECUTEEXECUTE权限。权限。USE AdventureWorks; DENY EXECUTE ON OBJECT:HumanResources.uspUpdateEmployeeHireInfo TO Recruiting1110.6.2 10.6.2 管理权限管理权限114SQL Server 2005返回本节首页5 5)CREATE CREDENTIAL CREATE CREDENTIAL 创建凭据。语法:CREATE

123、 CREDENTIAL credential_name WITH IDENTITY=identity_name,SECRET=secret参数:credential_name指定要创建的凭据的名称。credential_name不能以数字符号 (#) 开头。系统凭据以#开头。IDENTITY=identity_name 指定在服务器以外进行连接时使用的帐户的名称。SECRET=secret 指定发送身份验证所需的机密内容。该子句为可选项。可以在sys.credentials目录视图中查看有关凭据的信息。10.6.2 10.6.2 管理权限管理权限115SQL Server 2005返回本节首页

124、例例10-50 10-50 本例创建名为本例创建名为AlterEgoAlterEgo的凭据。凭据包含的凭据。凭据包含WindowsWindows用户用户RettigBRettigB和密码和密码 sdrlk8$40-dksli87nNN8sdrlk8$40-dksli87nNN8。CREATE CREDENTIAL AlterEgo WITH IDENTITY=RettigB,SECRET=sdrlk8$40-dksli87nNN810.6.2 10.6.2 管理权限管理权限116SQL Server 2005返回本节首页6 6)ALTER CREDENTIAL ALTER CREDENTIAL

125、 更改凭据的属性。语法:ALTER CREDENTIAL credential_name WITH IDENTITY=identity_name,SECRET=secret 使用服务主密钥对密码进行加密。如果重新生成服务主密钥,则需要使用新服务主密钥对该密码重新加密。10.6.2 10.6.2 管理权限管理权限117SQL Server 2005返回本节首页例例10-51 10-51 更改凭据的密码,本例将更改存储在名为更改凭据的密码,本例将更改存储在名为 Saddles Saddles 的凭据中的密的凭据中的密码。该凭据包含码。该凭据包含WindowsWindows登录名登录名RettigB

126、RettigB及其密码。使用及其密码。使用SECRETSECRET子句将新密码子句将新密码添加到凭据。添加到凭据。ALTER CREDENTIAL Saddles WITH IDENTITY=RettigB,SECRET=sdrlk8$40-dksli87nNN8例例10-52 10-52 删除凭据的密码,本例将删除名为删除凭据的密码,本例将删除名为FramesFrames的凭据中的密码。该凭的凭据中的密码。该凭据包含据包含WindowsWindows登录名登录名Aboulrus8Aboulrus8和密码。因为未指定和密码。因为未指定SECRETSECRET选项,所以执行选项,所以执行该语句后

127、,凭据的密码为空。命令为:该语句后,凭据的密码为空。命令为:ALTER CREDENTIAL Frames WITH IDENTITY=Aboulrus810.6.2 10.6.2 管理权限管理权限118SQL Server 2005返回本节首页7 7)DROP CREDENTIAL DROP CREDENTIAL 从服务器中删除凭据从服务器中删除凭据语法:DROP CREDENTIAL credential_name。credential_name要从服务器中删除的凭据的名称。例例10-53 10-53 本示例删除名为本示例删除名为SaddlesSaddles的凭据。命令为的凭据。命令为DR

128、OP CREDENTIAL Saddles10.6.2 10.6.2 管理权限管理权限119SQL Server 200510.7 10.7 加密机制加密机制 返回本节首页10.7.1 加密层次结构10.7.2 安全性目录视图10.7.3 安全与加密函数10.7.4 密码策略120SQL Server 2005返回本节首页nSQL Server 2005 用分层加密和密钥管理基础结构来加密数据。n每一层都使用证书、非对称密钥和对称密钥的组合对它下面的一层进行加密。n如下图所示,加密层次结构与权限层次结构中介绍的安全对象的层次结构相似。n顶层(服务主密钥)是用 Windows 数据保护 API

129、进行加密的。nSQL Server 2005 提供了下列加密机制:证书、非对称密钥、对称密钥。10.7.1 10.7.1 加密层次结构加密层次结构121SQL Server 2005返回本节首页1 1、证书:公钥证书(通常只称为证书)是一个数字签名语句,它将公钥、证书:公钥证书(通常只称为证书)是一个数字签名语句,它将公钥的值绑定到拥有对应私钥的人员、设备或服务的标识上。的值绑定到拥有对应私钥的人员、设备或服务的标识上。证书是由证书颁发机构 (CA) 颁发和签名的。从 CA 接收证书的实体是该证书的主题。证书中通常包含下列信息: 1)主题的公钥:主题的标识符信息,如姓名和电子邮件地址。 2)有

130、效期:这是指证书被认为有效的时间长度。证书只有在指定的有效期内有效,每个证书都包含一个“有效期始于”和“有效期至”日期。这两个日期设置了有效期的界限。证书超过有效期后,必须由已过期证书的主题请求一个新证书。 3)颁发者标识符信息。4)颁发者的数字签名:此签名用于证明主题的公钥和标识符信息之间的绑定的有效性。(在对信息进行数字签名的过程中,信息以及发件人拥有的一些秘密信息将被转换成一个称为“签名”的标记。) 证书的主要好处是使主机不再需要为每个主题维护一组密码。相反,主机只需要与证书颁发者建立信任关系,然后证书颁发者就可以签名无限数量的证书。10.7.1 10.7.1 加密层次结构加密层次结构1

131、22SQL Server 2005返回本节首页n当主机(如安全 Web 服务器)将某个颁发者指定为受信任的根颁发机构时,主机将隐式信任该颁发者用来建立它所发出的证书绑定的策略。n主机可以通过将颁发者自签名的证书(其中包含颁发者的公钥)放入主机的受信任根证书颁发机构证书存储区,将此颁发者指定为受信任的根颁发机构。n对于中间证书颁发机构或从属证书颁发机构,只有当它们具有受信任根证书颁发机构的合法路径时才会受到信任。n颁发者可以在证书到期之前便撤消该证书。n由 SQL Server 创建的自签名证书遵循 X.509 标准并支持 X.509 v1 字段。10.7.1 10.7.1 加密层次结构加密层次

132、结构123SQL Server 2005返回本节首页2 2、非对称密钥:、非对称密钥:n非对称密钥由私钥和对应的公钥组成。每个密钥都可以解密另一个密钥加密的数据。n非对称加密和解密相对来说会消耗大量资源,但它们比对称加密提供了更高的安全级别。n非对称密钥可用于加密对称密钥,以便存储在数据库中。 3 3、对称密钥:、对称密钥:n对称密钥是加密和解密都使用的一个密钥。n使用对称密钥进行加密和解密非常快,并且适用于使用数据库中的敏感数据的例程。10.7.1 10.7.1 加密层次结构加密层次结构124SQL Server 2005返回本节首页请使用以下目录视图来访问目录元数据:1)1)数据库级别的视

133、图:数据库级别的视图:sys.database_permissions、sys.database_role_members、sys.database_principals、sys.master_key_passwords;2 2)服务器级别的视图:)服务器级别的视图:sys.server_permissions、sys.sql_logins、sys.server_principals、sys.system_components_surface_area_configuration、sys.server_role_members;3 3)加密视图:)加密视图:sys.asymmetric_key

134、s、sys.crypt_properties、sys.certificates、sys.key_encryptions、sys.credentials、sys.symmetric_keys。10.7.2 10.7.2 安全性目录视图安全性目录视图125SQL Server 2005返回本节首页 以下函数返回对管理安全性有用的信息:以下函数返回对管理安全性有用的信息:CURRENT_USER、sys.fn_builtin_permissions、Has_Perms_By_Name、IS_MEMBER、IS_SRVROLEMEMBER、PERMISSIONS 、SCHEMA_ID、SCHEMA_N

135、AME、SESSION_USER、SETUSER、SUSER_ID、SUSER_SID、SUSER_SNAME、sys.fn_builtin_permissions、SYSTEM_USER、SUSER_NAME、USER_ID、USER_NAME。10.7.3 10.7.3 安全与加密函数安全与加密函数126SQL Server 2005返回本节首页以下函数支持加密、解密、数字签名以及数字签名验证:1 1)对称加密和解密:)对称加密和解密:EncryptByKey、DecryptByKey、EncryptByPassPhrase、DecryptByPassPhrase、Key_ID、Key_G

136、UID;2 2)非对称加密和解密:)非对称加密和解密:EncryptByAsmKey、DecryptByAsmKey、EncryptByCert、DecryptByCert、Cert_ID、AsymKey_ID、CertProperty;3 3)签名和签名验证:)签名和签名验证:SignByAsymKey、VerifySignedByAsmKey、SignByCert、VerifySignedByCert;4 4)含自动密钥处理的对称解密:)含自动密钥处理的对称解密:DecryptByKeyAutoCert10.7.3 10.7.3 安全与加密函数安全与加密函数127SQL Server 20

137、05返回本节首页1 1、密码复杂性、密码复杂性 密码复杂性策略通过增加可能密码的数量来阻止强力攻击。实施密码复杂性策略时,新密码必须符合以下原则:1)密码不得包含全部或“部分”用户帐户名。部分帐户名是指三个或三个以上两端用“空白”(空格、制表符、回车符等)或任何以下字符分隔的连续字母数字字符:-_#;2)密码长度至少为六个字符;3)密码包含以下四类字符中的三类:英文大写字母(A-Z)、英文小写字母(a-z)、十个基本数字(0-9)、非字母数字(例如:!、$、#或%)。10.7.4 10.7.4 密码策略密码策略128SQL Server 2005返回本节首页2 2、密码过期、密码过期 密码过期

138、策略用于管理密码的使用期限。如果选中了密码过期策略,则系统将提醒用户更改旧密码和帐户,并禁用过期的密码。10.7.4 10.7.4 密码策略密码策略129SQL Server 2005返回本节首页 3 3、策略实施、策略实施 密码策略是针对各个登录名实施的。使用ALTER LOGIN可以配置策略应用程序。配置密码策略实施时,适用以下规则:1)当CHECK_POLICY更改为ON时:除非将CHECK_EXPIRATION显式设置为OFF,否则也会将其设置为ON。密码历史使用当前的密码哈希值初始化;2 2)当)当CHECK_POLICYCHECK_POLICY更改为更改为OFFOFF时:时:CHE

139、CK_EXPIRATION也设置为 OFF;清除密码历史;lockout_time的值被重置;3)如果指定MUST_CHANGE,则CHECK_EXPIRATION和CHECK_POLICY必须设置为ON。否则,该语句将失败;4)如果CHECK_POLICY设置为OFF,则CHECK_EXPIRATION不能设置为ON。包含此选项组合的ALTER LOGIN语句将失败。10.7.4 10.7.4 密码策略密码策略130SQL Server 2005练习题练习题1010 返回本节首页一、填空题1、SQL Server 2005的权限是分层次管理的,权限层次可以分为3层,他们分别是_、_和_。2、

140、SQL Server 2005登录验证有两种模式,他们分别是_和_。3、创建新的数据库角色时一般要完成的基本任务是:_、_和_。二、选择题1、关于登录和用户,下列各项表述不正确的是:( )。A、登录是在服务器级创建的,用户是在数据库级创建的B、创建用户时必须存在该用户的登录C、用户和登录必须同名 D、一个登录可以对应多个用户2、关于SQL Server 2005的数据库权限叙述不正确的是:( )。A、SQL Server 2005的数据库权限可以分为服务器权限、数据库权限和对象权限B、服务器权限能通过固定服务器角色进行分配,不能单独分配给用户C、数据库管理员拥有最高权限D、每个用户可以分配若干

141、权限,并且用户有可能可以把其权限分配给其他用户3、关于SQL Server 2005的数据库角色叙述正确的是:( )。A、用户可以自定义固定服务器角色 B、每个用户能拥有一个角色C、数据库角色是系统自带的,用户一般不可以自定义D、角色用来简化将很多权限分配给很多用户这个复杂任务的管理131SQL Server 2005练习题练习题1010 返回本节首页三、简答题1、SQL Server有哪两种身份验证模式?它们有什么不同?2、写出SQL Server系统的登录验证过程。3、登录用户和数据库用户的关系如何?4、数据库角色有哪两种?固定数据库角色能删除吗?5、许可分为哪几种?分别给予解释。6、什么

142、是授权的主体,在SQL Server 2005中如何建立授权的主体?7、关于权限控制的SQL语句有哪些?它们的作用是什么?8、在Windows中新建一个登录帐户,设置相应登录模式,实验登录SQL Server。9、在SQL Server 2005中新建一个登录帐户,设置相应登录模式,实验登录SQL Server。10、赋予帐号不同的“数据库角色成员身份”,实验对数据库的操作情况。132SQL Server 2005上机实习上机实习9 9 返回本节首页实验目的实验目的1)了解SQL Server 2005数据库的安全性相关的概念;2)实践SQL Server 2005的验证模式、登录管理、用户管

143、理、角色管理、权限管理及系统加密机制等的操作。实验内容实验内容1 1、SQL ServerSQL Server的安全模式的安全模式设置SQL Server的安全模式可以在安装SQL Server时完成,也可以在安装后以系统管理员的身份注册,然后在Management Studio中进行设置。(1 1)设置)设置SQL ServerSQL Server的安全认证模式的安全认证模式要设置安全认证模式,用户必须使用系统管理员帐号。步骤如下:展开服务器组,右击需要设置的SQL服务器,从弹出的快捷菜单中选择“属性”命令。在弹出的“SQL Server服务器属性”对话框中,点击左上角“安全性”选项,右边显

144、示安全性相关设置项目。选中“Windows身份验证模式”或“SQL Server和Windows身份验证模式”(混合模式)单选按钮。注意:设置改变后,用户必须停止并重新启动SQL Server服务新设置才能生效。(2 2)添加)添加SQL ServerSQL Server帐号帐号如果用户没有Windows NT2000帐号,则只能建立SQL Server帐号,可以在Management Studio中设置,也可以直接使用T-SQL语句完成设置。133SQL Server 2005上机实习上机实习9 9 返回本节首页1)在Management Studio中添加SQL Server帐号展开服务器

145、,选择“安全性”“登录名”文件夹。右击“登录名”文件夹,在某登录名上按鼠标右键弹出快捷菜单。在弹出的快捷菜单中选择“新建登录名”选项,出现“登录名-新建”对话框。在“登录名”文本框中输入一个不带反斜杠的用户名,选中“SQL Server身份验证”单选按钮,并在“密码”与“确认密码”文本框中输入相同口令。按“确定”完成创建。注意:选中“Windows身份验证”单选按钮时,能创建Windows登录帐号,此时登录名通过搜索来指定某Windows登录名,由它映射到SQL Server。说明:在创建SQL Server登录名时,除如上指定“常规”选项外,可以通过“登录名-新建”对话框左上其它选项卡来设置

146、登录名是否属于某服务器角色、登录名要映射到哪些数据库、登录名安全对象、登录名状态等。2)利用T-SQL添加SQL Server帐号本例为用户qh创建一个SQL Server 登录名,密码为qh,默认数据库为jxgl,默认语言为english。命令为:EXEC sp_addlogin qh,qh, jxgl, english134SQL Server 2005上机实习上机实习9 9 返回本节首页(3 3)修改登录帐号的属性)修改登录帐号的属性1) 在Management Studio中修改SQL Server登录帐号的属性双击要修改属性的登录帐号,在其属性对话框中进行修改。2)利用T-SQL修改

147、SQL Server登录帐号的属性 使用T-SQL语句修改登录帐号的属性会涉及以下几个系统存储过程:sp_password:修改帐号口令;sp_defaultdb:修改帐号默认数据库;Sp_defaultlanguage:修改帐号默认语言。其中,系统存储过程sp_password的格式是:sp_password old=old_password,new =new_password,loginame= login例10-54 以sa身份登录服务器,启动查询分析器来修改SQL Server帐号qh的口令,所示,命令为:sp_password qh,qhqxzsly,qh - 请用ALTER LOG

148、IN来改写(4 4)删除登录帐号)删除登录帐号1) 在Management Studio中删除登录帐号右击要删除的帐号,从弹出的快捷菜单中选择“删除”命令,在确认对话框中单击“是”按钮,这个登录帐号就永久被删除了。2)利用T-SQL删除SQL Server登录帐号使用系统存储过程sp_droplogin来删除SQL Server登录帐号。如:sp_droplogin qh - 请用DROP LOGIN命令改写本命令135SQL Server 2005上机实习上机实习9 9 返回本节首页2 2、管理数据库用户、管理数据库用户新建数据库后,一般只有两个用户,一个是sa(系统管理员),另一个是gue

149、st(系统安装时创建的一个可以对样板数据库做最基本查询的用户)。sa作为系统管理员或数据库管理员,具有最高的权力。在SQL Server 中添加登录用户后,可以在数据库中添加数据库用户。(1)(1)添加数据库的用户添加数据库的用户1)在Management Studio中参阅10.4.2,在数据库jxgl中添加数据库用户qxz(基于某Windows帐户或某SQL Server登录帐户)。2)利用T-SQL添加SQL Server用户例10-55 添加一个Windows 2005帐户qxz2qh到jxgl数据库用户名为qh,命令为:Use jxgl; Exec sp_grantdbaccess

150、qxz2qh, qh -请用CREATE USER来改写本命令。(2)(2)删除数据库用户删除数据库用户删除一个数据库用户相当于删除一个登录帐号在这个数据库中的映射。1)在Management Studio中删除SQL Server用户右击要删除的用户,从弹出的快捷菜单中选择“删除”命令,在提示对话框中确认,该用户就被删除了。2)利用T-SQL删除SQL Server用户可以利用系统存储过程sp_revokedbaccess 来删除一个数据库用户, 其语法为:sp_revokedbaccess name_in_db=name。- 例如:sp_revokedbaccess qh - 请用DROP

151、 USER来改写。136SQL Server 2005上机实习上机实习9 9 返回本节首页3 3、管理数据库角色、管理数据库角色(1)(1)创建自定义数据库角色创建自定义数据库角色1) 自己在Management Studio中创建数据库角色newrole1,过程请参阅10.5.4。2)使用T-SQL创建数据库角色在jxgl数据库中创建newrole新角色,并且将用户qh添加到该角色中,代码如下:Use jxgl; Exec sp_addrole newrole - 请自己使用CREATE ROLE命令改写Exec sp_addrolemember newrole,qh(2)(2)删除用户自定

152、义角色删除用户自定义角色不能删除一个有成员的角色,在删除这样的角色之前,应先删除其成员。只能删除自定义的角色,系统的固定角色不能被删除。1)在Management Studio中删除用户自定义角色右击要删除的用户自定义角色,从弹出的快捷菜单中选择“删除”命令,在提示对话框中确认,该用户自定义角色就被删除了。2)利用T-SQL删除用户自定义角色可以使用系统存储过程sp_droprole删除用户自定义角色,如:sp_droprole newrole - 使用DROP ROLE命令改写137SQL Server 2005上机实习上机实习9 9 返回本节首页4 4、权限管理、权限管理在SQL Serv

153、er上权限管理分为语句权限管理和对象权限管理两类。语句权限管理是对用户执行语句或命令的权限的管理;对象权限管理是系统管理员、数据库拥有者、数据库对象拥有者对数据库及其对象的操作权限的控制。(1)(1)在在Management StudioManagement Studio中管理权限中管理权限1)在Management Studio中管理语句权限在对象资源管理器中展开服务器中的数据库文件夹,右击要修改权限的数据库,如JXGL数据库,从弹出的快捷菜单中选择“属性”命令,打开JXGL数据库属性对话框。单击“权限”标签,打开数据库属性对话框之“权限”选项卡。在“权限”选项卡中列出了数据库中所有的用户和

154、角色,以及所有的语句权限,可以单击用户或角色与权限交叉点上的方框来选择权限。设置完毕后单击“确定”按钮使设置生效。138SQL Server 2005上机实习上机实习9 9 返回本节首页2)在Management Studio中管理对象权限在对象资源管理器中展开服务器中的数据库文件夹,再展开要进行角色对象权限管理的数据库,如JXGL数据库,选中“角色”目录,在右窗格的角色列表中双击db_operator角色,打开角色属性对话框。单击“安全对象”选项卡,添加安全对象并设置各自权限。设置完毕后单击“确定”按钮,使设置生效。(2)(2)利用利用T-SQLT-SQL管理权限管理权限SQL Server

155、的授权包括语句授权和对象授权两类,语句授权决定被授权的用户可以执行哪些语句命令,对象授权决定被授权的用户在指定的数据库对象上的操作权限。1)1)语句授权语句授权SQL Server对每类用户都有特定的默认语句执行权限,如果要想执行默认语句权限之外的语句,则必须获得授权。例10-56 系统管理员授予注册名为qh的用户CREATE DATABASE的权限。GRANT CREATE DATABASE TO qh例10-57 数据库拥有者qh将创建表和创建视图的权限授子用户名为qxz的用户。GRANT CREATE TABLE,CREATE VIEW TO qxz139SQL Server 2005上

156、机实习上机实习9 9 返回本节首页2)2)对象授权对象授权例10-58 将对S表的查询权限授予用户名为qh,qxz和sly的用户。GRANT SELECT ON S TO qh,qxz,sly例10-59 将对S表的插入和删除的权限授予用户名为shen的用户。GRANT INSERT,DELETE ON S TO shen例10-60 将对S表的Age和DEPT列的修改权限授予用户名为shen的用户。GRANT UPDATE ON S(Age,DEPT) TO shen例10-61 将执行存储过程SP_ins_S的权限授予用户名为shen的用户。GRANT EXECUTE ON SP_ins_

157、S TO shen3)3)收回权限收回权限授权是为了使被授权者能够执行某些命令或操作某些数据库对象,授权者在任何时候都可以收回对其他用户的授权,收回授权是数据库安全性控制的重要内容。收回授权的命 令是REVOKE,同样分为收回语句授权和收回对象授权。命令格式是(参数说明略):例10-62 从用户名为sly的用户收回创建表和创建视图的权限。REVOKE CREATE TABLE,CREATE VIEW FROM sly例10-63 从用户名为qxz和sly的用户收回对S表的查询权限。REVOKE SELECT ON S FROM qxz,sly5 5、针对、针对“第第1212章章 企业库存管理及企业库存管理及WebWeb网上订购系统网上订购系统”数据库数据库KCGLKCGL,创建不同级别的数,创建不同级别的数据库用户,用创建的用户替换据库用户,用创建的用户替换“sasa”系统用户,来尝试与系统的连接,对系统数据的存取系统用户,来尝试与系统的连接,对系统数据的存取操作等,并记录与分析可能会遇到的问题,实践通过授予更高的权限来解决问题操作等,并记录与分析可能会遇到的问题,实践通过授予更高的权限来解决问题。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号