第十讲 数据库安全性_第1页
第十讲 数据库安全性_第2页
第十讲 数据库安全性_第3页
第十讲 数据库安全性_第4页
第十讲 数据库安全性_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第十讲数据库的安全性本讲概述数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。安全性是数据库管理系统的重要特征。能否提供全面、完整、有效、灵活的安全机制,往往是衡量一个分布式数据库管理系统是否成熟的重要标志,也是用户选择合适的数据库产品的一个重要判断指标。MicrosoftSQLServer2008系统提供了一整套保护数据安全的机制,包括角色、架构、用户、权限等手段,可以有效地实现对系统访问和数据访问的控制。本将全面讲述MicrosoftSQLServer2008系统的安全管理。1、SQLServer实现的安全机制用户身份验证存取权限第1个安全性问题:登录到系统第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。在MicrosoftSQLServer2008系统中,通过身份验证模式和主体解决这个问题。身份验证模式身份验证模式是MicrosoftSQLServer2008系统验证客户端和服务器之间连接的方式。MicrosoftSQLServer2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。在Windows身份验证模式中,用户通过

MicrosoftWindows用户账户连接时,SQLServer使用Windows操作系统中的信息验证账户名和密码。该模式下,用户只要能成功登录到Windows操作系统,系统便允许用户连接到SQLServer服务器。在混合模式中,当客户端连接到服务器时,既可能采取

Windows身份验证,也可能采取SQLServer身份验证。主体主体是可以请求系统资源的个体。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。MicrosoftSQLServer2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。第2个安全性问题:操作第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?这也是一个基本的安全问题,在

MicrosoftSQL

Server2008系统中,通过安全对象和权限设置来解决这个问题。安全对象是能够被SQLServer控制的最小单位,是影响到SQLServer安全性的数据库对象。通过对安全对象的控制,SQLServer能够限制数据库对象对资源的访问和占用,从而控制用户对SQLServer资源的使用。主体和安全对象的结构示意图第3个安全性问题:所有第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗?在MicrosoftSQLServer2008系统中,这个问题是通过用户和架构分离来解决的。2、管理登录名登录账户属于服务器层面,只能让用户登录到SQLServer服务器,本身并不能让用户访问服务器中的数据库。访问数据库时,必须还要有数据库用户,并将数据库用户名与某个登录账号相关联。管理登录名包括创建登录名、设置密码策略、查看登录名信息及修改和删除登录名等。在SQLServer2008系统中,既可以通过Transact-SQL语句完成对登录名的管理,也可以通过MicrosoftSQLServerManagementStudio工具来完成。使用Wi在创建登录名时,既可以通过将Windows登录名映射到SQLServer系统中,也可以创建SQLServer登录名。

ndows登录名创建登录名

在创建登录名时,既可以通过将Windows登录名映射到SQLServer系统中,也可以创建SQLServer登录名。sa是一个默认的SQLServer登录名,拥有操作SQLServer系统的所有权限。该登录名不能被删除。创建登录名创建有默认数据库的登录名创建登录名创建SQLServer登录名创建登录名密码复杂性和密码过期两大特征密码的复杂性是指通过增加更多可能的密码数量来阻止黑客的攻击。密码过期策略是指如何管理密码的使用期限。在创建SQLServer登录名时,如果使用密码过期策略,那么系统将提醒用户及时更改旧密码和登录名,并且禁止使用过期的密码。在使用CREATELOGIN语句创建SQLServer登录名时,为了实施上述的密码策略,可以指定HASHED、MUST_CHANGE、CHECK_EXPIRATION、CHECK_PLICY等关键字。密码策略HASHED关键字用于描述如何处理密码的哈希运算。在使用CREATELOGIN语句创建SQLServer登录名时,如果在PASSWORD关键字后面使用HASHED关键字,那么表示在作为密码的字符串存储到数据库之前,对其进行哈希运算。如果在PASSWORD关键字后面没有使用HASHED关键字,那么表示作为密码的字符串已经是经过哈希运算之后的字符串,因此在存储到数据库之前不再进行哈希运算了。MUST_CHANGE关键字表示在首次使用新登录名时提示用户输入新密码。CHECK_EXPIRATION关键字表示是否对该登录名实施密码过期策略。CHECK_PLICY关键字表示对该登录名强制实施Windows密码策略。密码策略使用密码策略创建SQLServer登录名创建登录名维护登录名登录名创建之后,可以根据需要修改登录名的名称、密码、密码策略、默认的数据库等信息,可以禁用或启用该登录名,甚至可以删除不需要的登录名。使用ALTERLOGIN修改登录名3、固定服务器角色固定服务器角色是服务器级别的主体,它们的作用范围是整个服务器。固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的权限。固定服务器角色和登录名在MicrosoftSQLServer系统中,可以把登录名添加到固定服务器角色中,使登录名作为固定服务器角色的成员继承固定服务器角色的权限。对于登录名来说,可以判断其是否为某个固定服务器角色的成员。用户可以使用sp_addsrvrolemember、

