什么是数据库的安全性
用户身份鉴别
存取控制
视图
审计
数据加密
-
用户身份鉴别
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
-
存取控制
用户权限定义和合法权检查机制一起组成了数据库管理 系统的存取控制子系统
- 自主存取控制
- 授予权限
- 自主存取控制
1. 把查询Student表权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;
2. 把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;
3. 把对表SC的查询权限授予所有用户
GRANT SELECT ON TABLE SC TO PUBLIC;
4. 把查询Student表和修改学生学号的权限授给用户U4
5. GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
对属性列的授权时必须明确指出相应属性列名
- 传播权限
WITH GRANT OPTION 接收权限的用户 可以把获得的权 限再授予其他人
1, 把对表SC的INSERT权限授予用户U5,并允许他再将此 权限授予其他用户
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;
2, U5把对表SC的INSERT权限授予U6
GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
2, U6还可以将此权限授予U7
GRANT INSERT ON TABLE SC TO U7;
- 回收权限
授予用户的权限可以由DBA或其他授权者用REVOKE 语句收回
1. 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
Oracle使用REVOKE UPDATE(Sno) ON Student FROM U4;(后同)
2. 收回所有用户对表SC的查询权限
REVOKE SELECT ON TABLE SC FROM PUBLIC;
3. 把用户U5对SC表的INSERT权限收回
REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回 系统收回直接或间接从U5处获得的权限
创建数据库模式的权限
创建数据库模式一类的数据库对象的权限由数据库管理 员在创建用户时实现,CREATE USER语句一般格式为
CREATE USER [WITH][DBA|RESOURCE|CONNECT];
1. 只有系统的超级用户才有权创建一个新的数据库用户
2. 新用户有三种权限:CONNECT、RESOURCE和DBA,如没 有指定新用户的权限,默认该用户拥有CONNECT权限。拥有 CONNECT权限的用户只能登录数据库
3. 拥有RESOURCE权限的用户能创建基本表和视图,成为所创 建对象的属主。但不能创建模式,不能创建新用户
4. 拥有DBA权限的用户是数据库管理员,可以创建新用户、创 建模式、创建基本表和视图等;DBA拥有对所有数据库对象 的存取权限,还可以把这些权限授予一般用户
数据库角色
- 数据库角色是被命名的一组与数据库操作相关的权限 , 角色是权限的集合,可以为一组具有相同权限的用户创建一个 角色,使用角色来管理数据库权限可以简化授权的过程
自主存取控制
* 创建角色的SQL语句格式 CREATE ROLE <角色名>
* CREATE ROLE R1;
* 给角色授权
* GRANT SELECT,UPDATE,INSERT ON TABLE Student TO R1;
* GRANT DELETE ON TABLE Student TO R1;
* 将一个角色授予其他的角色或用户 ,GRANT <角色1>[,<角色2>]… TO <角色3>[,<用户1>]… [WITH ADMIN OPTION] ---可以把这种权限授予其他角色
* GRANT R1 TO 王平,张明,赵玲
* 角色权限的收回
* REVOKE R1 FROM 王平;
强制存取控制
数据库管理系统所管理的全部实体 被分为主体和客体两大类
- 主体是系统中的活动实体 : DBMS所管理的实际用户 , 代表用户的各进程
- 客体是系统中的被动实体,受主体操纵 :文件 基表 索引 视图
-
敏感度标记(Label)
- 绝密(Top Secret,TS)
- 机密(Secret,S)
- 可信(Confidential,C)
- 公开(Public,P)
- 密级的顺序:TS>=S>=C>=P
-
主体的敏感度标记称为许可证级别(Clearance Level)
-
客体的敏感度标记称为密级(Classification Level)
-
仅当主体的许可证级别大于或等于客体的密级时,该主 体才能读取相应的客体
-
仅当主体的许可证级别小于或等于客体的密级时,该主 体才能写相应的客体
实例
-
- 传播副本 假设有用户A、B,他们的许可证均为secret,用户A把他的表T (内部数据的密级为secret)的读取权限授予用户B,用户B将数据 备份,并在不征得用户A的同意传播副本给用户C(假设C的许可 证级别为public),用户C仍然无法读取数据
-
- 特洛伊木马模式攻击 假设有攻击者A和合法用户B,A比B的许可证级别低。攻击者A想 获取用户B的TB表的敏感数据,攻击者A的方法是: ① 首先A创建一个表TA,把TA表的插入权限授予用户B; ② 修改用户B使用的应用程序,读取TB表的数据插入到表TA; ③ 等待用户B使用应用程序,把数据插入到用户A的TA表
视图机制
视图可以把要保密的数据对无权存取这些数据的用户隐 藏起来,对数据提供一定程度的安全保护,间接实现支 持存取谓词的用户权限定义
CREATE VIEW CS_StudentAS SELECT * FROM Student WHERE Sdept = 'CS';
GRANT SELECT ON CS_Student TO 王平 ;
GRANT ALL PRIVILIGES ON CS_Student TO 张明;
审计
审计功能把用户对数据库的所有操作自动记录下来放入审计日 志。审计员可以利用审计日志监控数据库中的各种行为,重现 导致数据库现有现状的一系列事件,找出非法存取数据的人、 时间和内容。还可以通过对审计日志分析,对潜在的威胁提前 采取措施加以防范
-
审计功能
-
基本功能,提供多种审计查阅方式
-
提供多套审计规则,审计规则一般在数据库初始化时设 定,以方便审计员管理 ○ 提供审计分析和报表功能
-
审计日志管理功能 :防止审计员误删审计记录
- 审计日志必须先转储后删除
- 对转储的审计记录文件提供完整性和保密性保护
- 只允许审计员查阅和转储审计记录,不允许任何用户新增和修 改审计记录
-
系统提供查询审计设置及审计记录信息的专门视图
-
AUDIT语句用于设置审计功能
- AUDIT ALTER,UPDATE ON SC
-
NOAUDIT语句用于取消审计功能
- NOAUDIT ALTER,UPDATE ON SC;
审计类别
- 用户级审计
- 任何用户可设置的审计
- 主要是用户针对自己创建的数据库表和视图进行审计,记录所 有用户对这些表或视图的一切成功和不成功的访问要求以及各 种类型的SQL操作
- 系统级审计
- 监测成功或失败的登录要求、监测GRANT和REVOKE操作以及 其他数据库级权限下的操作
数据加密
- 防止数据库中数据在存储和传输中失密的有效手段
- 加密的基本思想是根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text),从而 使得不知道解密算法的人无法获知数据的内容
- 数据加密主要包括 ○ 存储加密 ○ 传输加密
存储加密
- 透明存储加密 : 内核级加密保护方式,对用户完全透明 ○ 将数据在写到磁盘时对数据进行加密,授权用户读取数据时再 对其进行解密 ○ 数据库的应用程序不需要做任何修改,只需在创建表语句中说 明需加密的字段即可 ○ 内核级加密方法: 性能较好,安全完备性较高
- 非透明存储加密 : 通过多个加密函数实现*
传输加密
- 链路加密
- 在链路层进行加密
- 传输信息由报头和报文两部分组成
- 报文和报头均加密
- 端到端加密
- 在发送端加密,接收端解密
- 只加密报文不加密报头
- 所需密码设备数量相对较少,容易被非法监听者发现并从中获 取敏感信息
其他安全性保护
推理控制
- 推理控制处理的是强制存取控制未解决的问题,避免用 户利用能够访问的数据推知更高密级的数据
隐蔽信道
- 隐蔽信道处理的问题也是强制存取控制未解决的问题
数据隐私保护
- 所谓数据隐私是控制不愿被他人知道或他人不便知道的 个人数据的能力
- 数据隐私范围很广,涉及数据管理中的数据收集、数据 存储、数据处理和数据发布等各个阶段