第四章——数据库安全性

数据库安全性概述

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

数据库的不安全因素

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

安全标准简介

  • 《可信计算机系统评估准则关于可信数据库系统的解释》(TCSEC/Trusted Database Interpretation,TCSEC/TDI,即紫皮书)从4个方面来描述安全级别划分指标,即安全策略、责任、保证和文档。
  • 根据计算机系统对各项指标的支持情况,TCSEC/TDI将系统划分为4组(division)7个等级,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系统可靠或可信程度逐渐增高。
安全级别 定义
A1 验证设计(verified design)
B3 安全域(security domains)
B2 结构化保护(structural protection)
B1 标记安全保护(labeled security protection)
C2 受控的存取保护(controlled access protection)
C1 自主安全保护(discretionary security protection)
D 最小保护(minimal protection)

数据库安全性控制

用户身份鉴别

  • 用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识,每个用户标识是由用户名(user name)和用户标识号(UID)两部分组成。UID在系统的整个生命周期内是唯一的。系统内部记录着所有合法用户的标识,系统鉴别是指由系统提供一定的方式让用户标识自己的名字或者身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供使用数据库管理系统的权限。

静态口令鉴别

  • 这种方式是当前常用的鉴别方法。静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。这些口令是静态不变的,虽然简单,但容易被攻击,安全性较低。
  • 在存储和传输过程中口令信息不可见,均以密文方式存在。用户身份鉴别可以重复多次。

动态口令鉴别

  • 它是目前较为安全的鉴别方式。这种方式的口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
  • 与静态口令鉴别相比,这种认证方式增加了口令被盗窃或破解的难度,安全性相对高一些。

生物特征鉴别

  • 它是一种通过生物特征进行认证的技术,其中,生物特性是指生物体的唯一具有的,可测量、识别和验证的稳定生物特征。
  • 这种方式通过采用图像处理和模式识别等技术实现了基于生物特征的认证,与传统的口令鉴别相比,无疑产生了质的飞跃,安全性较高。

智能卡鉴别

  • 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。 智能卡由用户随身携带,登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是可能截取到用户的身份验证信息,存在安全隐患。 因此,实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。

存取控制

  • 存取控制机制主要包括用户权限和合法权限检查两部分
    (1)定义用户权限,并将用户权限登记到数据字典中
    (2)合法权限检查
  • 定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统
  • C2级的数据库管理系统支持自主存取控制(Discretionary Access Control,DAC),B1级的数据库管理系统支持强制存取控制(Mandatory Access Control,MAC)。
  • 这两类方法的简单定义是:
    (1)在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对于同一种对象也有不同的权限,而且用户还可将其拥有的存取权限传授给其他用户。因此自主存取控制非常灵活。
    (2)在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。

自主存取控制方法

  • SQL标准也对自主存取控制提供支持,这主要通过SQL的GRANT语句和REVOKE语句来实现。
  • 用户权限是由两个要素组成的:数据库对象和操作类型。
  • 在非关系系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身
  • 在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括模式、基本表、视图和索引的创建等)
    第四章——数据库安全性_第1张图片

授权:授予与收回

  • SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。

GRANT

  • GRANT语句的一般格式为:
    GRANT <权限>[,<权限>]…
    ON <对象类型><对象名>[,<对象类型><对象名>]…
    TO <用户>[,<用户>]…
    [WITH GRANT OPTION];
  • 其语义为:将对指定操作对象的指定操作权限授予指定的用户。发出该GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者(即属主owner),还可以是已经拥有该权限的用户。 接收权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。
  • 如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限。
  • SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即授权者不能把权限再授回给授权者或其祖先。

REVOKE

  • REVOKE语句的一般格式为:
    REVOKE <权限>[,<权限>]…
    ON <对象类型><对象名>[,<对象类型><对象名>]…
    FROM <用户>[,<用户>]…[CASCADE | RESTRICT];

创建数据库模式的权限

  • GRANT和REVOKE语句向用户授予或收回对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
  • CREATE USER语句一般格式如下:CREATE USER [WITH][DBA | RESOURSE | CONNECT];
  • 对CREATE USER语句说明如下:
  1. 只有系统的超级用户才有权创建一个新的数据库用户
  2. 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA
  • CREATE USER命名中如果没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。由数据库管理员或其他用户授予他应有的权限,根据获得的授权情况他可以对数据库对象进行权限范围内的操作。
  • 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新的用户。数据库对象的属主可以用GRANT语句把该对象上的存取权限授予其他用户。
  • 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
    第四章——数据库安全性_第2张图片

