第4章 数据库安全性 | 数据库知识点整理
第4章 数据库安全性
了解
- 计算机系统安全性问题
- 数据库安全性问题
- 威胁数据库安全性因素
掌握
- TCSEC和CC标准的主要内容
- C2级DBMS、B1级DBMS的主要特征DBMS提供的安全措施
-
- 用户身份鉴别、自主存取控制、强制存取控制技术
- 视图技术和审计技术
- 数据加密存储和加密传输
- 使用SQL语言中的GRANT语句和REVOKE语句来实现自主存取控制
知识点
- 什么是数据库的安全性
- 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
- TCSEC/TDI 安全级别划分
- 安全级别 定义
- A1 验证设计(verified design)
- B3 安全域(security domains)
- B2 结构化保护(structural protection)
- B1 标记安全保护(labeled security protection)
- C2 受控的存取保护(controlled access protection)
- C1 自主安全保护(discretionary security protection)
- D 最小保护(minimal protection)
- 评估保证级 定义 TCSEC安全级别(近似相当)
- EAL1 功能测试(functionally tested)
- EAL2 结构测试(structurally tested) C1
- EAL3 系统地测试和检查(methodically tested and checked) C2
- EAL4 系统地设计、测试和复查(methodically designed,tested and reviewed) B1
- EAL5 半形式化设计和测试(semiformally designed and tested) B2
- EAL6 半形式化验证的设计和测试(semiformally verified design and tested) B3
- EAL7 形式化验证的设计和测试(formally verified design and tested) A1
- 用户身份鉴别
该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 - 多层存取控制
通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC) - 视图机制
为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护 - 审计
建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中, DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等 - 数据加密
对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容
- 自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
- 强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
- 自主存取控制中自主的含义是:用户可以将自己拥有的存取权限“自主”地授予别人。即用户具有一定的“自主”权。
- SQL中 的自主存取控制是通过GRANT 语句和 REVOKE 语句来实现的。如:
GRANT SELECT, INSERT ON Student TO 王平 WITH GRANT OPTION; - 就将Student表的SELECT和INSERT权限授予了用户王平,后面的“WITH GRANT OPTION”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平 CASCADE; - 就将Student表 的INSERT权限从用户王平处收回,选项 CASCADE 表示,如果用户王平将Student 的 INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
学生(学号,姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任,班长)- 授予用户U1拥有对两个表的所有权限,并可给其他用户授权
GRANT ALL PRIVILEGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION; - 授予用户U2对学生表具有查看权限,对家庭住址具有更新权限
GRANT SELECT,UPDATE(家庭住址) ON TABLE 学生 TO U2; - 将对班级表查看权限授予所有用户
GRANT SELECT ON TABLE 班级 TO PUBLIC; - 将对学生表的查询、更新权限授予角色R1
GRANT SELECT,UPDATE ON TABLE 学生 TO R1; - 将角色R1授予用户U1,并且U1可继续授权给其他角色
GRANT R1 TO U1 WITH ADMIN OPTION;
职工(职工号,姓名,年龄,职务,工资,部门号)部门(部门号,名称,经理名,地址,电话号)- 用户王明对两个表有SELECT权限
GRANT SELECT ON TABLE 职工,部门 TO 王明;REVOKE SELECT ON TABLE 职工,部门 FROM 王明; - 用户李勇对两个表有INSERT和DELETE权限
GRANT INSERT,DELETE ON TABLE 职工,部门 TO 李勇;REVOKE INSERT,DELETE ON TABLE 职工,部门 FROM 李勇; - 每个职工只对自己的记录有SELECT权限
GRANT SELECT ON TABLE 职工 WHEN USER()=NAME TO ALL;/*这里假定系统的GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。*/REVOKE SELECT ON TABLE 职工 WHEN USER()=NAME FROM ALL; - 用户刘星对职工表有SELECT权限,对工资字段具有更新权限
GRANT SELECT,UPDATE(工资) ON TABLE 职工 TO 刘星;REVOKE SELECT,UPDATE(工资) ON TABLE 职工 FROM 刘星; - 用户张新具有修改这两个的结构的权限
GRANT ALTER TABLE ON TABLE 职工,部门 TO 张新;REVOKE ALTER TABLE ON TABLE 职工,部门 FROM 张新; - 用户周平具有对两个表的所有权限(读,插、改、删数据),并具有给其他用户授权的权限
GRANT ALL PRIVILEGES ON TABLE 职工,部门 TO 周平 WITH GRANT OPTION;REVOKE ALL PRIVILEGES ON TABLE 职工,部门 FROM 周平; - 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资
/*首先建立一个视图,然后对这个视图定义杨兰的存取权限*/GRANT VIEW 部门工资 ASSELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)FROM 职工,部门WHERE 职工.部门号=部门.部门号GROUP BY 职工.部门号;GRANT SELECT ON TABLE 部门工资 TO 杨兰;REVOKE SELECT ON TABLE 部门工资 FROM 杨兰;DROP VIEW 部门工资;
- 主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程
- 客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等
- 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记。敏感度标记被分成若干级别,如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级
- 假设要对关系变量S进行强制存取控制,为简化起见,假设要控制存取的数据单元是元组,则每个元组标以密级,如下表所示(4=绝密,3=机密,2=秘密) 假设系统的存取规则是
-
- 仅当主体的许可证级别大于或等于客体的密级时才能读取相应的客体
- 仅当主体的许可证级别小于或等于客体的密级时才能写相应的客体
- 假定用户U1和U2的许可证级别分别为3和2,则根据规则用户U1能读元组S1和S2,可修改元组S2;用户U2只能读元组S1,修改元组S1
- 审计功能是指DBMS的审计模块在用户对数据库执行操作的同时,把所有操作自动记录到系统的审计日志中
- 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,审计员可以根据审计日志中记录的信息,分析和重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等
补充
-
- 强制存取控制策略是TCSEC/TDI【B1】级安全级别的特色
- SQL的GRANT和REVOKE语句可以用来实现【自主存取控制】
- 在强制存取控制机制中,当主体的许可证级别等于客体的密级时,主体可以对客体进行【读取、写入】
- 数据库安全技术包括【用户身份鉴别】【自主存取控制和强制存取控制】【视图】【审计】【数据加密】
- 在数据加密技术中,原始数据通过某种加密算法变换为不可直接识别的格式,称为【密文】
- 数据库角色实际上是一组与数据库操作相关的各种【权限】
- 在对用户授予列INSERT权限时,一定要包含对【主码】的INSERT权限,否则用户的插入会因为空值被拒绝。除了授权的列,其他列的值或者取【空值】,或者为【默认值】
- 【出入机房登记和加锁】不属于实现数据库系统安全性主要技术和方法
- SQL中的视图提高了数据库系统的【安全性】
- SQL语言的GRANT和REMOVE语句主要是用来维护数据库的【安全性】
- 在数据库的安全性控制中,授权的数据对象的【范围越小】,授权子系统就越灵活