第4章 数据库安全性
1.什么是数据库的安全性?
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2举例说明对数据库安全性产生威胁的因素。
答:(1)滥用过高权限:当用户(或应用程序)被授予超出了其工作职能所需的数据库访问权限时,这些权限可能会被恶意滥用。例如,一个大学管理员在工作中只需要能够更改学生的联系信息,不过他可能会利用过高的数据库更新权限来更改分数。
(2)滥用合法权限:用户还可能将合法的数据库权限用于未经授权的目的。假设一个恶意的医务人员拥有可以通过自定义Web应用程序查看单个患者病历的权限。通常情况下,该Web应用程序的结构限制用户只能查看单个患者的病史,即无法同时查看多个患者的病历并且不允许复制电子副本。但是,恶意的医务人员可以通过使用其他客户端(如MS-Excel)连接到数据库,来规避这些限制。通过使用MS-Excel以及合法的登录凭据,该医务人员就可以检索和保存所有患者的病历。
(3)权限提升:攻击者可以利用数据库平台软件的漏洞将普通用户的权限转换为管理员权限。漏洞可以在存储过程、内置函数、协议实现甚至是SQL语句中找到。例如,一个金融机构的软件开发人员可以利用有漏洞的函数来获得数据库管理权限。使用管理权限,恶意的开发人员可以禁用审计机制、开设伪造的帐户以及转帐等。
3试述信息安全标准的发展历史,试述CC评估保证级划分的基本内容。
答:(1)信息安全标准的发展历史如下:
①TCSEC是指1985年美国国防部正式颁布的《可信计算机系统评估准则》(简称TCSEC)。
在TCSEC推出后的十年里,不同国家都开始开发建立在TCSEC概念上的评估准则,如欧洲的信息技术安全评估准则(ITSEC)、加拿大的可信计算机产品评估准则(CTCPEC)、美国的信息技术安全联邦标准(FC)草案等。
②CTCPEC、FC、TCSEC和ITSEC的发起组织于l993年起开始联合行动,解决原标准中概念和技术上的差异,将各自独立的准则集合成一组单一的、能被广泛使用的IT安全准则,这一行动被称为CC项目。CC V2.1版于1999年被ISO采用为国际标准,2001年被我国采用为国家标准。目前CC已经基本取代了TCSEC,成为评估信息产品安全性的主要标准。
③1991年4月美国NCSC颁布了《可信计算机系统评估准则关于可信数据库系统的解释》(简称TDI),将TCSEC扩展到数据库管理系统。TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
④TDI/TCSEC从四个方面来描述安全性级别划分的指标:安全策略、责任、保证和文档。每个方面又细分为若干项。根据计算机系统对各项指标的支持情况,TDI/TCSEC将系统划分为四组七个等级,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系统可靠或可信程度逐渐增高。
⑤CC提出了目前国际上公认的表述信息技术安全性的结构,即把对信息产品的安全要求分为安全功能要求和安全保证要求。安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。安全功能要求和安全保证要求都以“类-子类-组件”的结构表述,组件是安全要求的最小构件块。
(2)评估保证级是在CC第三部分中预先定义的由保证组件组成的保证包,每一保证包描述了一组特定的保证要求,对应着一种评估保证级别。
从EAL1至EAL7共分为七级,按保证程度逐渐增高,如表4-1所示。
表4-1 CC评估保证级划分
4试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:
(1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。
(3)视图机制:为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
5什么是数据库中的自主存取控制方法和强制存取控制方法?
答:(1)自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限,防止不合法用户对数据库的存取。
(2)强制存取控制方法:每一个数据对象被强制地标以一定的密级,每一个用户也被强制地授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
6对下列两个关系模式:学生(学号,姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任,班长)使用GRANT语句完成下列授权功能:
(1)授予用户U1对两个表的所有权限,并可给其他用户授权。
(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
(3)将对班级表查看权限授予所有用户。
(4)将对学生表的查询、更新权限授予角色R1。
(5)将角色R1授予用户U1,并且U1可继续授权给其他角色。
答:(1)GRANT ALL PRIVILIGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION;
(2)GRANT SELECT,UPDATE(家庭地址)ON TABLE 学生 TO U2;
(3)GRANT SELECT ON 班级 TO PUBLIC;
(4)GRANT SELECT,UPDATA ON TABLE 学生 TO R1;
(5)GRANT R1 TO U1 WITH GRANT OPTION;
7今有以下两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)部门(部门员,名称,经理名,地址,电话号)
请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
(1)用户王明对两个表有SELECT权限。
(2)用户李勇对两个表有INSERT和DELETE权限。
(3)每个职工只对自己的记录有SELECT权限。
(4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。
(5)用户张新具有修改这两个表的结构的权限。
(6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户,授权的权限。
(7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。
答:(1)用户王明对两个表有SELECT权力的语句为:
GRANT SELECT ON 职工,部门 TO 王明;
(2)用户李勇对两个表有INSERT和DELETE权力的语句为:
GRANT INSERT,DELETE ON 职工,部门 TO 李勇;
(3)每个职工只对自己的记录有SELECT权力的语句为:
GRANT SELECT ON 职工 WHEN USER()=NAME TO ALL;
(4)用户刘星对职工表有SELECT权力,对工资字段具有更新权力的语句为:
GRANT SELECT,UPDATE(工资)ON 职工 TO 刘星;
(5)用户张新具有修改这两个表的结构的权力的语句为:
GRANT ALTER TABLE ON 职工,部门 TO 张新;
(6)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力的语句为:
GRANT ALL PRIVILIGES ON 职工,部门 TO 周平 WITH GRANT OPTION;
(7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资的语句为:
CREATE VIEW 部门工资 AS SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)FROM 职工,部门 WHERE 职工.部门号=部门.部门号 GROUP BY 职工.部门号 GRANT SELECT ON 部门工资 TO 杨兰;
8针对习题7中(1)~(7)的每种情况,撤销各用户所授予的权限。
答:(1)撤销用户王明对两个表有SELECT权力的语句为:
REVOKE SELECT ON 职工,部门 FROM 王明;
(2)撤销用户李勇对两个表有INSERT和DELETE权力的语句为:
REVOKE INSERT,DELETE ON 职工,部门 FROM 李勇;
(3)撤销每个职工只对自己的记录有SELECT权力的语句为:
REOVKE SELECT ON 职工 WHEN(USER)=NAME FROM ALL;
(4)撤销用户刘星对职工表有SELECT权力,对工资字段具有更新权力的语句为:
REVOKE SELECT,UPDATE ON 职工 FROM 刘星;
(5)撤销用户张新具有修改这两个表的结构的权力的语句为:
REVOKE ALTER TABLE ON 职工,部门 FROM 张新;
(6)撤销用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力的语句为:
REVOKE ALL PRIVILIGES ON 职工,部门 FROM 周平;
(7)撤销用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资的语句为:
REVOKE SELECT ON 部门工资 FROM 杨兰;
DROP VIEW 部门工资;
9解释强制存取控制机制中主体、客体、敏感度标记的含义。
答:(1)主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。
(2)客体是系统中的被动实体,受主体操纵,包括文件、基表、索引、视图等。
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。
(3)敏感度标记被分成若干级别,例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。
10举例说明强制存取控制机制是如何确定主体能否存取客体的。
答:假设要对关系变量S进行MAC控制,为简化起见,假设要控制存取的数据单元是元组,则每个元组标以密级。如表4-2所示:(4=绝密,3=机密,2=秘密)
表4-2 元组的密级
假设用户U1和U2的许可证级别分别为3和2,则根据规则U1能查得元组S1和S2,可修改元组S2;而U2只能查得元组S1,只能修改元组S1。
11什么是数据库的审计功能,为什么要提供审计功能?
答:(1)审计功能是指DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。审计通常是很费时间和空间的,所以DBMS往往都将其作为可选特征,允许DBA根据应用对安全性的要求,灵活地打开或关闭审计功能。审计功能一般主要用于安全性要求较高的部门。
(2)提供审计功能的原因:任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。