数据库系统原理知识点小结(数据库安全)

4.1 数据库安全概述

数据库的不安全因素

  1. 非授权用户对数据库的恶意存取和破坏
  2. 数据库中重要或敏感的数据被泄露
  3. 安全环境的脆弱性

安全标准简介

  1. TCSEC标准
  2. CC标准

4.2 数据库安全性控制

计算机中的系统安全性控制

计算机系统中,安全措施是一级一级层层设置的。
在这里插入图片描述

  • 系统根据用户表示鉴定用户身份,合法用户才准许进入计算机系统
  • 数据库管理系统进行存取控制,只允许用户执行合法操作
  • 操作系统有自己的保护措施
  • 数据以密码形式存储到数据库中

数据库安全性控制

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

1. 用户身份鉴别

  • 系统提供的最外层安全保护措施
  • 用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)

鉴别方法

  1. 静态口令鉴别
    静态口令一般由用户自己设定,这些口令是静态不变的。
  2. 动态口令鉴别
    口令是动态变化的,每次鉴别时均需使用动态产生新的口令登录数据库管理系统,即采用一次一密的方法。
  3. 智能卡鉴别
    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。
  4. 生物特征鉴别
    通过生物特征进行认证的技术,生物特征如指纹,虹膜,掌纹。

合法用户也有可能做不合法的操作。为了使合法用户只能访问他们有权访问的那部分数据,需要对数据库进行存取控制。

2. 存取控制

存取控制组成

  • 定义用户权限,并将用户权限登记到数据字典中
    • 用户对某一数据对象的操作权力称为权限
    • DBMS提供适当的语言来定义用户权限,存放在数据字典中,称作安全规则授权规则
  • 合法权限检查
    • 用户发出存取数据库操作请求
    • DBMS查找出数据字典,进行合法权限检查。

用户权限定义合法权检查机制一起组成了DBMS的存取控制子系统。

自主存取控制方法

  • 用户对不同的数据对象有不同的存取权限
  • 不同的用户对同一对象也有不同的权限
  • 用户还可将其拥有的存取权限转授给其他用户
  • 通过SQL的GRANTREVOKE语句实现。
    在这里插入图片描述
    定义一个存取权限就是定义一个用户在哪些对象上能执行哪些操作。

授权:授予与回收

1. 权限授予:GRANT

GRANT语句的一般格式

GRANT<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO<用户>[,<用户>]...
[WITH GRANT OPTION];	//指定该子句:可以再转授权限,没有指定则不能传播权限

WITH GRANT OPTION

  • 语义:将指定操作对象的指定操作权限授予指定的用户。
  • 不允许循环授权
    在这里插入图片描述
  • 发出GRANT的人员
    • 数据库管理员
    • 数据库对象创建者(即属主Owner)
    • 拥有该权限的用户
  • 按受权限的用户
    • 一个或多个具体用户
    • PUBLIC(即全体用户)
  • 全部权限可以用ALL PRIVILEGES代替
  • 所有用户可以用PUVLIC代替
2. 权限回收:REVOKE

REVOKE语句的一般格式为:

REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
FROM<用户>[,<用户>]...[CASCADE|RESTRICT];
  • CASCADE:级联回收
    DBMS不允许循环授权正是因为如果级联回收找不到授受权限的起始点。
  • RESTRICT:受限回收

数据库角色

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

角色的创建
CREATE ROLE<角色名>
给角色授权

GRANT <权限>[,<权限>]...
ON<对象类型>对象名
TO<角色>[,<角色>]...

将角色授予其他的角色或用户

GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户>]...
[WITH ADMIN OPTION]
  • 指定WITH ADMIN OPTION,则获得权限的角色或用户还可以把这种权限授予其他角色。
  • 授予这是角色的创建者或拥有在这个角色上的ADMIN OPTION。

角色权限的回收

REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>
FROM <角色>[,<角色>]...
  • 用户可以回收角色的权限,从而修改角色拥有的权限
  • REVOKE执行者是
    • 角色的创建者
    • 拥有在这个(些)角色上的ADMIN OPTION
