第6章数据库的安全性P130数据库的特点之一是DBMS提供统一的数据保护功能,以保证数据的安全可靠和正确有效。数据库的数据保护主要包括:数据的安全性和数据的完整性。本章讨论数据的安全性6.1计算机安全性概论数据库的安全性:指保护数据库以防止不合法的使用造成数据泄露、更改或破坏。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。1.计算机系统的安全性指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。计算机系统的安全性分为:(1)技术安全类(2)管理安全类(3)政策法律类2.安全标准简介P131TCSEC、ITSEC和CC制定标准的目的:(1)提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程度进行评估。(2)给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好地满足敏感应用的安全需求。信息安全发展的历史:P132图4.11991年4月美国国家计算机安全中心发布了《可信计算机系统评估标准关于可信数据库系统的解释简称TDI,将TCSEC(美国国防部TrustedComputerSystemsEvaluationCriteria)扩展到数据库管理系统。TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全级别评估的标准。TDI/TCSEC标准的基本内容TDI从四个方面描述安全性级别划分的指标:(1)安全策略(2)责任(3)保证(4)文档每个方面又细分为若干项。安全等级的划分根据计算机系统对上述各项指标的支持情况,TDl将系统划分为四组七个等级:DC(Cl,C2)B(B1,B2,B3)A(A1),按系统可靠或可信程度逐渐增高,P13210ITSEC-欧洲标准ITSECInformationTechnologySecurityEvaluationCriteria英法德荷四国制定是欧洲多国安全评价方法的综合产物,应用领域为军队、政府和商业。该标准将安全概念分为功能与评估两部分。功能准则从F1~F10共分10级。1~5级对应于TCSEC的D到A。F6至F10级分别对应数据和程序的完整性、系统的可用性、数据通信的完整性、数据通信的保密性以及机密性和完整性。与TCSEC不同,它并不把保密措施直接与计算机功能相联系,而是只叙述技术安全的要求,把保密作为安全增强功能。另外,TCSEC把保密作为安全的重点,而ITSEC则把完整性、可用性与保密性作为同等重要的因素。ITSEC定义了从E0级(不满足品质)到E6级(形式化验证)的7个安全等级,对于每个系统,安全功能可分别定义。11CC(CommonCriteria)美英法德荷加六国制定的共同标准包含的类FAU安全审计FCO通信FCS密码支持FDP用户数据保护FIA标识与鉴别FMT安全管理FPR隐私FPTTSF保护(固件保护,TOESecurityFunctions,TOESecurityPolicy,(TargetOfEvaluation))FRU资源利用FTATOE访问FTP可信信道/路径12CC分为三个部分:第1部分简介和一般模型,正文介绍了CC中的有关术语、基本概念和一般模型以及与评估有关的一些框架,附录部分主要介绍保护轮廓(PP)和安全目标(ST)的基本内容。第2部分安全功能要求,按类--子类--组件的方式提出安全功能要求,每一个类除正文以外,还有对应的提示性附录作进一步解释。第3部分“安全保证要求”,定义了评估保证级别,介绍了PP和ST的评估,并按“类--子类--组件”的方式提出安全保证要求13CC的三个部分相互依存,缺一不可。第1部分是介绍CC的基本概念和基本原理第2部分提出了技术要求第3部分提出了非技术要求和对开发过程、工程过程的要求。这三部分的有机结合具体体现在PP和ST中,PP和ST的概念和原理由第1部分介绍,PP和ST中的安全功能要求和安全保证要求在第2、3部分选取,这些安全要求的完备性和一致性,由第2、3两部分来保证。CC作为评估信息技术产品和系统安全性的世界性通用准则,是信息技术安全性评估结果国际互认的基础。14CC、TCSEC、ITSEC对应关系CCTCSECITSEC-DE0EAL1--EAL2C1E1EAL3C2E2EAL4B1E3EAL5B2E4EAL6B3E5EAL7A1E66.2数据库安全性控制在一般计算机系统中,安全措施是一级一级层层设置的。P1356.2.1用户标识与鉴别用户标识和鉴别是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份,每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。常用的方法(1)用户名+口令(2)更复杂的方法例:每个用户都预先约定好一个函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的函数进行计算,系统根据计算结果是否正确进一步鉴定用户身份。6.2.2存取控制P136数据库安全最重要的一点:确保只授权给有资格的用户访问数据库,主要通过数据库系统的存取控制机制实现。存取控制机制主要包括两部分:1.定义用户权限,系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称为安全规则或授权规则。用户权限:指不同的用户对于不同的数据对象允许执行的操作权限。2.合法权限检查,用户发出存取数据库的操作请求后,DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统拒绝执行此操作。用户权限定义和合法权检查机制一起组成了DBMS的安全子系统。6.2.2.1自主存取控制(DAC)方法自主存取控制方法:(DiscretionaryAccessControl)(1)用户对于不同的数据对象有不同的存取权限;(2)不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。大型数据库管理系统几乎都支持自主存取控制,目前的SQL标准也对自主存取控制提供支持。通过SQL的GRANT语句和REVOKE语句实现。P137表4.3RDB中的存取权限1.数据库用户的操作权限在SQLServer中,可授予数据库用户的权限分为三个层次:(1)在当前数据库中创建数据库对象及进行数据库备份的权限主要有:创建表、视图、存储过程、规则、缺省值对象、函数的权限及备份数据库、日志文件的权限。(2)用户对数据库表的操作权限及执行存储过程的权限主要有:SELECT:对表或视图执行SELECT语句的权限;INSERT:对表或视图执行INSERT语句的权限;UPDATE:对表或视图执行UPDATE语句的权限;DELETE:对表或视图只DELETE语句的权限;REFERENCES:用户对表的主键和唯一索引字段生成外码引用的权限;EXECUTE:执行存储过程的权限。(3)用户对数据库中指定表字段的操作权限主要有:SELECT:对表字段进行查询操作的权限;UPDATE、DELETE、INSERT:对表字段进行更新操作的权限2.书上的语法形式及例子:P137GRANT权限,…[ON对象类型对象名]TO用户或数据库角色,…[WITHGRANTOPTION]注意:必须以合适的身份登录,才能执行以上语句。收回权限P139书上的语句形式:REVOKE权限,…[ON对象类型对象名]FROM用户[角色]1,…,用户[角色]n1.SQLServer的身份认证模式身份认证模式指系统确认用户的方式。有两种方式:(1)WindowsNT认证模式必须将NT网络帐号加入SQLServer中,才能采用此方式。(2)SQLServer认证模式在SQLServer认证模式下,SQLServer服务器要对登录的用户进行身份认证。2.SQLServer的安全管理用户如何才能使用数据库?SQLServer系统登录帐号→某个数据库用户或用户组(数据库角色)中的成员→具有对数据库中数据进行操作的权限。例:(1)创建登录帐号//利用系统存储过程sp_addlogin创建登录帐号,ID:wang,密码:‘dongdong‘,缺省数据库student。execsp_addlogin'wang','dongdong','student'Go界面方式创建登录?注意sp_addlogin与sp_grantlogin的区别。sp_grantlogin用于建立SQLServer与windows帐号的信任关系。exp:Execsp_grantlogin‘Nanjing\chengfang’建立与windows帐号的信任关系。windows帐号格式:“域\用户名”(2)创建数据库用户//为登录帐号‘wang’创建数据库用户,其名为‘wan’。usestudentexecsp_grantdbaccess'wang','wan'(3)给数据库用户赋予操作权限//给wan用户授予对表student的select权限。usestudentgrantselectonstudenttowan问题:如果要创建数据库用户,并对该用户赋予权限,必须以何种身份登录?3.服务器角色与数据库角色角色是被赋予一定权限的组。一个用户如果为某角色的成员,则该用户具有该角色的所有权限。SQLServer给用户提供两类预定义的角色:(1)服务器角色----固定服务器角色)(2)数据库角色-----固定数据库角色)一个角色可有一个或若干个成员,同一角色的成员有相同的权限。固定服务器角色和固定数据库角色都是SQLServer内置的,不能进行添加、修改和删除。用户也可根据需要,创建自己的数据库角色,以便对具有同样操作权限的用户进行统一管理。4.固定服务器角色:sysadmin:系统管理员,可对SQLServer服务器进行所有的管理工作,为最高管理角色。securityadmin:安全管理员,可以管理登录和CREATEDATABASE权限,还可以读取错误日志和更改密码。serveradmin:服务器管理员,具有对服务器进行设置及关闭服务器的权限。setupadmin:设置管理员,添加和删除链接服务器,并执行某些系统存储过程(如sp_serveroption)。processadmin:进程管理员,可以管理磁盘文件。dbcreator:数据库创建者,可以创建、更改和删除数据库。bulkadmin:可执行BULKINSERT语句,但是这些成员对要插入数据的表必须有INSERT权限。BULKINSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。给服务器角色添加成员usestexecsp_addsrvrolemember'wang','sysadmin'//wang为登录帐号5.固定数据库角色db_owner:数据库所有者,可执行数据库的所有管理操作。SQLServer数据库中的每个对象都有所有者,通常创建该对象的用户即为其所有者。其他用户只有在相应所有者对其授权后,方可访问该对象。用户发出的所有SQL语句均受限于该用户具有的权限。例如,CREATEDATABASE仅限于sysadmin和dbcreator固定服务器角色的成员使用。sysadmin固定服务器角色的成员、固定数据库角色的成员以及数据库对象的所有者db_owner都可授予、或收回某个用户或某个角色的权限。db_accessadmin:数据库访问权限管理者,具有添加、删除数据库使用者、数据库角色和组的权限。db_securityadmin:数据库安全管理员,可管理数据库中的权限,如设置数据库表的增、删、改和查询等存取权限。db_ddladmin:数据库DDL管理员,可增加、修改或删除数据库中的对象。db_backupoperator:数据库备份操作员,具有执行数据库备份的权限。db_datareader:数据库数据读取者。db_datawriter:数据库数据写入者,具有对表进行增、删、改的权限。db_denydatareader:数据库拒绝数据读取者