重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

本篇内容为中国人民大学教授王珊、萨师煊的《数据库系统概论》自学课程的复习笔记,学习视频源于小破站(传送门),对应视频P28-P31,属教材“【第一篇 基础篇】”的“【第4章 数据库安全性】”内容。

文章目录


重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】


P28 数据库安全性概述

28.1 数据库的不安全因素

  • 非授权用户对数据库的恶意存取和破坏(非法用户假冒合法用户)
  • 数据库中重要或敏感的数据被泄露(非法用户直接破坏)
    秋后算账——审计
  • 安全环境的脆弱性(大背景即计算机系统的安全性)

28.2 安全标准

重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

  • TCSEC标准
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】
  • CC标准
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

P29 数据库安全性控制1

29.1 用户身份鉴别

  • 最外层安全保护措施
  • 方法:
    ① 静态口令鉴别(易被攻击)
    ② 动态口令鉴别(一次一密)
    ③ 智能卡鉴别
    ④ 生物特征鉴别
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

29.2 存取控制

  • 定义用户权限
  • 合法权限检查
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

29.3 自主存取控制

  • 用户对不同的数据对象有不同的存取权限
  • 不同的用户对同一对象也有不同的权限
  • 用户可以转授权限
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

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;

重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

  • 权限收回(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权限

重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】


P30 数据库安全性控制2

30.1 数据库角色

  • 角色是权限的集合:数据库角色是被命名的一组与数据库操作从相关的权限。避免了语句重复
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】
  • 创建角色
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 数据加密

  • 防止数据库中数据在存储传输过程中的失密
  • 存储加密
    ① 透明存储加密
    ② 非透明存储加密
  • 传输加密
    ① 链路加密(报头+报文都加密)
    ② 端到端加密(只加密报文,不加密报头)
    重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】

31.4 其他安全性保护

  • 推理控制
  • 隐蔽信道

札记:

  • 关系R中能唯一标识一个元组的是它的(主码、候选码、全码)。
  • 关系模式是静态的、稳定的,关系是动态的、随时间变化的。
  • 关系数据模型的基本数据结构是(关系)。

上一篇:Ubuntu 20.04 安装mysql


下一篇:AngularJS服务和路由