sp_helpsrvrolememeber、sp_dropsrvrolemember等存储过程和IS_SRVROLEMEMBER函数来执行有关固定服务器角色和登录名之间关系的操作。如果希望指定的登录名成为某个固定服务器角色的成员,可以使用sp_addsrvrolemember存储过程来完成这种操作。sp_addsrvrolemember存储过程的语法如下:

sp_addsrvrolemember'login_name','role_name'固定服务器角色和登录名如果要查看指定的固定服务器角色的成员或所有的固定服务器角色的成员,可以使用sp_helpsrvrolemember存储过程。如果希望判断指定的登录名是否为某个固定服务器角色的成员,可以使用IS_SRVROLEMEMBER函数。该函数返回值是1时,表示当前用户的登录名是成员;返回0时,表示不是成员。如果希望把固定服务器角色的某个成员删除,那么可以使用sp_dropsrvrolemember存储过程。删除固定服务器角色的登录名成员,只是表示该登录名成员不是当前固定服务器角色的成员,但是依然作为系统的登录名存在。固定服务器角色和登录名4、管理数据库用户数据库用户是数据库级的主体,是登录名在数据库中的映射,是在数据库中执行操作和活动的行动者。在MicrosoftSQLServer2008系统中,数据库用户不能直接拥有表、视图等数据库对象,而是通过架构拥有这些对象。数据库用户管理包括创建用户、查看用户信息、修改用户、删除用户等操作。可以使用CREATEUSER语句在指定的数据库中创建用户。由于用户是登录名在数据库中的映射,因此在创建用户时需要指定登录名。创建登录名的数据库用户4、管理数据库用户创建带有默认架构的数据库用户4、管理数据库用户查看和dbo如果希望查看数据库用户的信息,可以使用

sys.database_principals目录视图。该目录视图包含了有关数据库用户的名称、ID、类型、默认的架构、创建日期和最后修改日期等信息。dbo是数据库中的默认用户。SQLServer系统安装之后,dbo用户就自动存在了。dbo用户拥有在数据库中操作的所有权限。默认情况下,sa登录名在各数据库中对应的用户是dbo用户。激活guest用户维护用户可以使用ALTERUSER语句修改用户。修改用户包括两个方面,第一,可以修改用户名;第二可以修改用户的默认架构。修改用户名与删除、重建用户是不同的。修改用户名仅仅是名称的改变,不是用户与登录名对应关系的改变,也不是用户与架构关系的变化。5、管理架构架构是形成单个命名空间的数据库实体的集合。架构是数据库级的安全对象,也是MicrosoftSQLServer2008系统强调的特点,是数据库对象的容器。数据库用户不能直接拥有表、视图等数据库对象,而是通过架构拥有这些对象,这称为架构与用户分离。服务器自动为非限定对象指定一个默认的架构,从而使得用户在访问默认架构中的对象时,不需再指定架构名称。当访问非默认架构中的对象时,需要使用带有架构名的完整名称。对象的完整名称被称为完全限定标识符,其通用格式如下:

[<服务器名.>][<数据库名.>][<架构名.>]<数据库对象名>管理架构包括创建架构、查看架构的信息、修改架构及删除架构等。使用CREATESCHEMA语句不仅可以创建架构,同时还可以创建该架构所拥有的表、视图并且可以对这些对象设置权限。创建架构创建有明确所有者的架构创建架构创建架构时同时创建一个表创建架构查看和修改数据库中的架构信息如果要查看数据库中的架构信息,可以使用sys.schemas架构目录视图。该视图包含了数据库中架构的名称、架构的标识符和架构所有者的标识符等信息。修改架构是指将特定架构中的对象转移到其他架构中。可以使用ALTERSCHEMA语句完成对架构的修改。转移对象的架构删除架构6、数据库角色数据库角色是数据库级别的主体,也是数据库用户的集合。数据库用户可以作为数据库角色的成员,继承数据库角色的权限。数据库管理人员可以通过管理角色的权限来管理数据库用户的权限。MicrosoftSQLServer2008系统提供了一些固定数据库角色和public特殊角色。管理数据库角色包括创建数据库角色、添加和删除数据库角色成员、查看数据库角色信息及修改和删除角色等。创建带有所有者的角色如果要为角色添加成员,可以使用sp_addrolemember存储过程。使用该存储过程可以为当前数据库中的数据库角色添加数据库用户、数据库角色、Windows登录名和Windows组。sp_addrolemember存储过程的使用方式如下所示:

