《数据库课件-第九章-数据库安全优秀PPT.ppt》由会员分享,可在线阅读,更多相关《数据库课件-第九章-数据库安全优秀PPT.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九章第九章数据库平安数据库平安12平安性概述SQL Server 的平安性34用户管理和角色管理权限管理5架构9.1平安性概述平安性概述问题的提出问题的提出数据库的一大特点是数据可以共享;数据库的一大特点是数据可以共享;数据共享必定带来数据库的平安性问题;数据共享必定带来数据库的平安性问题;数据库系统中的数据共享不能是无条件的共享数据库系统中的数据共享不能是无条件的共享;平平安安性性问问题题不不是是数数据据库库系系统统所所独独有有的的,而而是是全全部部计计算机系统都有这个问题算机系统都有这个问题.9.1平安性概述平安性概述什么是数据库的平安性?什么是数据库的平安性?爱爱护护数数据据库库以以防
2、防止止不不合合法法的的运运用用所所造造成成的的数数据据泄泄露、更改或破坏。露、更改或破坏。数数据据库库系系统统的的平平安安爱爱护护措措施施是是否否有有效效是是数数据据库库系系统主要的性能指标之一。统主要的性能指标之一。什么是计算机系统平安性?什么是计算机系统平安性?为计算机系统建立和实行的各种平安爱护措施,为计算机系统建立和实行的各种平安爱护措施,以爱护计算机系统中的硬件、软件及数据,防止以爱护计算机系统中的硬件、软件及数据,防止因偶然或恶意的缘由使系统遭到破坏,数据遭到因偶然或恶意的缘由使系统遭到破坏,数据遭到更改或泄露等。更改或泄露等。9.1平安性概述平安性概述计算机平安性问题分类计算机平
3、安性问题分类技术平安:指计算机系统中接受具有确定平安性的硬技术平安:指计算机系统中接受具有确定平安性的硬件、软件来实现对计算机系统及其所存数据的平安爱件、软件来实现对计算机系统及其所存数据的平安爱护。护。管理平安:由于管理不善导致的计算机设备和数据介管理平安:由于管理不善导致的计算机设备和数据介质的物理破坏、丢失等软硬件意外故障以及场地的意质的物理破坏、丢失等软硬件意外故障以及场地的意外事故等平安问题。外事故等平安问题。政策法律类:政府部门建立的有关计算机犯罪、数据政策法律类:政府部门建立的有关计算机犯罪、数据平安保密的法律道德准则和政策法规、法令。平安保密的法律道德准则和政策法规、法令。(一
4、级一级层层设置)(一级一级层层设置)用户用户DBMSOSDB用户标识用户标识和鉴别和鉴别存取限制存取限制视图、视图、审计审计操作系统操作系统平安爱护平安爱护密码爱护密码爱护9.1平安性概述平安性概述计算机系统的平安模型计算机系统的平安模型9.1.1用户标识与鉴别用户标识与鉴别系统供应的最外层的平安爱护措施。系统供应的最外层的平安爱护措施。具体方法:具体方法:系统供应确定的方式让用户标识自己的名字或系统供应确定的方式让用户标识自己的名字或身份;身份;系统内部记录着全部合法用户的标识;系统内部记录着全部合法用户的标识;每次用户要求进入系统时,由系统核对用户供每次用户要求进入系统时,由系统核对用户供
5、应的身份标识;应的身份标识;通过鉴定后才供应机器运用权;通过鉴定后才供应机器运用权;用户标识和鉴定可以重复多次。用户标识和鉴定可以重复多次。9.1.1用户标识与鉴别用户标识与鉴别用户名用户名/口令口令简洁易行,简洁被人窃取。简洁易行,简洁被人窃取。每个用户预先约定好一个计算过程或者函数:每个用户预先约定好一个计算过程或者函数:系统供应一个随机数;系统供应一个随机数;用户依据自己预先约定的计算过程或者函数进行用户依据自己预先约定的计算过程或者函数进行计算;计算;系统依据用户计算结果是否正确鉴定用户身份。系统依据用户计算结果是否正确鉴定用户身份。常用方法:常用方法:9.1.2存取限制存取限制存取限
6、制机制组成存取限制机制组成定义存取权限:定义存取权限:为用户定义适当的存取权限,并登记入数据为用户定义适当的存取权限,并登记入数据字典(平安规则或授权规则)字典(平安规则或授权规则)合法权限检查:合法权限检查:查找数据字典,依据平安规则进行用户合法查找数据字典,依据平安规则进行用户合法权限检查权限检查用户权限定义和合法权限检查机制一起组成用户权限定义和合法权限检查机制一起组成DBMS的平安子系统。的平安子系统。9.1.2存取限制存取限制存取限制方法存取限制方法自主存取限制自主存取限制(DAC:DiscretionaryAccessControl):强制存取限制强制存取限制(MAC:Mandat
7、ory Access Control):同一用户对于不同的数据对象有不同的存取权限,同一用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,用户还可不同的用户对同一对象也有不同的权限,用户还可将其拥有的存取权限转授给其他用户。将其拥有的存取权限转授给其他用户。每一个数据对象被标以确定的密级,每一个用户每一个数据对象被标以确定的密级,每一个用户也被授予某一个级别的许可证,对于随意一个对象,也被授予某一个级别的许可证,对于随意一个对象,只有具有合法许可证的用户才可以存取。只有具有合法许可证的用户才可以存取。9.1.3自主存取限制(自主存取限制(DAC)方法)方法定义存取权限
8、:定义存取权限:授权:授权:GRANT收回权限:收回权限:REVORK检查存取权限:对于获得上机权后又进一检查存取权限:对于获得上机权后又进一步发出存取数据库操作的用户:步发出存取数据库操作的用户:DBMS查找数据字典,依据其存取权限对查找数据字典,依据其存取权限对操作的合法性进行检查;操作的合法性进行检查;若用户的操作恳求超出了定义的权限,系若用户的操作恳求超出了定义的权限,系统将拒绝执行此操作。统将拒绝执行此操作。9.1.4强制存取限制(强制存取限制(MAC)方法)方法强制存取限制强制存取限制(MAC):指系统为保证更高程度:指系统为保证更高程度的平安性,依据的平安性,依据TDI/TCSE
9、C标准中平安策标准中平安策略的要求,所实行的强制存取检查手段。略的要求,所实行的强制存取检查手段。MAC不是用户能干脆感知或进行限制的。不是用户能干脆感知或进行限制的。MAC适用于对数据有严格而固定密级分类的适用于对数据有严格而固定密级分类的部门:部门:军事部门军事部门 政府部门政府部门9.1.4强制存取限制(强制存取限制(MAC)方法)方法主体主体是系统中的活动实体是系统中的活动实体:DBMS所管理的实际用户所管理的实际用户代表用户的各进程代表用户的各进程客体客体是系统中的被动实体,是受主体操纵的是系统中的被动实体,是受主体操纵的:文件、基表、索引文件、基表、索引、视图、视图 在在MAC中,
10、中,DBMS所管理的全部实体被分为主体所管理的全部实体被分为主体和客体两大类和客体两大类:9.1.4强制存取限制(强制存取限制(MAC)方法)方法主体的敏感度标记称为主体的敏感度标记称为许可证级别许可证级别客体的敏感度标记称为客体的敏感度标记称为密级密级MAC机制就是通过对比主体的机制就是通过对比主体的Label和客体的和客体的Label,最终确定主体是否能够存取客体。,最终确定主体是否能够存取客体。敏感度标记敏感度标记(LabelLabel)对于主体和客体,对于主体和客体,DBMSDBMS为它们每个实例(值)为它们每个实例(值)指派一个敏感度标记。指派一个敏感度标记。分成若干级别:分成若干级
11、别:绝密、机密、可信、公开绝密、机密、可信、公开9.1.4强制存取限制(强制存取限制(MAC)方法)方法强制存取限制规则强制存取限制规则当某一用户(或某一主体)以标记当某一用户(或某一主体)以标记label注册入系统时,系统注册入系统时,系统要求他对任何客体的存取必需遵循下面两条规则:要求他对任何客体的存取必需遵循下面两条规则:(1)仅当主体的许可证级别大于或等于客体的密级时,该)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;主体才能读取相应的客体;(2)仅当主体的许可证级别等于客体的密级时,该主体才)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。能写相
12、应的客体。修正规则修正规则(某些系统规定某些系统规定)主体的许可证级别小于等于客体的密级,主体能写相应的客体。主体的许可证级别小于等于客体的密级,主体能写相应的客体。表示:用户可为写入的数据对象赐予高于自己的许可证级别的密级,表示:用户可为写入的数据对象赐予高于自己的许可证级别的密级,但一旦数据被写入,该用户自己也不能再读该数据对象了。但一旦数据被写入,该用户自己也不能再读该数据对象了。共同点共同点:禁止了拥有高许可证级别的主体更新低密级的:禁止了拥有高许可证级别的主体更新低密级的数据对象,防止敏感数据的泄漏。数据对象,防止敏感数据的泄漏。9.1.4强制存取限制(强制存取限制(MAC)方法)方
13、法强制存取限制的特点强制存取限制的特点MAC是对数据本身进行密级标记;是对数据本身进行密级标记;无论数据如何复制,标记与数据是一个不行分的整体;无论数据如何复制,标记与数据是一个不行分的整体;只有符合密级标记要求的用户才可以操纵数据;只有符合密级标记要求的用户才可以操纵数据;供应了更高级别的平安性。供应了更高级别的平安性。MAC与与DAC小结小结DAC与与MAC共同构成共同构成DBMS的平安机制的平安机制缘由:较高平安性级别供应的平安爱护要包含较低级别的缘由:较高平安性级别供应的平安爱护要包含较低级别的全部爱护。全部爱护。先进行先进行DAC检查,通过检查,通过DAC检查的数据对象再由系统进检查
14、的数据对象再由系统进行行MAC检查,只有通过检查,只有通过MAC检查的数据对象方可存取。检查的数据对象方可存取。9.1.5视图机制视图机制视图机制把要保密的数据对无权存取这些数据的视图机制把要保密的数据对无权存取这些数据的用户隐藏起来。用户隐藏起来。视图机制与授权机制协作运用视图机制与授权机制协作运用:即首先用视图机制即首先用视图机制屏蔽掉一部分保密数据;在视图上再进一步定义屏蔽掉一部分保密数据;在视图上再进一步定义存取权限。存取权限。9.1.5视图机制视图机制例:在配电物资表例:在配电物资表stockstock中假如指定中假如指定U1U1用户只能查看用户只能查看供电局供电局1#1#仓库的物资
15、时,可以先建立供电局仓库的物资时,可以先建立供电局1#1#仓库仓库的配电物资视图,然后在该视图上进一步定义存取的配电物资视图,然后在该视图上进一步定义存取权限。权限。CREATEVIEWView_Stock1ASSELECT*FROMSTOCKWHEREwarehouse=供电局供电局1#仓库仓库;/*先建视图先建视图*/GRANT SELECTON View_Stock1TO U1;9.1.6审计审计什么是审计什么是审计?启用一个专用的审计日志(启用一个专用的审计日志(AuditLog),),将用户对数据库的全部操作记录在上面;将用户对数据库的全部操作记录在上面;审计功能是一种监视措施,它跟
16、踪记录有审计功能是一种监视措施,它跟踪记录有关数据的访问活动关数据的访问活动。DBA可以利用审计日志中的追踪信息,找可以利用审计日志中的追踪信息,找出非法存取数据的人、时间和内容。出非法存取数据的人、时间和内容。注:审计很费时间和空间,注:审计很费时间和空间,DBA可以依据应用对可以依据应用对平安性的要求,敏捷地打开或关闭审计功能。平安性的要求,敏捷地打开或关闭审计功能。9.1.7数据加密数据加密数据加密数据加密防止数据库中数据在存储和传输中失密的有效手防止数据库中数据在存储和传输中失密的有效手段。段。加密的基本思想加密的基本思想依据确定的算法将原始数据(明文)变换为不行依据确定的算法将原始数
17、据(明文)变换为不行干脆识别的格式(密文),使得不知道解密算法干脆识别的格式(密文),使得不知道解密算法的人无法获知数据的内容。的人无法获知数据的内容。加密方法加密方法替换方法:运用密钥将明文中的每一个字符转换为密文中替换方法:运用密钥将明文中的每一个字符转换为密文中的一个字符。的一个字符。置换方法:将明文的字符按不同的依次重新排列。置换方法:将明文的字符按不同的依次重新排列。混合方法:美国混合方法:美国1977年制定的官方加密标准:数据加密年制定的官方加密标准:数据加密标准(标准(DataEncryptionStandard,简称,简称DES)9.2SQLServer的平安性的平安性设置设置
18、SQLServer2005SQLServer2005登登录的身份验证模录的身份验证模式的方法:式的方法:-平安性平安性-右击右击“新建新建”-”-单击单击“登录登录”,”,如图:如图:9.2.1SQLServer2005的身份验证模式的身份验证模式1 1、WindowsWindows身份验证模式身份验证模式默认默认(平安平安)用户通过用户通过Microsoft WindowsMicrosoft Windows用户帐户连接时,用户帐户连接时,SQL ServerSQL Server运用运用WindowsWindows操作系统中的信息验证帐户操作系统中的信息验证帐户名和密码。名和密码。2 2、混合
19、验证模式、混合验证模式 混合验证模式下,当客户端连接到服务器时,既混合验证模式下,当客户端连接到服务器时,既可实行可实行WindowsWindows身份验证,也可实行身份验证,也可实行SQL ServerSQL Server身份身份验证。假如必需选择验证。假如必需选择 混合模式混合模式 并要求运用并要求运用SQL SQL ServerServer帐户登录,则必需为全部的帐户登录,则必需为全部的SQL ServerSQL Server帐户帐户设置强密码。设置强密码。9.2.2SQLServer2005的平安机制的平安机制SQL ServerSQL Server的平安性主体主要有三个级别的平安性主
20、体主要有三个级别 :1.1.服务器级别服务器级别 所含的平安对象主要有登录名、固定服务器角所含的平安对象主要有登录名、固定服务器角色等,其中登录名用于登录数据库服务器,而固色等,其中登录名用于登录数据库服务器,而固定服务器角色用于给登录名赐予相应的服务器权定服务器角色用于给登录名赐予相应的服务器权限。限。2.2.数据库级别数据库级别 所含的平安对象主要有用户、角色、应用程序所含的平安对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、角色、证书、对称密钥、非对称密钥、程序集、全文书目、全文书目、DDLDDL事务、架构等。事务、架构等。3.3.架构级别架构级别 所含的平安对象
21、主要有表、视图、函数、存储所含的平安对象主要有表、视图、函数、存储过程、类型、聚合函数等。系统默认架构为过程、类型、聚合函数等。系统默认架构为dbodbo。一个数据库运用者,想要登录一个数据库运用者,想要登录SQL ServerSQL Server服务器上的服务器上的数据库,并对数据库中的表执行更新操作,则该运用者必需数据库,并对数据库中的表执行更新操作,则该运用者必需经过下图所示的平安验证:经过下图所示的平安验证:9.3用户管理和角色管理用户管理和角色管理在在SQLServer中,有登录用户和数据库用户两个概念。中,有登录用户和数据库用户两个概念。一个用户须要首先是一个数据库系统的登录用户,
22、然后才可一个用户须要首先是一个数据库系统的登录用户,然后才可以访问某一个具体的数据库。以访问某一个具体的数据库。登登录录用用户户:由由系系统统管理员管理;管理员管理;数数据据库库用用户户:由由数数据据库库管管理理员员管管理。理。1.登录用户的管理登录用户的管理SQLServer有两个常用的默认登录名:有两个常用的默认登录名:sa:系统管理员,拥有操作:系统管理员,拥有操作SQLServer系统的全部系统的全部权限,该登录名不能被删除。权限,该登录名不能被删除。BUILTINAdministrator:SQLServer为每个为每个Windows系统管理员供应的默认用户账户,在系统管理员供应的默
23、认用户账户,在SQLServer中拥有系统和数据库的全部权限。中拥有系统和数据库的全部权限。9.3.2用户管理用户管理(1)创建新的)创建新的SQLServer登录用户登录用户CREATELOGINlogin_nameWITHPASSWORD=password,DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language|FROMWINDOWSWITHDEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language9.3.2用户管理用户管理l创建创建Windows验证模式登录名验证模式登录名l运用运用FROM子句,
24、子句,WINDOWS关键字指定将关键字指定将登录名映射到登录名映射到Windows登录名。登录名。l例例:假设本地计算机名为假设本地计算机名为student_1,S1是一个已是一个已经创建的经创建的Windows用户,创建用户,创建Windows验证模验证模式下的登录名式下的登录名S1,默认数据库是,默认数据库是master:lCREATELOGINstudent_1S1lFROMWINDOWSlWITHDEFAULT_DATABASE=master9.3.2用户管理用户管理l创建创建SQLServer验证模式登录名验证模式登录名例例:创建创建SQLServer登录名登录名S2,密码为,密码为
25、123456,默认数据库是默认数据库是sample:CREATELOGINs2WITHpassword=123456,DEFAULT_DATABASE=sample9.3.2用户管理用户管理(2)删除登录名删除登录名语法格式如下:语法格式如下:DROPLOGINlogin_name例:删除例:删除Windows登录名登录名S1:DROPLOGINstudent_1S1删除删除SQLServer登录名登录名S2:DROPLOGINS29.3.2用户管理用户管理2.数据库用户的管理数据库用户的管理(1)创建数据库用户创建数据库用户CREATEUSERuser_nameFOR|FROMLOGINlo
26、gin_name|WITHOUTLOGINWITHDEFAULT_SCHEMA=schema_name9.3.2用户管理用户管理例:运用例:运用SQLServer登录名登录名s2(假设已经创建)在(假设已经创建)在Sample数据库中创建数据库用户数据库中创建数据库用户u1,默认架构,默认架构为为dbo:USEsampleGOCREATEUSERu1FROMLOGINs2WITHDEFAULT_SCHEMA=dbo9.3.2用户管理用户管理9.3.2用户管理用户管理(2)删除数据库用户删除数据库用户格式如下:格式如下:DROPUSERuser_name例:删除例:删除sample数据库的用户数
27、据库的用户u1:USEsampleGODROPUSERu11.定义角色定义角色其格式是:其格式是:CREATEROLErole_nameAUTHORIZATIONowner_name例:在例:在sample数据库中创建角色数据库中创建角色student_role,全部,全部者为者为dbo:USEsampleGOCREATEROLEstudent_roleAUTHORIZATIONdbo9.3.3角色管理角色管理 数据库角色是被命名的一组与数据库操作相关的权数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。则可用一组具有相同权限的限,角色是权限的集合。则可用一组具有相同权限的用户
28、创建一个角色,以便简化授权的过程。用户创建一个角色,以便简化授权的过程。2.为用户指定角色为用户指定角色可以将数据库用户指定为数据库角色的成员:可以将数据库用户指定为数据库角色的成员:SP_ADDROLEMEMBERrole_name,user_account例:运用例:运用Windows验证模式的登录名验证模式的登录名students1创建创建sample数据库的用户数据库的用户students1,并将该用户添加到角,并将该用户添加到角色色student_role中:中:USEsampleGOCREATEUSERstudents1FROMLOGINstudents1SP_ADDROLEMEM
29、BERstudent_role,students19.3.3角色管理角色管理3.取消用户的角色取消用户的角色假如某个用户不再担当某个角色,可以取消假如某个用户不再担当某个角色,可以取消用户的角色,或者说从角色中删除用户。用户的角色,或者说从角色中删除用户。SP_DROPROLEMEMBERrole_name,user_name例:取消用户例:取消用户s1的的student_role角色:角色:SP_DROPROLEMEMBERstudent_role,students19.3.3角色管理角色管理4.删除角色删除角色假如当前数据库中的某个角色不再须要,则假如当前数据库中的某个角色不再须要,则可以
30、删除该角色。可以删除该角色。DROPROLErole_name例例:DROPROLEstudent_role注:不能删除带有成员的角色;也不能删除固定角色及注:不能删除带有成员的角色;也不能删除固定角色及public角色。角色。9.3.4SQLServer的固定角色的固定角色1.1.固定服务器角色固定服务器角色固定服固定服务务器角色器角色描述描述SYSADMINSYSADMIN系系统统管理管理员员,拥拥有所有操作有所有操作权权限限,可可执执行任何活行任何活动动.SERVERADMINSERVERADMIN服服务务器管理器管理员员,可以可以设设置服置服务务器范器范围围的配置的配置选项选项,关,关
31、闭闭服服务务器。器。SETUPADMINSETUPADMIN安装程序管理安装程序管理员员,可以管理可以管理链链接服接服务务器和启器和启动过动过程。程。SECURITYADMINSECURITYADMIN安全管理安全管理员员,可以管理登可以管理登录录和和 CREATE DATABASE CREATE DATABASE 权权限,限,还还可以可以读读取取错误错误日志和更改密日志和更改密码码。PROCESSADMINPROCESSADMIN进进程管理程管理员员,可以管理在可以管理在 SQL Server SQL Server 中运行的中运行的进进程。程。DBCREATORDBCREATOR数据数据库创
32、库创建者建者,可以可以创创建、更改和除去数据建、更改和除去数据库库。DISKADMINDISKADMIN磁磁盘盘管理管理员员,可以管理磁可以管理磁盘盘文件。文件。BULKADMINBULKADMIN块块数据操作管理数据操作管理员员,可以可以执执行行 BULK INSERT BULK INSERT 语语句。句。l可以把登录名添加到固定服务器角色中,使得登录名作为可以把登录名添加到固定服务器角色中,使得登录名作为固定服务器角色的成员继承固定服务器角色的权限。固定服务器角色的成员继承固定服务器角色的权限。语法如下:语法如下:SP_ADDSRVROLEMEMBERlogin,role例:将登录例:将登
33、录JOHN指定为指定为SYSADMIN固定服务器角色的成员,固定服务器角色的成员,则以则以JOHN登录名登录系统的用户将自动拥有系统管理员权登录名登录系统的用户将自动拥有系统管理员权限:限:SP_ADDSRVROLEMEMBERJOHN,SYSADMINl将固定服务器角色的某个成员删除将固定服务器角色的某个成员删除。语法如下:语法如下:SP_DROPSRVROLEMEMBERlogin,role例:从例:从sysadmin固定服务器角色中删除登录固定服务器角色中删除登录JOHN。SP_DROPSRVROLEMEMBERJOHN,SYSADMIN9.3.4SQLServer的固定角色的固定角色2
34、.固定数据库角色固定数据库角色固定数据固定数据库库角色角色描述描述DB_OWNER数据数据库库所有者,在数据所有者,在数据库库中有全部中有全部权权限。限。DB_ACCESSADMIN访问权访问权限管理限管理员员,可以添加或,可以添加或删删除用除用户户 ID。DB_SECURITYADMIN安全管理安全管理员员,可以管理全部,可以管理全部权权限、限、对对象所有象所有权权、角色和、角色和角色成角色成员资员资格。格。DB_DDLADMIN数据数据库对库对象管理象管理员员,可以,可以发发出出 ALL DDL,但不能,但不能发发出出 GRANT、REVOKE 或或 DENY 语语句。句。DB_BACKU
35、POPERATOR数据数据库备库备份,可以份,可以发发出出 DBCC、CHECKPOINT 和和 BACKUP 语语句。句。DB_DATAREADER数据数据检检索操作索操作员员,可以,可以选择选择数据数据库库内任何用内任何用户户表中的所表中的所有数据。有数据。DB_WRITER数据数据维护维护操作操作员员,可以更改数据,可以更改数据库库内任何用内任何用户户表中的所表中的所有数据。有数据。DB_DENYDATAREADER拒拒绝执绝执行数据行数据检检索操作索操作员员,不能,不能选择选择数据数据库库内任何用内任何用户户表中的任何数据。表中的任何数据。DB_DENYDATAWRITER拒拒绝执绝执
36、行数据行数据维护维护操作操作员员,不能更改数据,不能更改数据库库内任何用内任何用户户表中的任何数据。表中的任何数据。3.PUBLIC角色角色SQLServer有一个特殊的角色即有一个特殊的角色即PUBLIC角角色。色。PUBLIC角色有两大特点:角色有两大特点:初始状态时没有权限;初始状态时没有权限;全部的数据库用户都是它的成员。全部的数据库用户都是它的成员。9.3.4SQLServer的固定角色的固定角色注:当为注:当为public角色授权时,事实上是为全部的数据库用户角色授权时,事实上是为全部的数据库用户授权。授权。9.4权限管理权限管理 对 象常 用 权 限数据库数据库BACKUP DA
37、TABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW、ALTERTABLE表表SELECT、DELETE、INSERT、UPDATE、REFERENCES视图视图SELECT、DELETE、INSERT、UPDATE、REFERENCES常用数据库对象的权限常用数据库对象的权限:9.4.1授予权限授予权限1.授予语句权限授予语句权限语句授权的吩咐格式是:语句授权的吩咐格式是:GRANTALL|statement,
38、.nTOaccount,.n例:系统管理员给用户例:系统管理员给用户Mary和和John授予多个语授予多个语句权限:句权限:GRANTCREATEDATABASE,CREATETABLETOMary,John2.授予对象权限授予对象权限处理数据或执行存储过程中须要相应对象的操处理数据或执行存储过程中须要相应对象的操作或执行权限,这些权限可以划分为:作或执行权限,这些权限可以划分为:SELECT、INSERT、UPDATE和和DELETE语句权限,语句权限,可以应用到整个表或视图;可以应用到整个表或视图;SELECT和和UPDATE语句权限,可以有选择性地应用语句权限,可以有选择性地应用到表或视
39、图中的某些列上;到表或视图中的某些列上;INSERT和和DELETE语句权限,会影响整行,因此只语句权限,会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。可以应用到表或视图中,而不能应用到单个列上。EXECUTE语句权限,执行存储过程和函数的权限。语句权限,执行存储过程和函数的权限。9.4.1授予权限授予权限数据库对象授权的吩咐格式如下:数据库对象授权的吩咐格式如下:GRANTALLPRIVILEGES|permission,.n(column,.n)ONtable|view|ONtable|view(column,.n)|ONstored_procedure|extended_
40、procedure|ONuser_defined_functionTOsecurity_account,.nWITHGRANTOPTIONASgroup|role9.4.1授予权限授予权限例:在电力工程抢修数据库中:例:在电力工程抢修数据库中:(1)将)将out_stock表的表的SELECT权限授予权限授予public角色。角色。GRANTSELECTONout_stockTOpublic(2)将)将out_stock表的表的INSERT,UPDATE,DELETE权权限授予用户限授予用户Mary、John。GRANTINSERT,UPDATE,DELETEONout_stockTOMary
41、,John(3)将对表)将对表out_stock的的get_date列的修改权限授予用列的修改权限授予用户户Tom。GRANTUPDATE(get_date)ONout_stockToTom9.4.1授予权限授予权限9.4.1授予权限授予权限例:把对表例:把对表stock的的insert权限授予用户权限授予用户U1,并允许,并允许将此权限授予其他用户。将此权限授予其他用户。Grant insert On stock To U1With grant option;U1可将此权限授予可将此权限授予U2:Grant insert On stock To U2With grant option;U2可
42、将此权限授予可将此权限授予U3:Grant insert On stock To U3;-U1-U2-U3例例:用户用户Jean拥有表拥有表Plan_Data。Jean将表将表Plan_Data的的SELECT权限授予权限授予Accounting角色(指定角色(指定WITHGRANTOPTION子句)。用户子句)。用户Jill是是Accounting的成员,他要将的成员,他要将表表Plan_Data上的上的SELECT权限授予用户权限授予用户Jack,Jack不不是是Accounting的成员。的成员。因为对表因为对表Plan_Data用用GRANT语句授予其他用户语句授予其他用户SELECT
43、权限的权限是授予权限的权限是授予Accounting角色而不是显式地角色而不是显式地授予授予Jill,不能因为已授予,不能因为已授予Accounting角色中成员该权限,角色中成员该权限,而使而使Jill能够授予表的权限。能够授予表的权限。Jill必需用必需用AS子句来获得子句来获得Accounting角色的授予权限。角色的授予权限。/*UserJean*/GRANTSELECTONPlan_DataTOAccountingWITHGRANTOPTION/*UserJill*/GRANTSELECTONPlan_DataTOJackASAccounting9.4.2收回权限收回权限收回语句权限
44、的一般格式为:收回语句权限的一般格式为:REVOKEALL|statement,.nFROMaccount,.n收回对象权限的吩咐格式是:收回对象权限的吩咐格式是:REVOKEGRANTOPTIONFORALLPRIVILEGES|permission,.n(column,.n)ONtable|view|ONtable|view(column,.n)|ONstored_procedure|extended_procedure|ONuser_defined_functionTO|FROMaccount,.nCASCADEASgroup|role9.4.2收回权限收回权限例:把用户例:把用户U1对
45、表对表stock的的insert权限收回。权限收回。Revoke insert On stock From U1;权限的级联回收:权限的级联回收:系统将自动收回干脆或间接从系统将自动收回干脆或间接从U1处获得的对处获得的对Stock表的表的INSERT权限权限:-U1-U2-U3注:若注:若U2和和U3从其他用户处获得对从其他用户处获得对Stock表的表的insert权限,则不会回收。权限,则不会回收。例:例:废除已授予用户废除已授予用户Joe的的CREATETABLE权限:权限:REVOKECREATETABLEFROMJoe例:废除授予多个用户的多个语句权限:例:废除授予多个用户的多个语句
46、权限:REVOKECREATETABLE,CREATEDEFAULTFROMMary,John例:用户例:用户Mary是是Budget角色的成员,已给该角色授予了角色的成员,已给该角色授予了对对Budget_Data表的表的SELECT权限。已对权限。已对Mary运用运用DENY语句以防止语句以防止Mary通过授予通过授予Budget角色的权限访角色的权限访问问Budget_Data表。表。删除对删除对Mary拒绝的权限,并通过适用于拒绝的权限,并通过适用于Budget角色的角色的SELECT权限,允许权限,允许Mary对该表运用对该表运用SELECT语句。语句。REVOKESELECTONB
47、udget_DataTOMary9.4.2收回权限收回权限9.4.3禁止权限禁止权限禁止语句权限的吩咐格式如下:禁止语句权限的吩咐格式如下:DENYALL|statement,.nTOaccount,.n禁止对象权限的吩咐格式如下:禁止对象权限的吩咐格式如下:DENYALLPRIVILEGES|permission,.n(column,.n)ONtable|view|ONtable|view(column,.n)|ONstored_procedure|extended_procedure|ONuser_defined_functionTOaccount,.nCASCADE例:禁止用户例:禁止用
48、户Mary和和John对对out_stock表的表的UPDATE、DELETE操作:操作:DENYUPDATE,DELETEONout_stockTOMary,John对全部对全部Accouting角色成员拒绝角色成员拒绝CREATETABLE权限:权限:DENYCREATETABLETOAccounting假如运用假如运用DENY语句禁止用户获得某个权限,那么以语句禁止用户获得某个权限,那么以后将该用户添加到已得到该权限的组或角色时,该用户不后将该用户添加到已得到该权限的组或角色时,该用户不能访问这个权限。假如要解除由于能访问这个权限。假如要解除由于DENY语句产生的禁止语句产生的禁止效果,
49、必需运用效果,必需运用GRANT吩咐为禁止的用户或角色显式授吩咐为禁止的用户或角色显式授予相应的权限。予相应的权限。9.4.3禁止权限禁止权限9.5架构架构数据库架构(数据库架构(SCHEMA)是一个独立于数据)是一个独立于数据库用户的非重复命名空间,数据库中的对象都属库用户的非重复命名空间,数据库中的对象都属于某一个架构,可以将架构视为对象的容器。一于某一个架构,可以将架构视为对象的容器。一个架构只能有一个全部者,全部者可以是用户、个架构只能有一个全部者,全部者可以是用户、数据库角色等。架构的全部者可以访问架构中的数据库角色等。架构的全部者可以访问架构中的对象,并且还可以授予其他用户访问该架
50、构的权对象,并且还可以授予其他用户访问该架构的权限。一个架构有且只有一个全部者限。一个架构有且只有一个全部者Owner,但一,但一个用户可以拥有多个架构。个用户可以拥有多个架构。1.创建架构创建架构创建架构的语法格式如下:创建架构的语法格式如下:CREATESCHEMAschema_nameAUTHORIZATIONowner_name例如,下列创建架构例如,下列创建架构test_schema,其全部者为,其全部者为dbo:CREATESCHEMAtest_schemaAUTHORIZATIONdbo留意:用户的默认架构与架构的全部者是不同的。留意:用户的默认架构与架构的全部者是不同的。用户的