数据库角色

  • 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
  • 在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。
  1. 角色的创建
  • 创建角色的SQL语句格式是:CREATE ROLE <角色名>
  1. 给角色授权
    GRANT <权限>[,<权限>]…
    ON <对象类型>对象名
    TO <角色>[,<角色>]…

  2. 将一个角色授予其他的角色或用户
    GRANT <角色1>[,<角色2>]…
    TO <角色3>[,<用户1>]…
    [WITH ADMIN OPTION]

  3. 角色权限的收回
    REVOKE <权限>[,<权限>]…
    ON <对象类型><对象名>
    FROM <角色>[,<角色>]…

强制存取控制方法

  • 所谓强制存取控制是指系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些对数据有严格而固定密级分类的部门。
  • 在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
    主体是系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用户的各进程。
    客体是系统中被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。
  • 对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记。敏感度标记被分为若干级别,例如绝密(Top Secret,TS)、机密(Secret,S)、可信(Confidential,C)、公开(Public,P)等。密级的次序是TS>=S>=C>=P。
  • 主体的敏感度标记称为许可证级别(Clearance level),客体的敏感度标记称为密级(classification level)。 强制存取控制规则是通过对比主体敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。
  • 当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循下面两条规则:
    (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
    (2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
  • 强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
  • 较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制,即自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。 系统首先进行自主存取控制检查,对通过自主存取控制检查的允许存取的数据库对象再由系统自动进行强制存取控制检查,只有通过强制存取控制检查的数据库对象方可存取。

视图机制

  • 可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。

审计

  • 为了使数据库管理系统达到一定的安全级别,还需要在其他方面提供相应的支持。按照TDI/TCSEC标准中安全策略的要求,审计功能就是数据库管理系统达到C2以上安全级别必不可少的一项指标。
  • 审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。还可以通过对审计日志分析,对潜在的威胁提前采取措施加以防范。
  • 审计通常是很费时间和空间的,所以数据库管理系统往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活地打开或关闭审计功能。审计功能主要用于安全性要求较高的部门。

AUDIT语句和NOAUDIT语句

  • AUDIT语句用来设置审计功能,NOAUDIT语句则取消审计功能。
  • 审计一般可以分为用户级审计和系统级审计。
    用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。
    系统级审计只能由数据库管理员设置,用以检测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作。

例1:对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;

例2:取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;

  • 审计设置以及审计日志一般都存储在数据字典中。必须把审计开关打开(即把系统参数audit-trail设为true),才可以在系统表SYS_AUDITTRAIL中查看审计信息。
  • 数据库安全审计系统提供了一种事后检查的安全机制。安全审计机制将特定用户或者特定对象相关的操作记录到系统审计日志中,作为后续对操作的查询分析和追踪的依据。通过审计机制,可以约束用户可能的恶意操作。

数据加密

  • 数据加密是防止数据库数据在存储和传输中失密的有效措施。加密的基本思想是根据一定的算法将原始数据——明文变换为不可直接识别的格式——密文,从而使得不知道解密算法的人无法获知数据的内容。
  • 数据加密主要包括存储加密和传输加密。
  1. 存储加密
  • 对于存储加密,一般提供透明和非透明两种存储加密方式。透明存储加密是内核级加密保护方式,对用户完全透明;非透明存储加密则是通过多个加密函数实现的。
  • 透明存储加密是数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。
  1. 传输加密
  • 常用的传输加密方式如链路加密端到端加密。其中,链路加密对传输数据在链路层进行加密,它的传输信息由报头和报文两部分组成,前者是路由选择信息,而后者是传送的数据信息。这种方式对报文和报头均加密。相对地,端到端加密对传输数据在发送端加密,接收端解密。它只加密报文,不加密报头。与链路加密相比,它只在发送端和接收端需要密码设备,而中间节点不需要密码设备,因此它所需密码设备数量相对较少。但这种方式不加密报头,从而容易被非法监听者发现并从中获取敏感信息。

其他安全性保护

  • 为满足较高安全等级数据库管理系统的安全性保护要求,在自主存取控制和强制存取控制之外,还有推理控制以及数据库应用中隐蔽信道数据隐私保护等技术。
  • 推理控制(inference control)处理的是强制存取控制未解决的问题。
  • 隐蔽信道(convert channel)处理内容也是强制存取控制为解决的问题。
  • 数据隐私(data privacy)是控制不愿被他人知道或他人不便知道的个人数据的能力。

你可能感兴趣的:(数据库系统概论,数据库,自主存取控制方法,强制存取控制方法,数据加密,视图机制)