第9章数据库的安全性及SQLServer安全管理2019/10/29.1数据库安全性控制的一般方法9.2SQLServer的安全体系结构9.3SQLServer数据库安全性管理第9章数据库的安全性及SQLServer安全管理2019/10/2数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。数据库管理系统安全性保护,就是通过种种防范措施以防止用户越权使用数据库。安全保护措施是否有效是衡量数据库系统的主要性能指标之一。第9章数据库的安全性及SQLServer安全管理2019/10/29.1数据库安全性控制的一般方法9.1.1安全性级别数据库的完整性尽可能的避免对数据库的无意滥用。数据库的安全性尽可能避免对数据库的恶意滥用。为了防止数据库的恶意滥用,可以在下述不同的安全级别上设置各种安全措施。(1)环境级:对计算机系统的机房和设备加以保护,防止物理破坏。(2)职员级:对数据库系统工作人员,加强劳动纪律和职业道德教育,并正确的授予其访问数据库的权限。(3)操作系统级:防止未经授权用户从操作系统层着手访问数据库。(4)网络级:由于数据库系统允许用户通过网络访问,因此,网络软件内部的安全性对数据库的安全是很重要的。(5)数据库系统级:检验用户的身份是否合法,检验用户数据库操作权限是否正确。本节主要讨论数据库系统级的安全性问题。第9章数据库的安全性及SQLServer安全管理2019/10/29.1.2数据库安全控制的一般方法数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。标识与鉴别用户标识和鉴别是DBMS提供的最外层保护措施。用户每次登录数据库时都要输入用户标识,DBMS进行核对后,对于合法的用户获得进入系统最外层的权限。用户标识和鉴别的方法很多,常用的方法有:身份(Identification)认证用户的身份,是系统管理员为用户定义的用户名(也称为用户标识、用户账号、用户ID),并记录在计算机系统或DBMS中。身份认证,是指系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。若是,则可以进入下一步的核实;否则,不能使用系统。第9章数据库的安全性及SQLServer安全管理2019/10/2口令(Password)认证用户的口令,是合法用户自己定义的密码。为保密起见,口令由合法用户自己定义并可以随时变更。口令认证是为了进一步对用户核实。通常系统要求用户输入口令,只有口令正确才能进入系统。随机数运算认证随机数认证实际上是非固定口令的认证,即用户的口令每次都是不同的。鉴别时系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输送到计算机,系统根据用户计算结果判定用户是否合法。例如算法为:“口令=随机数平方的后三位”,出现的随机数是36,则口令是296。第9章数据库的安全性及SQLServer安全管理2019/10/2存取控制(授权机制)DBMS的存取控制机制是数据库安全的一个重要保证,它确保具有数据库使用权限的用户访问数据库并进行权限范围内的操作,同时令未被授权的用户无法接近数据。存取机制的构成存取控制机制主要包括两部分:•定义用户权限用户权限是指用户对于数据对象能够进行的操作种类。要进行用户权限定义,DBMS必须提供有关定义用户权限的语言,该语言称为数据控制语言DCL。•进行权限检查每当用户发出存取数据库的操作请求后,DBMS首先查找数据字典,进行合法权限检查。如果用户的操作请求没有超出其数据操作权限,则准予执行其数据操作;否则,DBMS将拒绝执行此操作。第9章数据库的安全性及SQLServer安全管理2019/10/2存取机制的类别在自主存取控制方法中,用户对于不同的数据对象可以有不同的存取权限,不同的用户对同一数据对象的存取权限也可以各不相同,用户还可以将自己拥有的存取权限转授给其他用户。在强制存取控制方法中,每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。显然,自主存取控制比较灵活,强制存取控制比较严格。第9章数据库的安全性及SQLServer安全管理2019/10/2视图机制进行存取权限的控制,不仅可以通过授权来实现,而且还可以通过定义用户的外模式来提供一定的安全保护功能。在关系数据库中,可以为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权操作的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。对视图也可以进行授权。视图机制使系统具有数据安全性、数据逻辑独立性和操作简便等优点。第9章数据库的安全性及SQLServer安全管理2019/10/2审计方法审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志(AuditLog)中,一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。由于任何系统的安全保护措施都不可能无懈可击,蓄意盗窃、破坏数据的人总是想方设法打破控制,因此审计功能在维护数据安全、打击犯罪方面是非常有效的。由于审计通常是很费时间和空间的,因此DBA要根据应用对安全性的要求,灵活打开或关闭审计功能。第9章数据库的安全性及SQLServer安全管理2019/10/2数据加密对高度敏感数据(例如财务、军事、国家机密等数据),除了以上安全性措施外,还应该采用数据加密技术。数据加密是防止数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(称为明文)变换为不可直接识别的格式(称为密文),从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种:替换方法使用密钥将明文中的每一个字符转换为密文中的字符。置换方法将明文的字符按不同的顺序重新排列。单独使用这两种方法的任意一种都是不够安全的。但是将这两种方法结合起来就能达到相当高的安全程度。第9章数据库的安全性及SQLServer安全管理2019/10/29.1.3关系数据库标准语言SQL的自主存取控制方法SQL标准对自主存取控制提供了支持,其DCL主要是GRANT(授权)语句和REVOKE(收权)语句。关系中的用户权限用户权限主要包括数据对象和操作类型两个要素。定义用户的存取权限称为授权。表9-1不同类型数据对象的操作权限数据对象操作权限表、视图、列(TABLE)SELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGE基本表(TABLE)ALTER,INDEX数据库(DATABASE)CREATETAB表空间(TABLESPACE)USE系统CREATEDBC第9章数据库的安全性及SQLServer安全管理2019/10/2SQL的存取控制功能--授权和收权语句授权(GRANT)语句格式:GRANT权限[ON对象]TO用户[WITHGRANTOPTION]功能:将指定数据对象的指定权限授予指定的用户。说明:其中,WITHGRANTOPTION选项的作用是允许获得指定权限的用户把权限再授予其他用户。【例9.1】把对读者信息表(readers)中的列“姓名”修改、查询表的权限授予用户user1的语句可以写为:GRANTUPDATE(姓名),SELECTONTABLEreadersTOuser1;【例9.2】把对表readers,books,borrowinf的查询、修改、插入和删除等全部权限授予用户user1和用户user2的语句可以写为:GRANTALLPRIVILIGESONTABLEreaders,books,borrowinfTOuserl,user2;第9章数据库的安全性及SQLServer安全管理2019/10/2【例9.3】把对表books的查询权限授予所有用户。GRANTSELECTONTABLEbooksTOPUBLIC;【例9.4】把在数据库MyDB中建立表的权限授予用户user2。GRANTCREATETABONDATABASEMyDBTOuser2;【例9.5】把对表readers的查询权限授予用户user3,并给用户user3有再授予的权限。GRANTSELECTONTABLEreadersTOuser3WITHGRANTOPTION;【例9.6】用户user3把查询readers表的权限授予用户user4。GRANTSELECTONTABLEreadersTOuser4;第9章数据库的安全性及SQLServer安全管理2019/10/2回收(REVOKE)语句格式:REVOKE权限[ON对象]FROM用户;功能:把已经授予指定用户的指定权限收回。【例9.7】把用户user1修改读者姓名的权限收回。REVOKEUPDATE(姓名)ONTABLEreadersFROMuserl;【例9.8】把用户user3查询readers表的权限收回。REVOKESELECTONTABLEreadersFROMuser3;第9章数据库的安全性及SQLServer安全管理2019/10/29.2SQLServer的安全体系结构9.2.1SQLServer2000的安全体系结构SQLServer2000提供以下4层安全防线:操作系统的安全防线Windows(WindiwsNT或Windows2000Server等)网络管理员负责建立用户组,设置账号并注册,同时决定不同用户对不同系统资源的访问级别。SQLServer的运行安全防线SQLServer通过登录账号设置来创建附加安全层。用户只有登录成功,才能与SQLServer建立一次连接。SQLServer数据库的安全防线SQLServer的特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。SQLServer数据库对象的安全防线SQLServer可以对权限进行管理。保证合法用户即使进入了数据库也不能有超越权限的数据存取操作,即合法用户必须在自己的权限范围内进行数据操作。第9章数据库的安全性及SQLServer安全管理2019/10/29.2.2SQLServer2000的安全认证模式SQLServer2000的安全认证模式安全认证是指数据库系统对用户访问数据库系统时所输入的账号和口令进行确认的过程。安全性认证模式是指系统确认用户身份的方式。SQLServer2000有两种安全认证模式,即Windows安全认证模式和SQLServer安全认证模式。Windows安全认证模式Windows安全认证模式是指SQLServer服务器通过使用Windows网络用户的安全性来控制用户对SQLServer服务器的登录访问。SQLServer的安全认证模式SQLServer安全认证模式要求用户必须输入有效的SQLServer登录账号及口令。这个登录账号是独立于操作系统的登录账号的,从而可以在一定程度上避免操作系统层上对数据库的非法访问。第9章数据库的安全性及SQLServer安全管理2019/10/2设置SQLServer2000的安全认证模式使用SQLServer2000企业管理器功能选择需要的安全认证模式,其步骤如下:1)在企业管理器中扩展开SQL服务器组,右击需要设置的SQL服务器,在弹出的菜单中选择【编辑SQLServer注册属性】命令。2)在弹出的“已注册的SQLServer属性”对话框(见图9-1)的【连接】区域有身份验证的两个单选框。单击【使用Windows身份验证[W]】为选择集成安全认证模式;单击【使用SQLServer身份验证[Q]】则为选择SQLServer2000安全认证模式。第9章数据库的安全性及SQLServer安全管理2019/10/2图9-1编辑已注册的SQLServer属性对话框第9章数据库的安全性及SQLServer安全管理2019/10/29.3SQLServer数据库安全性管理SQLServer的安全性管理包括以下几个方面:数据库系统登录管理、数据库用户管理、数据库系统角色管理以及数据库访问权限的