本篇内容为中国人民大学教授王珊、萨师煊的《数据库系统概论》自学课程的复习笔记,学习视频源于小破站(传送门),对应视频P28-P31,属教材“【第一篇 基础篇】”的“【第4章 数据库安全性】”内容。
文章目录
P28 数据库安全性概述
28.1 数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏(非法用户假冒合法用户)
- 数据库中重要或敏感的数据被泄露(非法用户直接破坏)
秋后算账——审计 - 安全环境的脆弱性(大背景即计算机系统的安全性)
28.2 安全标准
- TCSEC标准
- CC标准
P29 数据库安全性控制1
29.1 用户身份鉴别
- 最外层安全保护措施
- 方法:
① 静态口令鉴别(易被攻击)
② 动态口令鉴别(一次一密)
③ 智能卡鉴别
④ 生物特征鉴别
29.2 存取控制
- 定义用户权限
- 合法权限检查
29.3 自主存取控制
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户可以转授权限
29.4 授权:授予与收回
- 权限授予GRANT(不允许循环授权)
GRANT <权限> [,<权限>]……
ON <对象类型> <对象名> [,<对象类型> <对象名>]……
TO <用户> [,<用户>]……
[WITH GRANT OPTION];
// 【一种权限授予一个用户】把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
// 【多种权限授予多个用户】把对Student表和Course表的全部权限授给用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2, U3;
// 【授予所有用户】把对SC表的查询权限授给所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
// 【对基本表和属性列不同对象的授权】把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
// 【授权】把对表SC的INSERT权限授给用户U5,并允许其再将此权限授予其他用户
GRANT INSERT // 授给用户U5,并允许其再将此权限授予其他用户
ON TABLE SC
TO U5
WITH GRANT OPTION;
GRANT INSERT // 授给用户U6,并允许其再将此权限授予其他用户
ON TABLE SC
TO U6
WITH GRANT OPTION;
GRANT INSERT // 授给用户U7,不允许再授予其他用户
ON TABLE SC
TO U7;
- 权限收回(REVOKE)
REVOKE <权限> [,<权限>]……
ON <对象类型> <对象名> [,<对象类型> <对象名>]……
FROM <用户> [,<用户>]……[CASCADE | RESTRICT];
// 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
// 收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
// 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE; // 级联收回U6和U7从U5这里获得的INSERT权限
P30 数据库安全性控制2
30.1 数据库角色
- 角色是权限的集合:数据库角色是被命名的一组与数据库操作从相关的权限。避免了语句重复
- 创建角色
CREATE ROLE <角色名>
- 给角色授权
GRANT <权限> [,<权限>]……
ON <对象类型>对象名
TO <角色>[,<角色>]……
- 将一个角色授权其他的角色或用户
GRANT <角色1> [,<角色2>]……
TO <角色3>[,<用户1>]……
[WITH ADMIN OPTION]
- 角色权限的收回
REVOKE <权限> [,<权限>]……
ON <对象类型>对象名
FROM <角色>[,<角色>]……
- 示例
// (1)创建角色R1
CREATE ROLE R1;
// (2)给角色R1授权拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT
ON TABLE Student
TO R1;
// (3)将角色R1授予三个用户:王平,张明,赵玲
GRANT R1
TO 王平, 张明, 赵玲;
// (4)一次性地通过R1来收回王平的这三个权限
REVOKE R1
FROM 王平
30.2 强制存取控制方法
- 自主存取控制(MAC)能够通过授权机制有效地控制对敏感数据的存取,但会存在“无意泄露”。
- 强制存储控制
P31 视图、审计、数据加密及其他安全性保护
31.1 视图机制
- 视图机制间接地是吸纳支持存取为此的用户权限定义。
// 建立计算机系学生的视图
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
// 授予王平老师查询权限
GRANT SELECT
ON CS_Student
TO 王平;
// 授予张明系主任查询以及增删改权限
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;
31.2 审计机制
- 启用一个专用的审计日志(秋后算账:做了什么事情都已经被记录下来了)
- 但是审计很费时间和空间,需要根据实际情况决定采用
// 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER, UPDATE
ON SC;
// 取消对SC表的一切审计
NOAUDIT ALTER, UPDATE
ON SC;
31.3 数据加密
- 防止数据库中数据在存储和传输过程中的失密
- 存储加密
① 透明存储加密
② 非透明存储加密 - 传输加密
① 链路加密(报头+报文都加密)
② 端到端加密(只加密报文,不加密报头)
31.4 其他安全性保护
- 推理控制
- 隐蔽信道
札记:
- 关系R中能唯一标识一个元组的是它的(主码、候选码、全码)。
- 关系模式是静态的、稳定的,关系是动态的、随时间变化的。
- 关系数据模型的基本数据结构是(关系)。