数据库系统——数据库安全性

文章目录

  • 4.1 数据安全性概述
    • 4.1.1
    • 4.1.2 安全标准简介
  • 4.2 数据库安全性控制
    • 4.2.1 用户身份鉴别
    • 4.2.2 存取控制
    • 4.2.3 自主存取控制方法
    • 4.2.4 授权:授予与回收
      • 1.GRANT
      • 2.REVOKE
    • 4.2.5 数据库角色
    • 4.2.6 强制存取控制方法
  • 4.3 视图机制
  • 4.4 审计(Audit)
  • 4.5 数据加密
  • 4.6 其他安全性保护
  • 4.7 小结

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

系统安全性保护措施是否有效是数据库系统主要的性能指标之一。

4.1 数据安全性概述

4.1.1

数据库不安全的因素

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

4.1.2 安全标准简介

1985年美国国防部(DoD) 正式颁布《DoD可信计算机系统评估准则》( 简称TCSEC或DoD85)

不同国家建立在TCSEC概念上的评估准则

  • 欧洲的信息技术安全评估准则(ITSEC)
  • 加拿大的可信计算机产品评估准则( CTCPEC)
  • 美国的信息技术安全联邦标准(FC)

1993年,CTCPEC、FC、TCSEC和ITSEC联合行动,解决原标准中概念和技术上的差异,称为CC (Common Criteria)项目

1999年CC V2.1版被ISO采用为国际标准

2001年CC V2.1版被我国采用为国家标准

目前CC已基本取代了TCSEC,成为评估信息产品安全性的主要标准。

TCSEC标准

CC标准
数据库系统——数据库安全性_第1张图片

4.2 数据库安全性控制

非法使用 数据库的情况

  • 编写合法程序绕过数据库管理系统及其授权机制
  • 直接或编写应用程序执行非授权操作
  • 通过多次合法查询数据库从中推导出-一!此保密数据

计算机系统中,安全措施是一级一级层层设置
数据库系统——数据库安全性_第2张图片
存取控制流程

  • 首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
  • 然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
  • 还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。

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

  • 用户标识和鉴定
  • 存取控制
  • 视图
  • 审计
  • 数据加密

用户身份鉴别的方法

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

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

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

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

4.2.1 用户身份鉴别

用户身份鉴别

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

4.2.2 存取控制

存取控制机制组成

  • 定义用户权限,并将用户权限登记到数据字典中●用户对某一数据对象的操作权力称为权限
    DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则

  • 合法权限检查
    用户发出存取数据库操作请求
    DBMS查找数据字典,进行合法权限检查

用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统

常用存取控制方法

  • 自主存取控制(Discretionary Access Control,简称DAC )
    • C2级
    • 用户对不同的数据对象有不同的存取权限
    • 不同的用户对同一-对象也有不同的权限
    • 用户还可将其拥有的存取权限转授给其他用户
  • 强制存取控制(Mandatory Access Control,简称MAC )
    • B1级
    • 每一个数据对象被标以一定的密级
    • 每一个用户也被授予某-个级别的许可证
    • 对于任意一个对象,只有具有合法许可证的用户才可以存取

4.2.3 自主存取控制方法

  • 通过SQL的GRANT语句和REVOKE语句实现

  • 用户权限组成
    数据对象
    操作类型

  • 定义用户存取权限:定义用户可以在哪些数据库,对象上进行哪些类型的操作

  • 定义存取权限称为授权

  • 数据库系统——数据库安全性_第3张图片

4.2.4 授权:授予与回收

1.GRANT

GRANT语句的一般格式:

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

数据库系统——数据库安全性_第4张图片

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

发出GRANT:

  • 数据库管理员
  • 数据库对象创建者(即属主Owner)●拥有该权限的用户

按受权限的用户

  • 一个或多个具体用户
  • PUBLIC (即全体用户)
[4.1]把查询Student表权限授给用户U1
    GRANT SELECT
    ON TABLE Student
    TO U1;
[4.2]把対Student表和Course表的全部叔限授予用戸U2和U3
    GRANT ALL PRIVILIGES
    ON TABLE Student,Course
    TO U2,U3;
[4.3]把对表SC的查询权限授予所有用户
    GRANT SELECT
    ON TABLE SC
    TO PUBLIC;
[4.4]把查询Student表和修改学生学号的权限授给用户U4
    GRANT UPDATE(Sno), SELECT
    ON TABLE Student
    TO U4;
