本文所属《数据库系统原理》分类专栏,相关文章导航请点击《数据库系统原理》目录汇总贴

1.数据库安全性概述

数据库的不安全因素:

  1. 非授权用户对数据库的恶意存取和破坏

  2. 数据库中重要或敏感的数据被泄露

  3. 安全环境的脆弱性

紫皮书(TCSEC/TDI)从四个方面来描述安全性级别划分的指标:

  1. 安全策略

  2. 责任

  3. 保证

  4. 文档

紫皮书(TCSEC/TDI)安全级别划分:

(按系统可靠或可信程度逐渐增高)

D

C(C1,C2)

B(B1,B2,B3)

A(A1)

各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力

2.数据库安全性控制

数据库安全性控制的常用方法:

  1. 用户标识和鉴定

  2. 存取控制

  3. 视图

  4. 审计

  5. 数据加密

2.1 用户身份鉴别的方法

  1. 静态口令鉴别

    静态口令一般由用户自己设定,这些口令是静态不变的

  2. 动态口令鉴别

    口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法

  3. 生物特征鉴别

    通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等

  4. 智能卡鉴别

    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能

2.2 存取控制

存取控制机制主要包括:

  1. 定义用户权限

  2. 合法权限检查

C2级的数据库管理系统支持:自主存取控制;

B1级的数据库管理系统支持:强制存取控制。

》自主存取控制

关系数据库系统中的主要存取权限:

对象类型

对象

操 作 类 型

数据库

模式

模式

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语句的一般格式:

语义:将对指定操作对象的指定操作权限授予指定的用户

1
2
3
4
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

发出GRANT语句的可以是:

  1. 数据库管理员

  2. 数据库对象创建者(即属主Owner)

  3. 已经拥有该权限的用户

WITH GRANT OPTION子句:

若指定了:获得权限的用户可以再授予其他用户。(但不允许循环授权)

没有指定:只能使用,不能传播该权限。

REVOKE收回语句

授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回

REVOKE语句的一般格式为:

1
2
3
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

》数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,简化授权的过程。

1.角色的创建

1
CREATE  ROLE  <角色名>

2.给角色授权

1
2
3
GRANT  <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…

3.将一个角色授予其他的角色或用户

1
2
3
GRANT  <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]

4.角色权限的收回

1
2
3
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…

用户可以回收角色的权限,从而修改角色拥有的权限。
REVOKE执行者是:角色的创建者、拥有在这个(些)角色上的ADMIN OPTION。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[例4.11] 通过角色来实现将一组权限授予一个用户。

步骤如下:

1)首先创建一个角色 R1

CREATE ROLE R1;

2)然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限

GRANT SELECT, UPDATE, INSERT
ON TABLE Student
TO R1;

3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

GRANT R1
TO 王平,张明,赵玲;

4) 可以一次性通过R1来回收王平的这3个权限

REVOKE R1
FROM 王平;

-------------------------------------------
[例4.12] 角色的权限修改。
--使角色R1在原来的基础上增加了Student表的DELETE权限
GRANT DELETE
ON TABLE Student
TO R1

-------------------------------------------
[例4.13] 使R1减少了SELECT权限
REVOKE SELECT
ON TABLE Student
FROM R1;

》强制存取控制

(1)在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类

①主体是系统中的活动实体

  • 数据库管理系统所管理的实际用户
  • 代表用户的各进程

②客体是系统中的被动实体,受主体操纵

  • 文件、基本表、索引、视图

(2)敏感度标记(Label)

对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label),敏感度标记分成若干级别:

绝密(Top Secret,TS)
机密(Secret,S)
可信(Confidential,C)
公开(Public,P)

密级次序是:TS>=S>=C>=P

主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)

(3)强制存取控制规则

①仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
②仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体

2.3 视图机制

把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护

间接地实现支持存取谓词的用户权限定义

2.4 审计

①启用一个专用的审计日志(Audit Log):将用户对数据库的所有操作记录在上面

②审计员利用审计日志:监控数据库中的各种行为,找出非法存取数据的人、时间和内容

③C2以上安全级别的DBMS必须具有审计功能

AUDIT语句:设置审计功能

1
2
3
4
[例4.15] 对修改SC表结构或修改SC表数据的操作进行审计

