《SQL Server 2008基础教程 (3).ppt》由会员分享,可在线阅读,更多相关《SQL Server 2008基础教程 (3).ppt(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年12月22日第1页第第3章章 管理安全性管理安全性本章概述 本章要点本章内容2022年12月22日第2页本章概述本章概述l安全性是数据库管理系统的重要特征。能否提供安全性是数据库管理系统的重要特征。能否提供全面、完整、有效、灵活的安全机制,往往是衡全面、完整、有效、灵活的安全机制,往往是衡量一个分布式数据库管理系统是否成熟的重要标量一个分布式数据库管理系统是否成熟的重要标志,也是用户选择合适的数据库产品的一个重要志,也是用户选择合适的数据库产品的一个重要判断指标。判断指标。lMicrosoft SQL Server 2008系统提供了一整套系统提供了一整套保护数据安全的机制,包括角色
2、、架构、用户、保护数据安全的机制,包括角色、架构、用户、权限等手段,可以有效地实现对系统访问和数据权限等手段,可以有效地实现对系统访问和数据访问的控制。本章全面讲述访问的控制。本章全面讲述Microsoft SQL Server 2008系统的安全管理。系统的安全管理。2022年12月22日第3页本章要点本章要点l理解数据库安全性问题和安全性机制之间的关系理解数据库安全性问题和安全性机制之间的关系l管理和维护登录名管理和维护登录名lSQL Server系统的密码策略系统的密码策略l固定服务器角色的特点和管理固定服务器角色的特点和管理l管理和维护数据库用户管理和维护数据库用户l管理和维护架构管理
3、和维护架构l权限类型和权限管理权限类型和权限管理l系统内置的加密机制系统内置的加密机制2022年12月22日第4页本章内容本章内容3.1 概述概述3.2 管理登录名管理登录名3.3 固定服务器角色固定服务器角色3.4 管理数据库用户管理数据库用户3.5 管理架构管理架构3.6 数据库角色数据库角色3.7 管理应用程序角色管理应用程序角色3.8 管管 理理 权权 限限3.9 SQL Server 2008内置的加密机制内置的加密机制3.10 使用使用SQL Server Management Studio工具工具3.11 本章小结本章小结3.1 概述概述l安全性是所有数据库管理系统的一个重要安全
4、性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理特征。理解安全性问题是理解数据库管理系统安全性机制的前提。系统安全性机制的前提。l下面结合下面结合Microsoft SQL Server 2008系统系统的安全特征,分析安全性问题和安全性机的安全特征,分析安全性问题和安全性机制之间的关系。制之间的关系。2022年12月22日第5页登录到系统登录到系统l第一个安全性问题:当用户登录数据库系第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,到系统中?这是一个最基本的安全性问题,也是数
5、据库管理系统提供的基本功能。也是数据库管理系统提供的基本功能。l在在Microsoft SQL Server 2008系统中,通系统中,通过身份验证模式和主体解决这个问题。过身份验证模式和主体解决这个问题。2022年12月22日第6页身份验证模式身份验证模式l身份验证模式是身份验证模式是Microsoft SQL Server 2008系统验证客系统验证客户端和服务器之间连接的方式。户端和服务器之间连接的方式。Microsoft SQL Server 2008系统提供了两种身份验证模式:系统提供了两种身份验证模式:Windows身份验证身份验证模式和混合模式。在模式和混合模式。在Windows
6、身份验证模式中,用户通身份验证模式中,用户通过过Microsoft Windows用户账户连接时,用户账户连接时,SQL Server使使用用Windows操作系统中的信息验证账户名和密码。操作系统中的信息验证账户名和密码。Windows身份验证模式使用身份验证模式使用Kerberos安全协议,通过强安全协议,通过强密码的复杂性验证提供密码策略强制、账户锁定支持、支密码的复杂性验证提供密码策略强制、账户锁定支持、支持密码过期等。在混合模式中,当客户端连接到服务器时,持密码过期等。在混合模式中,当客户端连接到服务器时,既可能采取既可能采取Windows身份验证,也可能采取身份验证,也可能采取SQ
7、L Server身份验证。当设置为混合模式时,允许用户使用身份验证。当设置为混合模式时,允许用户使用Windows身份验证身份验证SQL Server身份验证进行连接。身份验证进行连接。2022年12月22日第7页主体主体l主体是可以请求系统资源的个体、组合过程。例主体是可以请求系统资源的个体、组合过程。例如,数据库用户是一种主体,可以按照自己的权如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。限在数据库中执行操作和使用相应的数据。lMicrosoft SQL Server 2008系统有多种不同的系统有多种不同的主体,不同主体之间的关系是典型的层次结构关主体,
8、不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比比较大;位于层次比较低的主体,其作用范围比较小。较小。2022年12月22日第8页操作操作l第二个安全性问题:当用户登录到系统中,第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资他可以执行哪些操作、使用哪些对象和资源?源?l这也是一个基本的安全问题,在这也是一个基本的安全问题,在Microsoft SQL Server 200
9、8系统中,通过安全对象和系统中,通过安全对象和权限设置来解决这个问题。权限设置来解决这个问题。2022年12月22日第9页主体和安全对象的结构示意图主体和安全对象的结构示意图2022年12月22日第10页所有所有l第三个安全性问题:数据库中的对象由谁第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的据库对象可以成为没有所有者的“孤儿孤儿”吗?吗?l在在Microsoft SQL Server 2008系统中,这系统中,这个问题是通过用户和
10、架构分离来解决的。个问题是通过用户和架构分离来解决的。2022年12月22日第11页数据库对象、架构和用户之间的数据库对象、架构和用户之间的关系示意图关系示意图2022年12月22日第12页3.2 管理登录名管理登录名l管理登录名包括创建登录名、设置密码策管理登录名包括创建登录名、设置密码策略、查看登录名信息及修改和删除登录名略、查看登录名信息及修改和删除登录名等。等。l下面讲述登录名管理的内容,注意,下面讲述登录名管理的内容,注意,sa是是一个默认的一个默认的SQL Server登录名,拥有操作登录名,拥有操作SQL Server系统的所有权限。该登录名不系统的所有权限。该登录名不能被删除。
11、当采用混合模式安装能被删除。当采用混合模式安装Microsoft SQL Server系统之后,应该为系统之后,应该为sa指定一个指定一个密码。密码。2022年12月22日第13页创建登录名创建登录名l在在Microsoft SQL Server 2008系统中,许系统中,许多操作都既可以通过多操作都既可以通过Transact-SQL语句完语句完成,也可以通过成,也可以通过Microsoft SQL Server Management Studio工具来完成。工具来完成。l下面主要介绍如何使用下面主要介绍如何使用Transact-SQL语句语句创建登录名。在创建登录名时,既可以通创建登录名。在
12、创建登录名时,既可以通过将过将Windows登录名映射到登录名映射到SQL Server系系统中,也可以创建统中,也可以创建SQL Server登录名。登录名。2022年12月22日第14页使用使用Windows登录名创建登录名登录名创建登录名2022年12月22日第15页创建有默认数据库的登录名创建有默认数据库的登录名2022年12月22日第16页创建创建SQL Server登录名登录名2022年12月22日第17页Microsoft SQL Server 2008系系统的密码策略问题统的密码策略问题l密码复杂性和密码过期两大特征密码复杂性和密码过期两大特征l密码的复杂性是指通过增加更多可能
13、的密密码的复杂性是指通过增加更多可能的密码数量来阻止黑客的攻击。码数量来阻止黑客的攻击。l密码过期策略是指如何管理密码的使用期密码过期策略是指如何管理密码的使用期限。在创建限。在创建SQL Server登录名时,如果使登录名时,如果使用密码过期策略,那么系统将提醒用户及用密码过期策略,那么系统将提醒用户及时更改旧密码和登录名,并且禁止使用过时更改旧密码和登录名,并且禁止使用过期的密码。期的密码。2022年12月22日第18页关键字关键字l在使用在使用CREATE LOGIN语句创建语句创建SQL Server登录名时,为了实施上述的密码策登录名时,为了实施上述的密码策略,可以指定略,可以指定H
14、ASHED、MUST_CHANGE、CHECK_EXPIRATION、CHECK_PLICY等关键字。等关键字。2022年12月22日第19页HASHED关键字关键字lHASHED关键字用于描述如何处理密码的哈希运关键字用于描述如何处理密码的哈希运算。算。l在使用在使用CREATE LOGIN语句创建语句创建SQL Server登登录名时,如果在录名时,如果在PASSWORD关键字后面使用关键字后面使用HASHED关键字,那么表示在作为密码的字符串关键字,那么表示在作为密码的字符串存储到数据库之前,对其进行哈希运算。存储到数据库之前,对其进行哈希运算。l如果在如果在PASSWORD关键字后面没
15、有使用关键字后面没有使用HASHED关键字,那么表示作为密码的字符串已关键字,那么表示作为密码的字符串已经是经过哈希运算之后的字符串,因此在存储到经是经过哈希运算之后的字符串,因此在存储到数据库之前不再进行哈希运算了。数据库之前不再进行哈希运算了。2022年12月22日第20页其他关键字其他关键字lMUST_CHANGE关键字表示在首次使用新关键字表示在首次使用新登录名时提示用户输入新密码。登录名时提示用户输入新密码。lCHECK_ EXPIRATION关键字表示是否对关键字表示是否对该登录名实施密码过期策略。该登录名实施密码过期策略。lCHECK_PLICY关键字表示对该登录名强关键字表示对
16、该登录名强制实施制实施Windows密码策略。密码策略。2022年12月22日第21页使用密码策略创建使用密码策略创建SQL Server登录名登录名2022年12月22日第22页维护登录名维护登录名l登录名创建之后,可以根据需要修改登录登录名创建之后,可以根据需要修改登录名的名称、密码、密码策略、默认的数据名的名称、密码、密码策略、默认的数据库等信息,可以禁用或启用该登录名,甚库等信息,可以禁用或启用该登录名,甚至可以删除不需要的登录名。至可以删除不需要的登录名。2022年12月22日第23页使用使用ALTER LOGIN修改登录名修改登录名2022年12月22日第24页修改修改Rudolf
17、登录名的密码登录名的密码2022年12月22日第25页禁用和启用登录名禁用和启用登录名2022年12月22日第26页3.3 固定服务器角色固定服务器角色l固定服务器角色是服务器级别的主体,它们的作固定服务器角色是服务器级别的主体,它们的作用范围是整个服务器。用范围是整个服务器。l固定服务器角色已经具备了执行指定操作的权限,固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的色中,这样该登录名可以继承固定服务器角色的权限。权限。l下面首先讲述下面首先讲述Microsoft SQL
18、 Server 2008系统系统提供的固定服务器角色的特点,然后分析如何处提供的固定服务器角色的特点,然后分析如何处理登录名与固定服务器角色之间的关系。理登录名与固定服务器角色之间的关系。2022年12月22日第27页固定服务器角色的特点固定服务器角色的特点l固定服务器角色也是服务器级别的主体,固定服务器角色也是服务器级别的主体,已经具备了执行指定操作的权限。已经具备了执行指定操作的权限。lMicrosoft SQL Server 2008系统提供了系统提供了9个固定服务器角色,这些角色的清单和功个固定服务器角色,这些角色的清单和功能描述如表能描述如表3-1所示。所示。2022年12月22日第
19、28页固定服务器角色固定服务器角色2022年12月22日第29页固定服务器角色和登录名固定服务器角色和登录名l在在Microsoft SQL Server系统中,可以把登录名添加到固系统中,可以把登录名添加到固定服务器角色中,使登录名作为固定服务器角色的成员继定服务器角色中,使登录名作为固定服务器角色的成员继承固定服务器角色的权限。承固定服务器角色的权限。l对于登录名来说,可以判断其是否为某个固定服务器角色对于登录名来说,可以判断其是否为某个固定服务器角色的成员。的成员。l用户可以使用用户可以使用sp_addsrvrolemember、sp_helpsrvrolememeber、sp_drop
20、srvrolemember等等存储过程和存储过程和IS_SRVROLEMEMBER函数来执行有关固定函数来执行有关固定服务器角色和登录名之间关系的操作。服务器角色和登录名之间关系的操作。2022年12月22日第30页sp_addsrvrolememberl如果希望指定的登录名成为某个固定服务如果希望指定的登录名成为某个固定服务器角色的成员,可以使用器角色的成员,可以使用sp_addsrvrolemember存储过程来完成这存储过程来完成这种操作。种操作。lsp_addsrvrolemember存储过程的语法如存储过程的语法如下:下:lsp_addsrvrolemember login_name
21、,role_name2022年12月22日第31页在在sysadmin角色中增加成员角色中增加成员2022年12月22日第32页sp_helpsrvrolememberl如果要查看指定的固定服务器角色的成员或所有的固定服如果要查看指定的固定服务器角色的成员或所有的固定服务器角色的成员,可以使用务器角色的成员,可以使用sp_helpsrvrolemember存储存储过程。过程。l如果希望判断指定的登录名是否为某个固定服务器角色的如果希望判断指定的登录名是否为某个固定服务器角色的成员,可以使用成员,可以使用IS_SRVROLEMEMBER函数。该函数返函数。该函数返回值是回值是1时,表示当前用户的
22、登录名是成员;返回时,表示当前用户的登录名是成员;返回0时,表时,表示不是成员;否则,表示指定的固定服务器角色名称是错示不是成员;否则,表示指定的固定服务器角色名称是错误的。是表示该登录名成员不是当前固定服务器角色的成误的。是表示该登录名成员不是当前固定服务器角色的成员,但是依然作为系统的登录名存在。员,但是依然作为系统的登录名存在。2022年12月22日第33页sp_dropsrvrolememberl如果希望把固定服务器角色的某个成员删如果希望把固定服务器角色的某个成员删除,那么可以使用除,那么可以使用sp_dropsrvrolemember存储过程。删除存储过程。删除固定服务器角色的登录
23、名成员,只是表示固定服务器角色的登录名成员,只是表示该登录名成员不是当前固定服务器角色的该登录名成员不是当前固定服务器角色的成员,但是依然作为系统的登录名存在。成员,但是依然作为系统的登录名存在。2022年12月22日第34页3.4 管理数据库用户管理数据库用户l数据库用户是数据库级的主体,是登录名数据库用户是数据库级的主体,是登录名在数据库中的映射,是在数据库中执行操在数据库中的映射,是在数据库中执行操作和活动的行动者。作和活动的行动者。l在在Microsoft SQL Server 2008系统中,数系统中,数据库用户不能直接拥有表、视图等数据库据库用户不能直接拥有表、视图等数据库对象,而
24、是通过架构拥有这些对象。数据对象,而是通过架构拥有这些对象。数据库用户管理包括创建用户、查看用户信息、库用户管理包括创建用户、查看用户信息、修改用户、删除用户等操作。修改用户、删除用户等操作。2022年12月22日第35页创建用户创建用户l可以使用可以使用CREATE USER语句在指定的数语句在指定的数据库中创建用户。据库中创建用户。l由于用户是登录名在数据库中的映射,因由于用户是登录名在数据库中的映射,因此在创建用户时需要指定登录名。此在创建用户时需要指定登录名。2022年12月22日第36页创建登录名的数据库用户创建登录名的数据库用户2022年12月22日第37页创建带有默认架构的数据库
25、用户创建带有默认架构的数据库用户2022年12月22日第38页查看和查看和dbol如果希望查看数据库用户的信息,可以使用如果希望查看数据库用户的信息,可以使用sys.database_principals目录视图。该目录视图目录视图。该目录视图包含了有关数据库用户的名称、包含了有关数据库用户的名称、ID、类型、默认、类型、默认的架构、创建日期和最后修改日期等信息。的架构、创建日期和最后修改日期等信息。ldbo是数据库中的默认用户。是数据库中的默认用户。SQL Server系统安系统安装之后,装之后,dbo用户就自动存在了。用户就自动存在了。dbo用户拥有在用户拥有在数据库中操作的所有权限。默认
26、情况下,数据库中操作的所有权限。默认情况下,sa登录登录名在各数据库中对应的用户是名在各数据库中对应的用户是dbo用户。用户。2022年12月22日第39页激活激活guest用户用户2022年12月22日第40页维护用户维护用户l可以使用可以使用ALTER USER语句修改用户。修语句修改用户。修改用户包括两个方面,第一,可以修改用改用户包括两个方面,第一,可以修改用户名;第二可以修改用户的默认架构。户名;第二可以修改用户的默认架构。l修改用户名与删除、重建用户是不同的。修改用户名与删除、重建用户是不同的。修改用户名仅仅是名称的改变,不是用户修改用户名仅仅是名称的改变,不是用户与登录名对应关系
27、的改变,也不是用户与与登录名对应关系的改变,也不是用户与架构关系的变化。架构关系的变化。2022年12月22日第41页修改用户名修改用户名2022年12月22日第42页修改和删除修改和删除l也可以使用也可以使用ALTER USER语句修改指定用语句修改指定用户的默认架构,这时可以使用户的默认架构,这时可以使用WITH DEFAULT_ SCHEMA子句。子句。l如果用户不再需要了,可以使用如果用户不再需要了,可以使用DROP USER语句删除数据库中的用户。语句删除数据库中的用户。2022年12月22日第43页3.5 管理架构管理架构l架构是形成单个命名空间的数据库实体的架构是形成单个命名空间
28、的数据库实体的集合。集合。l架构是数据库级的安全对象,也是架构是数据库级的安全对象,也是Microsoft SQL Server 2008系统强调的特系统强调的特点,是数据库对象的容器。点,是数据库对象的容器。l管理架构包括创建架构、查看架构的信息、管理架构包括创建架构、查看架构的信息、修改架构及删除架构等。修改架构及删除架构等。2022年12月22日第44页创建架构创建架构l使用使用CREATE SCHEMA语句不仅可以创建语句不仅可以创建架构,同时还可以创建该架构所拥有的表、架构,同时还可以创建该架构所拥有的表、视图并且可以对这些对象设置权限。视图并且可以对这些对象设置权限。l下面讲述如何
29、创建架构。下面讲述如何创建架构。2022年12月22日第45页创建一个简单的架构创建一个简单的架构2022年12月22日第46页创建有明确所有者的架构创建有明确所有者的架构2022年12月22日第47页创建架构时同时创建一个表创建架构时同时创建一个表2022年12月22日第48页创建架构的同时创建表和管理权创建架构的同时创建表和管理权限限2022年12月22日第49页查看数据库中的架构信息查看数据库中的架构信息l如果要查看数据库中的架构信息,可以使如果要查看数据库中的架构信息,可以使用用sys.schemas架构目录视图。架构目录视图。l该视图包含了数据库中架构的名称、架构该视图包含了数据库中
30、架构的名称、架构的标识符和架构所有者的标识符等信息。的标识符和架构所有者的标识符等信息。2022年12月22日第50页修改和删除架构修改和删除架构l修改架构是指将特定架构中的对象转移到修改架构是指将特定架构中的对象转移到其他架构中。其他架构中。l可以使用可以使用ALTER SCHEMA语句完成对架构语句完成对架构的修改。的修改。l需要注意的是,如果要更改对象本身的结需要注意的是,如果要更改对象本身的结构,那么应该使用针对该对象的构,那么应该使用针对该对象的ALTER语语句。句。2022年12月22日第51页转移对象的架构转移对象的架构2022年12月22日第52页删除架构删除架构2022年12
31、月22日第53页3.6 数据库角色数据库角色l数据库角色是数据库级别的主体,也是数据库用数据库角色是数据库级别的主体,也是数据库用户的集合。数据库用户可以作为数据库角色的成户的集合。数据库用户可以作为数据库角色的成员,继承数据库角色的权限。数据库管理人员可员,继承数据库角色的权限。数据库管理人员可以通过管理角色的权限来管理数据库用户的权限。以通过管理角色的权限来管理数据库用户的权限。lMicrosoft SQL Server 2008系统提供了一些固系统提供了一些固定数据库角色和定数据库角色和public特殊角色。特殊角色。l下面详细介绍数据库角色的特点和管理方式。下面详细介绍数据库角色的特点
32、和管理方式。2022年12月22日第54页管理数据库角色管理数据库角色l管理数据库角色包括创建数据库角色、添管理数据库角色包括创建数据库角色、添加和删除数据库角色成员、查看数据库角加和删除数据库角色成员、查看数据库角色信息及修改和删除角色等。色信息及修改和删除角色等。2022年12月22日第55页创建简单的角色创建简单的角色2022年12月22日第56页创建带有所有者的角色创建带有所有者的角色2022年12月22日第57页sp_addrolememberl如果要为角色添加成员,可以使用如果要为角色添加成员,可以使用sp_addrolemember存储过程。存储过程。l使用该存储过程可以为当前数
33、据库中的数据库角使用该存储过程可以为当前数据库中的数据库角色添加数据库用户、数据库角色、色添加数据库用户、数据库角色、Windows登录登录名和名和Windows组。组。lsp_addrolemember存储过程的使用方式如下所存储过程的使用方式如下所示:示:lsp_addrolemember role_name,security_account2022年12月22日第58页在角色中添加成员在角色中添加成员2022年12月22日第59页其他操作其他操作l与与sp_addrolemember存储过程相对应的是存储过程相对应的是sp_droprolemember存储过程,后者可以删除指定数据存储过
34、程,后者可以删除指定数据库角色中的成员。库角色中的成员。l可以使用可以使用sys.database_principals安全性目录视图查看安全性目录视图查看当前数据库中所有数据库角色信息,使用当前数据库中所有数据库角色信息,使用sys.database_role_members安全性目录视图查看当前安全性目录视图查看当前数据库中所有数据库角色和其成员的信息。数据库中所有数据库角色和其成员的信息。l如果要修改数据库角色的名称,可以使用如果要修改数据库角色的名称,可以使用ALTER ROLE语句。如果某个角色确实不再需要了,可以使用语句。如果某个角色确实不再需要了,可以使用DROP ROLE语句删
35、除指定的角色。语句删除指定的角色。2022年12月22日第60页固定数据库角色固定数据库角色l就像固定服务器角色一样,固定数据库角就像固定服务器角色一样,固定数据库角色也具有了预先定义好的权限。使用固定色也具有了预先定义好的权限。使用固定数据库角色可以大大简化数据库角色权限数据库角色可以大大简化数据库角色权限管理工作。管理工作。lMicrosoft SQL Server 2008系统提供了系统提供了9个固定数据库角色,这些固定数据库角色个固定数据库角色,这些固定数据库角色清单和权限描述如表清单和权限描述如表3-2所示。所示。2022年12月22日第61页public角色角色l除了除了3.6.2
36、节介绍的固定数据库角色之外,节介绍的固定数据库角色之外,Microsoft SQL Server系统成功安装之后,还有系统成功安装之后,还有一个特殊的角色,这就是一个特殊的角色,这就是public角色。角色。lpublic角色有两大特点,第一,初始状态时没有角色有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。权限;第二,所有的数据库用户都是它的成员。l固定数据库角色都有预先定义好的权限,但是不固定数据库角色都有预先定义好的权限,但是不能为这些角色增加或删除权限。虽然初始状态下能为这些角色增加或删除权限。虽然初始状态下public角色没有任何权限,但是可以为该角色授角色
37、没有任何权限,但是可以为该角色授予权限。予权限。2022年12月22日第62页3.7 管理应用程序角色管理应用程序角色l应用程序角色是一个数据库主体,它可以应用程序角色是一个数据库主体,它可以使应用程序能够用其自身的、类似用户的使应用程序能够用其自身的、类似用户的权限来运行。权限来运行。l在使用应用程序时,仅允许特定用户来访在使用应用程序时,仅允许特定用户来访问数据库中的特定数据,如果不使用这些问数据库中的特定数据,如果不使用这些特定的应用程序连接,就无法访问这些数特定的应用程序连接,就无法访问这些数据。从而实现安全管理的目的。据。从而实现安全管理的目的。2022年12月22日第63页特点特点
38、l与数据库角色相比来说,应用程序角色有与数据库角色相比来说,应用程序角色有3个特点:第一,在默认情况下该角色不包个特点:第一,在默认情况下该角色不包含任何成员;第二,在默认情况下该角色含任何成员;第二,在默认情况下该角色是非活动的,必须激活之后才能发挥作用;是非活动的,必须激活之后才能发挥作用;第三,该角色有密码,只有拥有应用程序第三,该角色有密码,只有拥有应用程序角色正确密码的用户才可以激活该角色。角色正确密码的用户才可以激活该角色。当激活某个应用程序角色之后,用户会失当激活某个应用程序角色之后,用户会失去自己原有的权限,转而拥有应用程序角去自己原有的权限,转而拥有应用程序角色的权限。色的权
39、限。2022年12月22日第64页创建应用程序角色创建应用程序角色2022年12月22日第65页激活应用程序角色激活应用程序角色2022年12月22日第66页修改应用程序角色修改应用程序角色2022年12月22日第67页3.8 管理权限管理权限l权限是执行操作、访问数据的通行证。只权限是执行操作、访问数据的通行证。只有拥有了针对某种安全对象的指定权限,有拥有了针对某种安全对象的指定权限,才能对该对象执行相应的操作。才能对该对象执行相应的操作。l在在Microsoft SQL Server 2008系统中,不系统中,不同的对象有不同的权限。为了更好地理解同的对象有不同的权限。为了更好地理解权限管
40、理的内容,下面从权限的类型、常权限管理的内容,下面从权限的类型、常用对象的权限、隐含的权限、授予权限、用对象的权限、隐含的权限、授予权限、收回权限、否认权限等几个方面介绍。收回权限、否认权限等几个方面介绍。2022年12月22日第68页权限的类型权限的类型l在在Microsoft SQL Server 2008系统中,不系统中,不同的分类方式可以把权限分成不同的类型。同的分类方式可以把权限分成不同的类型。如果依据权限是否预先定义,可以把权限如果依据权限是否预先定义,可以把权限分为预先定义的权限和预先未定义的权限。分为预先定义的权限和预先未定义的权限。l预先定义的权限是指那些系统安装之后,预先定
41、义的权限是指那些系统安装之后,不必通过授予权限即拥有的权限。不必通过授予权限即拥有的权限。l预先未定义的权限是指那些需要经过授权预先未定义的权限是指那些需要经过授权或继承才能得到的权限。或继承才能得到的权限。2022年12月22日第69页对象权限对象权限l如果按照权限是否与特定的对象有关,可以把权限分为针对所有对象如果按照权限是否与特定的对象有关,可以把权限分为针对所有对象的权限和针对特殊对象的权限。的权限和针对特殊对象的权限。l针对所有对象的权限表示这种权限可以针对针对所有对象的权限表示这种权限可以针对SQL Server系统中所有系统中所有的对象,例如,的对象,例如,CONTROL权限是所
42、有对象都有的权限。权限是所有对象都有的权限。l针对特殊对象的权限是指某些权限只能在指定的对象上起作用,例如针对特殊对象的权限是指某些权限只能在指定的对象上起作用,例如INSERT可以是表的权限,但是不能是存储过程的权限,而可以是表的权限,但是不能是存储过程的权限,而EXECUTE可以是存储过程的权限,但是不能是表的权限。下面,详可以是存储过程的权限,但是不能是表的权限。下面,详细讨论这两种权限类型。细讨论这两种权限类型。l在在Microsoft SQL Server 2008系统中,针对所有对象的权限包括系统中,针对所有对象的权限包括CONTROL、ALTER、ALTER ANY、TAKE O
43、WNERSHIP、INPERSONATE、CREATE、VIEW DEFINITION等。等。2022年12月22日第70页常用对象的权限常用对象的权限l在使用在使用GRANT语句、语句、REVOKE语句、语句、DENY语句执行权限管理操作时,经常使用语句执行权限管理操作时,经常使用ALL关键字表示指定安全对象的常用权限。关键字表示指定安全对象的常用权限。l不同的安全对象往往具有不同的权限。不同的安全对象往往具有不同的权限。l安全对象的常用权限如表安全对象的常用权限如表3-3所示。所示。2022年12月22日第71页授予权限授予权限l在在Microsoft SQL Server 2008系统中
44、,可以使用系统中,可以使用GRANT语句将安全对象的权限授予指定的安全主体。这语句将安全对象的权限授予指定的安全主体。这些可以使用些可以使用GRANT语句授权的安全对象包括应用程序角语句授权的安全对象包括应用程序角色、程序集、非对称密钥、证书、约定、数据库、端点、色、程序集、非对称密钥、证书、约定、数据库、端点、全文目录、函数、消息类型、对象、队列、角色、路由、全文目录、函数、消息类型、对象、队列、角色、路由、架构、服务器、服务、存储过程、对称密钥、系统对象、架构、服务器、服务、存储过程、对称密钥、系统对象、表、类型、用户、视图和表、类型、用户、视图和XML架构集合等。架构集合等。lGRANT
45、语句的语法是比较复杂的,不同的安全对象有不语句的语法是比较复杂的,不同的安全对象有不同的权限,因此也有不同的授权方式。同的权限,因此也有不同的授权方式。l下面,通过一些示例介绍如何使用下面,通过一些示例介绍如何使用GRANT语句执行授权语句执行授权操作。操作。2022年12月22日第72页执行针对数据库授权的执行针对数据库授权的GRANT语句语句2022年12月22日第73页执行针对表授权的执行针对表授权的GRANT语句语句2022年12月22日第74页收回权限收回权限l如果希望从某个安全主体处收回权限,可如果希望从某个安全主体处收回权限,可以使用以使用REVOKE语句。语句。lREVOKE语
46、句是与语句是与GRANT语句相对应的,语句相对应的,可以把通过可以把通过GRANT语句授予给安全主体的语句授予给安全主体的权限收回。权限收回。l也就是说,使用也就是说,使用REVOKE语句可以删除通语句可以删除通过过GRANT语句授予给安全主体的权限。语句授予给安全主体的权限。2022年12月22日第75页使用使用REVOKE语句收回授予的权语句收回授予的权限限2022年12月22日第76页收回收回WITH GRANT OPTION子子句形成权限时的错误句形成权限时的错误2022年12月22日第77页成功地收回成功地收回WITH GRANT OPTION子句形成权限子句形成权限2022年12月
47、22日第78页否认权限否认权限l安全主体可以通过两种方式获得权限,第一种方安全主体可以通过两种方式获得权限,第一种方式是直接使用式是直接使用GRANT语句为其授予权限,第二种语句为其授予权限,第二种方式是通过作为角色成员继承角色的权限。方式是通过作为角色成员继承角色的权限。l使用使用REVOKE语句只能删除安全主体通过第一种语句只能删除安全主体通过第一种方式得到的权限,要想彻底删除安全主体的特定方式得到的权限,要想彻底删除安全主体的特定权限必须使用权限必须使用DENY语句。语句。lDENY语句的语法形式与语句的语法形式与REVOKE语句非常类似。语句非常类似。2022年12月22日第79页使用
48、使用DENY语句删除权限语句删除权限2022年12月22日第80页3.9 SQL Server 2008内置的加内置的加密机制密机制lMicrosoft SQL Server 2008系统不是简单系统不是简单地提供一些加密函数,而是把成熟的数据地提供一些加密函数,而是把成熟的数据安全技术引进到数据库中,形成了一个清安全技术引进到数据库中,形成了一个清晰的内置加密层次结构。晰的内置加密层次结构。l加密是一种保护数据的机制,它通过将原加密是一种保护数据的机制,它通过将原始数据打乱,达到只有经过授权的人员才始数据打乱,达到只有经过授权的人员才能访问和读取数据、未授权人不能识别或能访问和读取数据、未授
49、权人不能识别或读取数据的目的,从而增强了数据的保密读取数据的目的,从而增强了数据的保密性。性。2022年12月22日第81页对称加密机制和非对称加密机制对称加密机制和非对称加密机制示意图示意图2022年12月22日第82页3.10 使用使用SQL Server Management Studio工具工具l除了可以使用除了可以使用Transact-SQL语句执行有关语句执行有关安全的操作之外,使用安全的操作之外,使用SQL Server Management Studio图形工具也可以完成图形工具也可以完成许多有关安全管理的操作。需要注意的是,许多有关安全管理的操作。需要注意的是,考虑到性能和安
50、全等原因,大多数情况下考虑到性能和安全等原因,大多数情况下建议使用建议使用Transact-SQL语句执行相关的操语句执行相关的操作。作。l下面,通过如何创建登录名讲述如何使用下面,通过如何创建登录名讲述如何使用图形工具执行安全操作。图形工具执行安全操作。2022年12月22日第83页3.11 本章小结本章小结l本章首先分析了安全性问题和安全性机制间的关系。然后,本章首先分析了安全性问题和安全性机制间的关系。然后,详细研究了登录名管理的内容。接下来,讨论了服务器角详细研究了登录名管理的内容。接下来,讨论了服务器角色的作用和类型,介绍了用户和架构管理的内容。用户是色的作用和类型,介绍了用户和架构