4. 数据库安全性
        
    
        
    
### 数据库安全性
- 保护数据库
- 防止不合法使用所造成的数据泄露, 更改或破坏
- 数据库安全性
- 数据库完整性
    
    
### 安全措施
- 用户身份鉴别
- 存取控制
- 视图
    
    
### 数据库的不安全因素
- 非授权用户恶意访问和破坏
- 重要或敏感数据泄露
- 脆弱的安全环境
    
    
### 非授权用户恶意访问和破坏
- 用户身份鉴别
- 存取控制
- 视图
    
    
### 重要或敏感数据泄露
- 强制存取控制
- 数据加密存储
- 加密存储
    
    
### 脆弱的安全环境
- 安全标准
- 安全性能指标
    
    
### 数据库安全性控制
- 用户: 用户标识和鉴别
- 数据库管理系统: 数据库安全保护
- 操作系统: 操作系统安全保护
- 数据库: 数据库密码存储
    
    
### 用户身份鉴别
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
    
    
### 存取控制
- 定义用户权限
- 登记到数据字典中
- 使用时合法权限检查
    
    
### 存取控制
- 自主存取控制 (DAC)
- 强制存取控制 (MAC)
    
    
### 自主存取控制
- GRANT 语句
- REVOKE 语句
    
    
### 存取控制的对象: 模式
- 模式: CREATE SCHEMA
- 基本表: CREATE TABLE, ALTER TABLE
- 视图: CREATE VIEW
- 索引: CREATE INDEX
    
    
### 存取控制的对象: 数据
- 基本表和视图: SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALL PRIVILEGES
- 属性列: SELECT, INSERT, UPDATE, REFERENCES, ALL PRIVILEGES
    
    
### 授权: GRANT
    GRANT <权限> [, <权限> ...]
    ON <对象类型> <对象名> [, <对象类型> <对象名> ...]
    TO <用户> [, <用户> ...]
    [WITH GRANT OPTION];
- 将指定操作对象的指定操作权限授予指定的用户
    
    
### GRANT 语句
- 可以由已经拥有该权限的用户发出
- 可以由 DBA 或属主发出
- WITH GRANT OPTION 子句可以将该权限再授予其他用户
- 不允许循环授权
    
    
### 例 1
    GRANT SELECT
    ON TABLE Student
    TO U1;
- 将对表 Student 的查询权限授予用户 U1
    
    
### 例 2
    GRANT ALL PRIVILEGES
    ON TABLE Student, Course
    TO U2, U3;
- 将对表 Student 和 Course 的全部操作权限授予用户 U2 和 U3
    
    
### 例 3
    GRANT SELECT
    ON TABLE SC
    TO PUBLIC;
- 将对表 SC 的查询权限授予所有用户
    
    
### 例 4
    GRANT UPDATE (Sno), SELECT
    ON TABLE Student
    TO U4;
- 将对表 Student 的查询权限和修改学生学号的权限授予用户 U4
    
    
### 例 5
    GRANT INSERT
    ON TABLE SC
    TO U5
    WITH GRANT OPTION;
- 将对表 SC 的插入权限授予用户 U5
- 并允许用户 U5 将此权限再授予其他用户
    
    
### GRANT 语句
- 可以一次向一个用户授权
- 可以一次向多个用户授权
- 可以一次传播多个同类对象的权限
- 可以一次完成对不同对象的授权
    
    
### 取消授权: REVOKE
    REVOKE <权限> [, <权限> ...]
    ON <对象类型> <对象名> [, <对象类型> <对象名> ...]
    FROM <用户> [, <用户> ...]
    [CASCADE|RESTRICT];
    
    
### 例 8
    REVOKE UPDATE (Sno)
    ON TABLE Student
    FROM U4;
- 收回用户 U4 对修改学生学号的权限
    
    
### 例 9
    REVOKE SELECT
    ON TABLE SC
    FROM PUBLIC;
- 收回所有用户对表 SC 的查询权限
    
    
### 例 10
    REVOKE INSERT
    ON TABLE SC
    FROM U5 CASCADE;
- 收回用户 U5 对表 SC 的插入权限
- 并级联收回 U5, U6 和 U7 的权限
    
    
### 视图机制
- 限制不同用户对数据对象的访问范围
- 可以将需要保密的数据隐藏起来
    
    
### 例 14
    CREATE VIEW CS_Student AS
    SELECT *
    FROM Student
    WHERE Sdept='CS';
    GRANT SELECT ON CS_Student TO 王平;
    GRANT ALL PRIVILEGES ON CS_Student TO 张明;
- 创建视图 CS_Student
- 王平只能检索计算机系学生的信息
- 张明拥有检索和修改计算机系学生信息的所有权限
    
    
### 审计
- 将用户对数据库的所有操作自动记录到审计日志中
- 审计员可以利用审计日志监控数据库中的各种行为
- 通常比较耗费时间和空间
- 主要用于安全性要求较高的部门
    
    
### 审计事件
- 服务器事件
- 系统权限
- 语句事件
- 模式对象事件
- 用户鉴别
- 自主访问控制
- 强制访问控制
    
    
### 审计内容
- 普通用户和特权用户的行为
- 各种表操作
- 身份鉴别
- 自主和强制访问控制等操作
    
    
### 审计功能
- 基本功能
- 审计规则
- 审计分析
- 报表功能
- 审计日志管理功能
    
    
### 数据加密
- 利用特定的算法
- 将原始数据 (明文)
- 转换为不可直接识别的格式 (密文)
    
    
### 数据加密
- 存储加密
- 传输加密
    
    
### 存储加密
- 透明存储加密
- 非透明存储加密
    
    
### 透明存储加密
- 在内核级别加密
- 对用户完全透明
    
    
### 传输加密
- 链路加密
- 端到端加密
    
    
### 链路加密
- 对传输数据在链路层加密
- 同时加密报头和报文
    
    
### 端到端加密
- 在发送端加密
- 在接收端解密
- 只加密报文
- 不加密报头
    
    

    
    
### 4. 数据库安全性
- 什么是数据库安全性?
- 列举三种用户身份鉴别的方式.
- GRANT 语句和 REVOKE 语句分别用于什么?
- 什么是 WITH GRANT OPTION, 它有什么用途?
- 视图如何帮助实现数据的安全?
- 审计日志中通常记录哪些类型的事件?
----
[ 3.6 数据库的实施和维护](dbpa-5-2.html#/a44)
[| 练习 |](dbpa-exec.html)
[ 5.1 数据库完整性](dbpa-6-2.html#/overview)