1 数据库安全性概述

1.1 数据库的不安全因素

  1. 非授权用户对数据库恶意存取和破坏
  2. 数据库中重要或敏感的数据被泄露
  3. 安全环境的脆弱性

1.2 安全性标准

通用准则 CC Common Criteria

  • D 最低级别DOS
  • C1 初级的自主安全保护,能够实现用户和数据的分离,进行自主存取控制DAC,保护或限制用户权限的传播。
  • C2 安全产品最低档。提供受控的存取控制。Windows2000,Oracle7
  • B1 标记安全保护,对系统的数据加以标记,并对标记的主体和客观实体实行强制存取控制。MAC以及审计等安全机制。是真正意义上的安全产品
  • B2 结构化保护。建立形势话的安全策略模型,并对系统内的所有主体和客体实施DAC和MAC。
  • B3 安全域。TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
  • A1 验证设计。提供B3级保护,并且,给出系统的形式化设计说明和验证。

2 数据库安全性控制

用户身份鉴别、多层存取控制、审计、视图、数据加密

2.1 用户身份鉴别

  • 静态口令鉴别
  • 动态口令鉴别
  • 生物特征鉴别
  • 智能卡鉴别

2.2 存取控制

简介

存取控制主要包括定义用户权限和合法权限检查两部分

  1. 定义用户权限,并将用户权限登记到数据字典当中。安全规则或授权规则
  2. 合法权限检查,当用户发出存取数据库的操作请求后,数据库管理系统查找数据字典,根据安全规则进行合法权限检查。

自主存取控制DAC

  • 在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一存取对象也有不同的权限,而且用户还可以将其拥有的存取权限转手给其他用户。

  • 用户权限组成:数据库对象和操作类型。数据库对象包括数据库基本对象和数据库数据对象。定义存取权限称为授权。

1. 权限类型

对象类型 对象 操作类型
基本对象 模式 CREATE
基本表 CREATE,ALTER
视图 CREATE
索引 CREATE
数据对象 基本表和视图 SELECT,INSERT,UPDATA,DELETE,REFERENCES,ALL PRIVILEGES
属性列 SELECT,INSERT,UPDATE,REFERENCES,ALL PRIVILEGES

2. 授权-数据对象权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
GRANT <操作权限>,...
ON <对象类型> <对象名>,...
TO <用户>,...
WITH GRANT OPTION

# 示例
GRANT SELECT
ON TABLE Student
TO U1;

GRANT ALL PRIVILEGES
ON TABLE Student
TO U2,U3
WITH GRANT OPTION;

GRANT SELECT
ON TABLE SC
TO PUBLIC;

将制定对象的制定操作权限授予制定用户。具有授权资格的角色:数据库管理员、数据对象的创建者、已经拥有该权限的用户。WITH GRANT OPTION获得这个权限的用户已能够继续授权给其他用户。

3. 收回-数据对象权限

1
2
3
4
5
6
7
8
9
10
11
12
REVOKE <权限>,...
ON <对象类型> <对象名>,...
FROM <用户>,...

# 示例
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

REVOKE SELECT
ON TABLE SC
FROM PUBLIC;

用户可以自主决定将数据存取全向授予何人。所以称为自主存取控制。

4. 创建权限-基本对象权限(模式对象权限)

1
2
3
4
5
CREATE USER <username>
[WITH][DBA | RESOURCE | CONNECT]

# 实例

  • 只有系统的超级用户有权创建一个新的用户。
  • 新创建的数据库用户有三种权限CONNECT/RESOURCE/DBA
  • 没有指定,默认是CONNECT权限
  • 每个权限的基本说明:……

5. 数据库角色

定义:数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 角色创建
CREATE ROLE <角色名>

# 2. 给角色授权
GRANT <权限>,<权限>
ON <对象类型>对象名
TO <角色>,...

# 3. 将一个角色授予其他角色或用户
GRANT <role>,...
TO <role>,<user>,...
[WITH ADMINT OPTION]


# 4. 角色权限回收
REVOKE <privilege>,...
ON <对象类型><对象名>,...
FROM <role>,...

强制存取控制MAC

在强制存取控制方法中,每一个数据库对象别标以一定的密级,每一个用户也被授予一个几倍的许可证。对于任意对象,只有具有合法许可证的用户才可以存取。相对比较严格。

2.3 视图机制

为不同的用户定义不同的视图,把数据对象限制在一定的范围内。通过视图机制,把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。

1
2
3
4
5
6
7
8
9
10
11
CREATE  VIEW CS_Student
AS SELECT * FROM Student
WHERE Sdept='CS';

GRANT SELECT
ON CS_Student
TO wp

GRANT ALL PRIVILEGES
ON CS_Student
TO zm;

2.4 审计

审计功能把用户对数据库的所有操作自动记录下来放入审计日志。审计员利用甚至日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。

  • 审计事件
  • 审计功能
  • AUDIT语句和NOAUDIT语句

2.5 数据加密

根据一定的算法将原始数据——明文,变换为不可直接识别的格式——密文。从而使不知道解密算法的人无法获知数据内容。

  • 存储加密
  • 传输加密

2.6 其他安全性保护

推理控制

隐蔽信道

数据隐私保护