第四章-数据库安全性
本章要点
- 知道怎么用SQL语句给用户授权/收回权限
- GRANT
- REVOKE
- 五种安全机制(常考选择题/简答题)
- 用户身份鉴别
- 多层存取控制
- 审计
- 视图
- 数据加密
数据库安全性概述
- 安全性:防止非法用户的非法操作
- 完整性:正确、有效、相容
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
安全标准:TCSEC和CC两个。我国使用的是CC标准(Common Criteria)。
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) |
数据库安全性控制
主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密等安全技术。
用户身份鉴别
- 静态口令识别(e.g. 静态密码)
- 动态口令识别(一次一密)
- 生物特征鉴别(指纹、虹膜等)
- 智能卡鉴别
存取控制
存取控制机制主要包括定义用户权限(并将用户权限登记到数据字典中)和合法权限检查两部分。
定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统(DBMS)。
C2级的数据库管理系统支持自主存取控制(Discretionary Access Control, DAC),B1级的数据库管理系统支持强制存取控制(Mandatory Access Control, MAC)。
自主存取控制方法
用户权限是由两个要素组成的:数据库对象和操作类型。
在数据库系统中,定义存取权限称为授权。
授权:授予与收回(重点)
GRANT语句的一般格式为:
GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>,[,<用户>]...
[WITH GRANT OPTION];
如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。(允许再授权)
能传播权限的有:
- DBA(Data Base Administrator)
- 创建者
- 授权人
e.g. 把查询Student表的权限授给用户U1。
GRANT SELECT
ON TABLE Student
TO U1;
e.g. 把对Student表和Course表的全部操作权限授予用户U2和U3.
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2, U3;
e.g. 把对表SC的查询权限授予所有用户。
GRANT SELECT
ON TABLE SC
TO PUBLIC;
e.g. 把查询Student表和修改学生学号的权限授给用户U4。
GRANT SELECT, UPDATE(Sno)
ON TABLE Student
TO U4;
e.g. 把对表SC的INSERT权限授予U5用户,并允许将此权限再授予其他用户。
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
REVOKE语句的一般格式为:
REVOKE <权限> [,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
注:默认值为CASCADE。
e.g. 把用户U4修改学生学号的权限收回。
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
e.g. 收回所有用户对表SC的查询权限。
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
创建数据库模式的权限
CREATE USER语句一般格式如下:
CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT];
新创建的数据库用户有三种权限:CONNECT, RESOURCE, DBA。(权限从左往右由小到大)
数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
- 角色的创建(CREATE ROLE 角色名)
- 给角色授权(GRANT … ON … TO …)
- 将一个角色授予其他的角色或用户(GRANT … TO … [WITH ADMIN OPTION])
- 角色权限的收回(REVOKE … ON … FROM …)
强制存取控制方法
不是USER在控制,而是按照客体(数据库对象)进行划分。
敏感度标记被分成若干级别,例如**绝密(Top Secret, TS)、机密(Secret, S)、可信(Confidential, C)、公开(Public, P)**等。
⭐当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何课题的存取必须遵循如下规则:
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
- 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
修正规则:主体的许可证级别 ≤ \le ≤客体的密级->主体能写客体
视图机制
通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
审计
把用户所有操作记下来。
**审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。**审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
日志文件:不记录浏览,只记录更新。
e.g. 对修改SC表结构或修改SC表数据的操作进行审计。
AUDIT ALTER, UPDATE
ON SC;
e.g. 取消对SC表的一切审计。
NOAUDIT ALTER, UPDATE
ON SC;
数据加密(了解)
思想:根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文)。
思路:替换、置换、混合
数据加密主要包括存储加密和传输加密。
其他安全性保护(了解)
- 推理控制
- 隐蔽信道
- 数据隐私保护