第四章 数据库安全性
一、数据库安全性
数据库的特点:数据可以共享,必然带来数据库的安全性问题。数据共享不是无条件的共享(军事机密)
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
不安全因素:非授权用户对数据库的恶意存取和破坏,重要或敏感的数据被泄露,安全环境的脆弱性
TCSEC/TDI安全级别划分
按系统可靠或可信程度逐渐增高。
- D级:一切不符合更高标准的系统
- C1级:初级的自主安全保护,实现对用户和数据的分离。
-
- 自主存取控制DAC
- C2级:安全产品的最低档次,将C1的DAC进一步细化
- B1级:标记安全保护:安全或可信的文档,对系统的数据加以标记,对标记的主体和客体进行强制存取控制。
- B2级:结构化保护,对系统内所有主体和客体实施DAC和MAC
- B3级:安全域,TCB必须满足访问监控器的要求,提供系统恢复功能
- A1级:验证设计,提供B3保护的同时给出系统形式化设计说明
CC:提出国际公认的表述信息技术的安全性结构,把信息产品的安全要求分为:
- 安全功能需求
- 安全保证要求
CC评估保证级EAL划分:
计算机系统的安全模型:安全措施一级一级层层设置。数据以密码的形式存储到数据库中
二、存取控制
存取控制机制:
- 定义用户权限,将用户权限登记到数据字典中
- 合法权限检查
自主存取控制DAC
C2级,用户对不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限。可以将拥有的存取权限转授给其他用户
自主存取控制方法:
- 通过SQL的GRANT和REVODE语句实现。
授权:定义存储权限(数据库对象、操作类型)
存取控制对象:
授权机制:
- 数据库管理员:拥有所有对象的所有权限,可以授权给不同用户
- 用户:拥有自己建立的对象的全部操作权限
- 被授权的用户如果有继续授权的许可,可以继续把授予的权限授予其他用户
GRANT语句:
1 | GRANT <权限>[,<权限>]... |
WITH GRANT OPTION表示可以再授权
授予全部权限:
1 | GRANT ALL PRIVILIGES |
授予全部用户:
1 | GRANT SELECT |
修改学生学号的权限:
1 | GRANT UPDATE(Sno), SELECT |
用户权限定义表:
REVOKE语句
由授权者收回授予的权限
语法:
1 | REVOKE <权限>[,<权限>]... |
例如:
1 | REVOKE UPDATE(Sno) |
创建数据库模式的权限
数据库管理员再创建用户时实现:
1 | CREATE USER <username> [WITH][DBA|RESOURCE|CONNECT] |
注意:CREATE USER不是SQL标准
三种用户权限:
- CONNECT:默认,不能创建用户、模式、基本表,只能登录数据库
- RESOURCE:能创建基本表和视图,不能创建模式和新用户
- DBA:超级用户,可以创建新的用户、模式、基本表和视图等,拥有对数据库对象的存储权限
数据库角色
被命名的一组域数据库操作相关的权限。角色是权限的集合,可以为一组具有相同权限的用户创建一个角色。
角色的创建:
1 | CREATE ROLE <角色名> |
给角色授权
1 | GRANT <权限>[,<权限>]… |
将一个角色授予其他的角色或用户:
1 | GRANT <角色1>[,<角色2>]… |
角色权限的收回
1 | REVOKE <权限>[,<权限>]… |
REVOKE的执行者是角色的创建者或用于再在这个角色上的ADMIN OPTION
自主存取控制缺点:可能存在数据的无意泄露。(仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记)
解决:对系统控制下的所有主客体实施强制存取控制策略
强制存取控制,MAC
B1级,保证更高程度的安全性。每个数据对象被标以一定的密级,每个用户被授予某一个级别的许可证。
适用于对数据有严格而固定密级分类的部门
实体
MAC中实体被分为主体和客体两大类
- 主体:实际用户,代表用户的各进程
- 客体:系统中的被动实体,受主体操纵(文件,基本表,索引,视图)
敏感度标记:为每个主体和客体的实例指派一个敏感度标记
- 绝密,TopSecret,TS
- 机密,Secret,S
- 可信,Confidential,C
- 公开,Public,P
主体的敏感度标记称为许可证级别;客体的敏感度标记称为密级
强制存取控制规则:
- 仅当主体的许可证级别大于等于客体的密级:可以读取客体
- 仅当主体的许可证级别小于等于客体的密级:写相应的客体
DAC+MA
实现强制存取控制要先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护。
先进行自主存取控制检查,通过的对象再由系统进行强制存取控制检查。
三、视图机制、审计、数据加密及其他
视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来。
审计
启用一个专用的审计日志将用户对数据库的所有操作记录在上面
审计很废时间和空间,DBA可以灵活打开或关闭
-
审计事件:审计数据库服务器发生的事件。
-
系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的
-
语句事件:对SQL语句,如DDL、DML、DQL和DCL语句的审计
-
模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计
审计功能:提供多种审计查阅方式
- 多套审计规则,提供审计分析和报表功能
- 提供查询审计设置及审计记录信息的专门视图
审计级别:
- 用户级审计:任何用户可设置的审计,针对用户自己创建的数据库表和视图
- 系统级审计:只能由数据库管理员设置,监测成功或失败的登录要求、授权和收回操作、其他数据库级权限下的操作。
审计语句:AUDIT(设置审计功能)和NOAUDIT(取消审计功能)
例如:对修改SC表结构或修改SC表数据的操作进行审计
1 | AUDIT ALTER,UPDATE |
取消对SC表的一切审计
ON SC;```
### 数据加密
明文变密文
加密方法:
- 存储加密
- 传输加密
存储加密:
- 透明存储加密:内核级加密保护方式,对用户完全透明
- 非透明存储加密:通过多个加密函数实现
传输加密:
- 链路加密:在链路层进行加密,报文报头均加密
- 端到端加密:发送端加密,接收端解密,只加密报文不加密报头
#### 其他安全性保护
- 推理控制
- 隐蔽信道
- 数据隐私保护