AUDIT ALTER,UPDATE
ON SC;

NOAUDIT语句:取消审计功能

1
2
3
4
[例4.16] 取消对SC表的一切审计

NOAUDIT ALTER,UPDATE
ON SC;

2.5 数据加密

主要包括:

  1. 储存加密

  2. 传输加密

2.6 其他安全性保护

  1. 推理控制

  2. 隐蔽通道

  3. 数据隐私保护


(小结与习题)

1 .什么是数据库的安全性?

答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

2 .数据库安全性和计算机系统的安全性有什么关系?
答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,

3 .SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。

答:

SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:

GRANT SELECT , INSERT ON Student 
TO 王平
WITH GRANT  OPTION ;

就将Student 表的SELECT 和INSERT 权限授予了用户王平,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平CASCADE ;
就将Student 表的INSERT 权限从用户王平处收回,选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。

4 .试述实现数据库安全性控制的常用方法和技术。

答:实现数据库安全性控制的常用方法和技术有:
( l )用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
( 2 )存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。
( 3 )视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

( 4 )审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
( 5 )数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

5.什么是数据库中的自主存取控制方法和强制存取控制方法?

答:

自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。

强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。

**6 .完成下列授权功能: **
(1)

GRANT ALL PRIVILEGES ON Student,Class 
TO U1
WITH GRANT OPTION ;

(2)

GRANT SELECT,UPDATE(家庭住址),DELETE ON Student TO U2;

(3)

GRANT SELECT ON Class TO PUBLIC;

(4)

GRANT SELECT,UPDATE ON Student TO R1;

(5)

GRANT R1 TO U1 WITH ADMIN OPTION ;

7.请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:

( a )用户王明对两个表有SELECT 权力。

 GRANT SELECT ON 职工,部门
 TO 王明

( b )用户李勇对两个表有INSERT 和DELETE 权力。

 GRANT INSERT,DELETE ON 职工,部门
 TO 李勇

( c ) 每个职工只对自己的记录有SELECT 权力。

 GRANT SELECT ON 职工
 WHEN USER()=NAME
 TO ALL;

( d )用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。

 GRANT SELECT,UPDATE(工资) ON 职工
 TO 刘星

( e )用户张新具有修改这两个表的结构的权力。

 GRANT ALTER TABLE ON 职工,部门
 TO 张新;

( f )用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。

 GRANT ALL PRIVILIGES ON 职工,部门
 TO 周平
 WITH GRANT OPTION;

( g )用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。

 CREATE VIEW 部门工资 AS
      SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
      FROM 职工,部门
      WHERE 职工.部门号=部门.部门号
      GROUP BY 职工.部门号
 GRANT SELECT ON 部门工资
 TO 杨兰;

8 .把习题8 中(1)—(7)的每一种情况,撤销各用户所授予的权力

(1)

REVOKE SELECT ON 职工,部门 FROM 王明;

(2)

REVOKE INSERT , DELETE ON 职工,部门 FROM 李勇;

(3)

REOVKE SELECT ON 职工
WHEN USER ( ) =NAME
FROM ALI ;

(4)

REVOKE SELECT , UPDATE ON 职工
FROM 刘星;

(5)

REVOKE ALTER TABLE ON 职工,部门
FROM 张新;

(6)

REVOKE ALL PRIVILIGES ON 职工,部门
FROM 周平;

(7)

REVOKE SELECT ON 部门工资
FROM 杨兰;
DROP VIEW 部门工资;

9.理解并解释MAC 机制中主体、客体、敏感度标记的含义。

答:

主体是系统中的活动实体,既包括DBMS 所管理的实际用户,也包括代表用户的各进程。
客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。
对于主体和 客体,DBMS 为它们每个实例(值)指派一个敏感度标记(Label )。

敏感度标记被分成若干级别,例如绝密(Top Secret )、机密(Secret )· 可信( Confidential )、公开(PubliC )等。主体的敏感度标记称为许可证级别(ClearanCe 玫vel ) ,客体的敏感度标记称为密级(Classification Level )。

11 .什么是数据库的审计功能,为什么要提供审计功能?

答:审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。


课后答案来自CSDN:

[1] https://blog.csdn.net/delete_bug/article/details/105507705

[2] https://blog.csdn.net/qq_37857921/article/details/103671191