对属性列的授权时必须明确指出相应属性列名
[4.5] 把对表SC的INSERT权限授予U5用户,并将允许他再讲此权限授予其他用户
    GRANT INSERT 
    ON TABLE SC
    Tо U5
    WITH GRANT OPTION;
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,还可以传播权限:

[4.6] GRANT INSERT 
        ON TABLE SC
        Tо U6
        WITH GRANT OPTION;

  同样,U6还可以将此权限授予U7:

[4.7] GRANT INSERT
        ON TABLE SC
        TO U7;
  但U7不能再传播此权限。.

数据库系统——数据库安全性_第5张图片

2.REVOKE

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

  • REVOKE语句的一般格式为:

REVOKE <权限>[, <权限>]..
ON <对象类型> <对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户..[CASCADE | RESTRICT];
//CASCADE:级联回收,级联把用户传播出去权限一并回收
//RESTRICT:受限回收,传播过该权限,回收操作会失败,先手动回收传播出去权限
[4.8]把用户U4修改学生学号的权限收回
    REVOKE UPDATE(Sno)
    ON TABLE Student
    FROM U4;
[4.9]收回所有用户对表SC的查询权限
    REVOKE SELECT
    ON TABLE SC
    FROM PUBLIC;
[4.10]把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;

// 将用户U5的INSERT权限收回的时候应该使CASCADE,否则拒绝执行该语句
// 如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限

数据库系统——数据库安全性_第6张图片

数据库管理员:

  • 拥有所有对象的所有权限

  • 根据实际情况不同的权限授予不同的用户

用户:

  • 拥有自己建立的对象的全部的操作权限
  • 可以使用GRANT,把权限授子其他用户

被授权的用户

  • 如果具有“继续授权”的许可,可以把获得的权限再授予其他用户
  • 所有授予出去的权力在必要时又都可用REVOKE语句收回

3.创建数据库模式的权限

数据库管理员在创建用户时实现

CREATE USER语句格式

CR EATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];:
CREATE USER不是SQL标准,各个系统的实现相差甚远

CREATEUSER语句格式说明

  • 只有系统的超级用户才有权创建一个新的数据库用户
  • 新创建的数据库用户有三种权限: CONNECT、RESOURCE和DBA
  • 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
  • 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户
  • 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等; DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户

数据库系统——数据库安全性_第7张图片

4.2.5 数据库角色

数据库角色:被命名的一组与数据库操作相关权限

  • 角色是权限的集合
  • 可以为一组具有相同权限的用户创建一个角色
  • 简化授权的过程

1.角色的创建

CREATE ROLE<角色名>

2.给角色授权

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

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

GRANT <角色1>[,<角色2>]..S
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
  • 该语句把角色授予某用户,或授予另一个角色

  • 授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION

  • 指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色

    一个角色的权限:直接授子这个角色的全部权限加上其他角色授予这个角色的全部权限

4.角色权限的收回

REVOKE <权限>[, <权限>]..
ON <对象类型> <对象名>
FROM <角色>[,<角色>]...
  • 用户可以回收角色的权限,从而修改角色拥有的权限
  • REVOKE执行者是
    • 角色的创建者
    • 拥有在这个(些)角色上的ADMIN OPTION
[4.11] 通过角色来实现将一组权限授予一个用户。步骤如下:
//(1)首先创建一一个角色R1
CREATE ROLE R1;

//(2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SEL .ECT, UPDATE, INSERT
ON TABLE Student
TO R1;

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

//(4)可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平;
[4.12]角色的权限修改
    GRANT DELETE
    ON TABLE Student
    Tо R1;

使角色R1在原来的基础上增加了Student表的DELETE权限
[4.13]
    REVOKE SELECT
    ON TABLE Student
    FROM R1;
    使R1减少了SELECT权限

4.2.6 强制存取控制方法

自主控制缺点:可能存在数据的“无意泄露”

  • 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
  • 解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC )

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

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

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

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

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

敏感度标记(Label)

  • 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)

  • 敏感度标记分成若干级别

    • 绝密(Top Secret, TS)
    • 机密(Secret, S)
    • 可信(Confidential, C)
    • 公开(Public, P)
    • TS>=S>=C>=P
  • 主体的敏感度标记称为许可证级别(Clearance Level)

  • 客体的敏感度标记称为密级(Classification Level)

强制存取控制规则:

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

强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据

实现强制存取控制时要首先实现自主存取控制

原因:较高安全性级别提供的安全保护要包含较低级别的所有保护

自主存取控制与强制存取控制共同构成数据库管理系统的安全机制