例题
  1. 通过角色来实现权限管理。

创建一个角色R1
CREATE ROLE R1;

使用GRANT语句,使角色R1拥有Student表的SELECT\UPDATE\INSERT权限

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

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

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

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

	REVOKE R1
	FROM 王平;
  1. 增加角色的权限
GRANT DELETE
ON TABLE Student
TO R1;

使角色R1在原来的基础上增加了Student表的DELETE权限。

  1. 减少角色的权限
REVOKE SELECT
ON TABLE Student
FROM R1;

使R1减少了SELECT权限

自主存取控制缺点

可能存在数据的“无意泄露”
例:只有财务人员有权访问职工工资表EMP-Salary

CREATE TABLE Salary-copy
AS SELECT Eno, Name, Salary
FROM EMP-Salary;
//复制表内容

GRANT SELECT
ON TABLE Salary-copy
TO PUBLIC;
//所有人都可以访问职工工资

自主存取控制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全标记。

强制存取控制方法

强制存取控制(MAC)

  • 保证更高程度的安全性
  • 用户不能直接感知或进行控制
  • 适用于对数据又严格而固定密级分类的部门
    • 军事部门
    • 政府部门

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

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

    • 数据库管理系统所管理的实际用户
    • 代表用户的各进程
  • 客体是系统中的被动实体,受主题操纵

    • 文件、基本表、索引、视图
敏感度标记(Label)

自主存取控制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。

  • 绝密(TS)
  • 机密(S)
  • 可信 (C)
  • 公开(P)
  • TS>=S>=C>=P

主体的敏感度标记称为许可证级别
客体的敏感度标记为密级

强制存取控制规则

(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
在这里插入图片描述
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
在这里插入图片描述
在这里插入图片描述

  • 实现强制存取控制MAC时要首先实现自主存取控制DAC
    • 原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
  • 自主存取控制DAC与强制存取控制MAC共同构成数据库管理系统的安全机制
    在这里插入图片描述

3. 视图

把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。
授权只能访问整张表或者表中的列。
授予用户查询整个表的权限

GRANT SELECT
ON TABLE Student
TO U1;

授权用户查询某些列的权限

GRANT SELECT(Sno, Sname)
ON TABLE Student
TO U2;

授予用户查询某些行的权限?

  • 需要用存取谓词来定义用户权限
  • 无法直接用GRANT语句实现
  • 可以用视图机制间接地实现

例:
授权王平老师能查询计算机系学生的情况,授权系主任张明能对计算机系学生地信息进行所有的操作。

step1:
先建立计算机系学生的视图CS_Student

 CREATE VIEW CS_Student
 AS
 SELECT *
 FROM Student
 WHERE Sdept='CS';

step2:
在视图上进一步定义存取权限

 GRANT SELECT
 ON CS_Student
 TO 王平;
GRANT ALL PRIVILIGES
ON CS_Student
TO 张明;

4. 审计

监控措施

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

  • 审计员利用审计日志
    监控数据库中的各种行为
    发现非法存取,发现潜在威胁

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

可以被审计的事件

  • 服务器事件
    • 审计数据库服务器发生的事件
  • 系统权限
    • 对系统拥有的结构或模式对象进行操作的审计
    • 要求该操作的权限是通过系统权限获得的
  • 语句事件
    • 对SQL语句,如DDL\DML\DQL以及DCL语句的审计
  • 模式对象事件
    • 对特定模式对象上进行的SELECT或DML操作的审计

审计功能的可选性

  • 审计很费时间和空间
  • DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能
  • 审计功能主要用于安全性要求较高的部门

审计功能设置
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能

例:
对修改SC表结构或修改SC表数据的操作进行审计

AUDIT ALTER, UPDATE
ON SC;

取消对SC表的一切审计

NOAUDIT ALTER, UPDATE
ON SC;

5. 数据加密

防止数据库中数据在存储传输中失密的有效手段。

加密方法

  • 存储加密
  • 传输加密

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_71290816/article/details/127381048