sp_addrolemember'role_name','security_account'与sp_addrolemember存储过程相对应的是sp_droprolemember存储过程,后者可以删除指定数据库角色中的成员。可以使用sys.database_principals安全性目录视图查看当前数据库中所有数据库角色信息,使用sys.database_role_members安全性目录视图查看当前数据库中所有数据库角色和其成员的信息。如果要修改数据库角色的名称,可以使用ALTERROLE语句。如果某个角色确实不再需要了,可以使用DROPROLE语句删除指定的角色。固定数据库角色就像固定服务器角色一样,固定数据库角色也具有了预先定义好的权限。使用固定数据库角色可以大大简化数据库角色权限管理工作。MicrosoftSQLServer2008系统提供了9个固定数据库角色。角色名称意义所具有的权限与功能public特殊的公共角色所有数据库用户都属于它的成员,并自动继承它的权限db_owner数据库所有者拥有执行数据库所有操作的权限db_accessadmin数据库访问权限管理员拥有增、删数据库用户、工作组及角色的权限db_ddladmin数据库DDL管理员拥有在数据库中运行DDL命令的权限db_securityadmin数据库安全管理员拥有角色成员身份管理和权限管理的权限db_backupoperator数据库备份管理员拥有备份和恢复数据库的权限db_datareader数据检索管理员拥有读取数据库中所有表的数据的权限db_datawriter数据维护管理员拥有对数据库所有表的数据执行增、删、改操作的权限db_denydatareader禁止数据检索管理员禁止读取数据库中所有表的数据db_denydatawriter禁止数据维护管理员禁止对数据库所有表的数据执行增、删、改操作public角色除了9个固定数据库角色之外,MicrosoftSQLServer系统成功安装之后,还有一个特殊的角色,这就是public角色。public角色有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。固定数据库角色都有预先定义好的权限,但是不能为这些角色增加或删除权限。虽然初始状态下public角色没有任何权限,但是可以为该角色授予权限。7、管理应用程序角色应用程序角色是一个数据库主体,它可以使应用程序能够用其自身的、类似用户的权限来运行。在使用应用程序时,仅允许特定用户来访问数据库中的特定数据,如果不使用这些特定的应用程序连接,就无法访问这些数据。从而实现安全管理的目的。与数据库角色相比来说,应用程序角色有3个特点:第一,在默认情况下该角色不包含任何成员;第二,在默认情况下该角色是非活动的,必须激活之后才能发挥作用;第三,该角色有密码,只有拥有应用程序角色正确密码的用户才可以激活该角色。当激活某个应用程序角色之后,用户会失去自己原有的权限,转而拥有应用程序角色的权限。创建应用程序角色激活应用程序角色修改应用程序角色8、管理权限权限是执行操作、访问数据的通行证。只有拥有了针对某种安全对象的指定权限,才能对该对象执行相应的操作。在MicrosoftSQLServer2008系统中,不同的对象有不同的权限。为了更好地理解权限管理的内容,下面从权限的类型、常用对象的权限、隐含的权限、授予权限、收回权限、否认权限等几个方面介绍。权限的类型在MicrosoftSQLServer2008系统中,不同的分类方式可以把权限分成不同的类型。如果依据权限是否预先定义,可以把权限分为预先定义的权限和预先未定义的权限。预先定义的权限是指那些系统安装之后,不必通过授予权限即拥有的权限。预先未定义的权限是指那些需要经过授权或继承才能得到的权限。对象权限如果按照权限是否与特定的对象有关,可以把权限分为针对所有对象的权限和针对特殊对象的权限。针对所有对象的权限表示这种权限可以针对SQLServer系统中所有的对象,例如,CONTROL权限是所有对象都有的权限。在MicrosoftSQLServer2008系统中,针对所有对象的权限包括CONTROL、ALTER、ALTERANY、TAKEOWNERSHIP、INPERSONATE、CREATE、

VIEWDEFINITION等。针对特殊对象的权限是指某些权限只能在指定的对象上起作用,例如INSERT可以是表的权限,但是不能是存储过程的权限,而

温馨提示

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

评论

0/150

提交评论