D A C + M A C 安 全 检 查 DAC+MAC安全检查 DAC+MAC
数据库系统——数据库安全性_第8张图片

4.3 视图机制

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

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

[4.14]建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明

先建立计算机系学生的视图CS_ Student
    CREATE VIEW CS_ Student
    AS
    SELECT *
    FROM
    Student
    WHERE Sdept ='CS';
    
在视图上进一步定义存取权限
    GRANT SELECT
    ON CS_ Student
    TO 王平;

    GRANT ALL PRIVILIGES
    ON CS_ Student
    TO 张明;

4.4 审计(Audit)

什么是审计

  • 启用一个专用的审计日志(Audit Log): 将用户对数据库的所有操作记录在上面
  • 审计员利用审计日志: 监控数据库中的各种行为,找出非法存取数据的人、时间和内容
  • C2以上安全级别的DBMS必须具有审计功能

审计功能的可选性

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

1.审计事件

  • 服务器事件

    审计数据库服务器发生的事件

  • 系统权限

    • 对系统拥有的结构或模式对象进行操作的审计
    • 要求该操作的权限是通过系统权限获得的
  • 语句事件

    对SQL语句,如DDL、 DML、 ? DQL及DCL语句的审计

  • 模式对象事件

    对特定模式对象上进行的SELECT或DML操作的审计

2.审计功能

  • 基本功能:提供多种审计查阅方式提供多种审计查阅方式

  • 多套审计规则:一般在初始化设定

  • 提供审计分析和报表功能

  • 审计日志管理功能

    • 防止审计员误删审计记录,审计日志必须先转储后删除
    • 对转储的审计记录文件提供完整性和保密性保护
    • 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等
  • 提供查询审计设置及审计记录信息的专门视图

  1. AUDIT语句和NOAUDIT语句
  • AUDIT语句:设置审计功能
  • NOAUDIT语句:取消审计功能

用户级审计

  • 任何用户可设置的审计
  • 主要是用户针对自己创建的数据库表和视图进行审计心

系统级审计

  • 只能由数据库管理员设置
  • 监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作
[4.15]对修改SC表结构或修改SC表数据的操作进行审计

    AUDIT ALTER,UPDATE
    ON sC;

[4.16]取消对SC表的一切审计

    NOAUDIT ALTER,UPDATE
    ON SC;

4.5 数据加密

数据加密

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

加密的基本思想

  • 根据一定的算法将原始数据一-明文(Plain text) 变换为不可直接识别的格式-密文(Cipher text)

加密方法

  • 存储加密
  • 传输加密

存储加密

  • 透明存储加密

    • 内核 级加密保护方式,对用户完全透明
    • 将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
    • 数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可

    内核级加密方法:性能较好,安全完备性较高

  • 非透明存储加密

    • 通过多个加密函数实现

传输加密

  • 链路加密

    • 在链路层进行加密
    • 传输信息由报头和报文两部分组成
    • 报文和报头均加密
  • 端到端加密

    • 在发送端加密, 接收端解密
    • 只加密报文不加密报头
    • 所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息

数据库系统——数据库安全性_第9张图片

基于安全套接层协议SSL传输方案的实现思路:
(1)确认通信双方端点的可靠性

  • 采用基于数字证书的服务器和客户端认证方式
  • 通信时均首先向对方提供己方证书,然后使用本地的CA信任列表和证书撤销列表对接收到的对方证书进行验证

(2)协商加密算法和密钥

  • 确认双方端点的可靠性后,通信双方协商本次会话的加密算法与密钥

(3)可信数据传输

  • 业务数据在被发送之前将被用某–组特定的密钥进行加密和消息摘要计算,以密文形式在网络上传输
  • 当业务数据被接收的时候,需用相同-组特定的密钥进行解密和摘要计算

4.6 其他安全性保护

推理控制

  • 处理强制存取控制未解决的问题
  • 避免用户利用能够访问的数据推知更高密级的数据
  • 常用方法:
    • 基于函数依赖的推理控制
    • 基于敏感关联的推理控制

隐蔽信道

  • 处理强制存取控制未解决的问题

数据隐私保护

  • 描述个人控利其不愿他人知道或他人不便知道的个人数据的能力
  • 范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段

4.7 小结

数据的共享日益加强,数据的安全保密越来越重要。

数据库管理系统是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制

实现数据库系统安全性的技术和方法:

  • 用户身份鉴别
  • 存取控制技术:自主存取控制和强制存取控制
  • 视图技术
  • 审计技术
  • 数据加密存储和加密传输

你可能感兴趣的:(数据库)