数据库系统概论第五版(王珊)-基础篇(四)

数据库安全性

参考:MySQL必知必会(刘晓霞 钟鸣)第28章

4.1 数据安全性概述

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

4.1.1 数据库的不安全因素

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

4.1.2 安全标准简介

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

  1. TCSEC/TDI定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准,从4个方面来描述安全性级别划分的指标,即安全策略、责任、保证和文档
  2. 根据计算机系统对各项指标的支持情况,TCSEC/TDI将系统划分为4组7个等级,依次是D、C(C1、C2)、B(B1、B2、B3)、A(A1),按系统可靠程度逐渐增高。
    在这里插入图片描述
    (1)D:最低级别。将一切不符合更好标准的系统统统归为D组。
    (2)C1:提供非常初级的自主安全保护,更够实现对用户和数据的分离,进行自主存取控制(DAC),保护和限制用户权限的传播。
    (3)C2:该级是安全产品的最低档,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。达到C2级的产品在其名称中往往不突出“安全”这一特色。
    (4)B1:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施**强制存取控制(MAC)**以及审计等安全机制。B1级的产品才被认为是真正意义上的安全产品。
    (5)B2:架构化保护。建立形式化的安全策略模型,并对系统内的所有主体和客体实施DAC和MAC。
    (6)B3:安全域。该级的TCB(Trusted Computing Base)必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
    (7)A1:验证设计,即提供B3级别保护的同时给出系统的形式化设计说明和验证,已确信各安全保护真正实现。
  3. CC的文本由3部分组成,简介和一般模型(介绍相关术语、基本概念、一般模型及评估)、安全功能要求(列出一系列类、子类和组件)、安全保证要求(列出一系列保证类、子类和组件)。

4.2 数据库安全性控制

在一般计算机系统中 安全措施是一级一级层层设置的
数据库的安全性,主要包括:用户身份鉴别、多层存取控制、审计、视图和数据加密等安全技术。
在这里插入图片描述
图43是数据库安全保护的一个存取控制流程。首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统;然后,在SOL处理层进行自主存取控制和强制存取控制,进一步还可以进行推理控制。为监控恶意访问,可根据具体安全需求配置审计规则,对用户访问行为和系统关键操作进行审计。通过设置简单入侵检测规则,对异常用户行为进行检测和处理。在数据存储层,数据库管理系统不仅存放用户数据,还存储与安全有关的标记和信息(称为安全数据),提供存储加密功能等。

4.2.1 用户身份鉴别

  1. 用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户标识由用户名(user name)用户标识号(UID)两部分组成。UID在系统的整个周期中是唯一的。
  2. 用户身份鉴别的方法有很多种,而且在一个系统中往往是多种方法结合,以获得更强的安全性,常用的有以下几种。
    (1)静态口令鉴别:密码
    (2)动态口令鉴别:验证码
    (3)生物特征鉴别:指纹等
    (4)智能卡鉴别:智能芯片,实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。

4.2.2 存取控制

  1. 存取控制机制主要包括定义用户权限和合法权限检查两部分。
    (1)定义用户权限,并将用户权限登记到数据字典中
    据库管理系统必须提供适当的语言来定义用户权限,这些定义经过编译后存储在数据字典中,被称做安全规则或授权规则。
    (2)合法权限检查
    根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。
  2. C2级别的数据库管理系统支持自主存取控制(Discretionary Access Control DAC),B1级的数据库管理系统支持强制存取控制(Mandatory Access Control,MAC)。
    (1)DAC:在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活
    (2)MAC:在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一Aminstator有具 有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。

4.2.3 自主存取控制方法

  1. 通过SQL的Grant语句和Revoke语句来实现。
  2. 用户权限是由两个要素组成:数据库对象和操作类型。定义存取权限称为授权。在非关系型数据库中用户只能对数据进行操作,存取控制的数据库对象只能是数据本身;在关系型数据库中,存取控制对象不仅仅是数据本身(基本表中的数据、属性列上的数据),还有数据库模式(数据库、基本表、视图、索引的创建等)。
    在这里插入图片描述
    表4.2中,列权限包括Select、references、insert、update,其含义与表权限类似。

4.2.4 授权:授予与收回

  1. grant
    (1)一般格式为:
    在这里插入图片描述
    (2)发出该grant语句的可以是数据库管理员,也可以是数据库对象创建者,或已经拥有该权限的用户,接收权限的用户可以是一个或多个具体用户,也可以是public,即全体用户
    (3)指定了with grant option子句,则获得某种权限的用户还可以把这种权限再授予给其他用户。但不允许循环授予。
    在这里插入图片描述
  2. Revoke

(1)一般格式为
在这里插入图片描述
(2)实例

revoke insert
on table SC
from U5 cascade

将用户U5的insert全线收回的同时,级联(cascade)收回了U6和U7的insert权限,如果U6或U7还从其他用户获得了对SC的insert权限,则他们仍拥有此权限,系统只收回直接或间接从U5获得的权限。

PS:(1)数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户
(2)用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用GRANT语句把其中某些权限授予其他用户。被授权的用户如果有“继续授权”的许可,还可以把获得的权限再授予其他用户。
(3)用户可以“自主”的决定将数据库的存取权限授予何人,决定是否将“授权”的权限授予别人,因此称这样的存取控制是自主存取控制。
3. 创建数据库模式的权限
GRANT和REVOKE语句向用户授予或收回对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
create user语句的一般格式如下:
在这里插入图片描述
PS:(1)只有系统的超级用户才有权创建一个新的数据库用户。
(2)新创建的数据库用户有三种权限: CONNECT、RESOURCE 和DBA。如果命令中没有指定,默认为connect权限,拥有connect权限的用户不能创建新用户、模式、基本表,只能登录数据库。但它可以拥有其他用户授予它的权限。
(3)拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式、新的用户。数据库对象的属主可以使用GRANT语句把该对象上的存取权限授予其他用户。
(4)拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等; DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
在这里插入图片描述

4.2.5 数据库角色

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

  1. 角色创建
    create role <角色名>;刚刚创建的角色是空的,没有任何内容,可以使用Grant为角色授权。
  2. 角色授权
    在这里插入图片描述
  3. 将一个角色授权其他角色或用户
    在这里插入图片描述
    这样一个角色(角色3)所拥有的权限就是授予它的全部角色(角色1,2)所包含的权限的总和。
    授予者是角色的创建者或拥有这个角色上的admin option。
    指定了with admin option子句,则获得某种权限的角色或用户还可以把这个权限再授予其他角色。
    一个角色的权限包括只接受与这个角色的全部权限和加上其他角色授予这个角色的全部权限。
  4. 角色权限收回
    在这里插入图片描述

4.2.6 强制存取控制方法

  1. MAC机制下,仍可能存在数据的“无意泄露”,造成这一问题的根本原因在于:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全标记
    解决这一问题,就需要对系统控制下的所有主客体实施强制存取控制策略。
  2. 所谓强制存取控制是指系统为保证更高程度的安全性, 按照TDI/TCSEC标准中安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些对数据有严格而固定密级分类的部门,例如军事部门或政府部门。
  3. 在强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类。
  4. 主体是系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用 Administrater 户的各进程
    客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。
    对于主体和客体数据库管理系统为它们每个实例(值)指派一个敏感度标记(label)
  5. 敏感度标记被分成若干级别,例如绝密(TopSecret,TS)、机密(Secret,S)、可信(Confidential,C)、公开(PublicP)等。
    密级的次序是TS>=S>=C>=P。
    主体的敏感度标记称为许可证级别(clearance level),客体的敏感度标记称为密级(classification level)。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体
  6. 当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:
    (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
    (2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
    PS:违反了规则2,就有可能把数据的密级从高流向低,造成数据的泄露。
  7. 强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据 从而提供了更高级别的安全性。前面已经提到,较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制 (DAC),即自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
    在这里插入图片描述

4.3 视图机制

  1. 为不同的用户定义不同的视图,把数据对象限制在一定的范围内。也就是说通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
  2. 视图机制间接的实现支持存取谓词的用户权限定义。
    实例:在某大学中,假定王平老师只能检索计算机系学生的信息系主任张明具有检索和增删改计算机系学生信息的所有权限。
    这就要求系统能支持“存取谓词”的用户权限定义。在不直接支持存取谓词的系统中,可以先建立计算机系学生的视图CsStudent,然后在视图上进一步定义存取权限。
    在这里插入图片描述

4.4 审计

审计是一种事后检查的安全机制。

前面讲的用户身份鉴别、存取控制是数据库安全保护的重要技术(安全策略方面),但不是全部。为了使数据库管理系统达到一定的安全级别,还需要在其他方面提供相应的支持。 例如按照 TDI/TCSEC 标准中安全策略的要求, 审计(audit)功能就是数据库管理系统达到 以上安全级别必不可少的一项指标。
审计功能把用户对数据库的所有操作自动记录下来放入审计日志 (audit log)中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的系列事件,找出非法存取数据的人、时间和内容等 还可以通过对审计日志分析,对潜在的威胁提前采取措施加以防范。
审计通常是很费时间和空间的,所以数据库管理系统往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活地打开或关闭审计功能。审计功能主要用于安全性要求较高的部门。
可审计事件有服务器事件、系统权限、语句事件及模式对象事件,还包括用户鉴别、自主访问控制和强制访问控事件。换句话说,它能对普通和特权用户行为、各种表操作、身份鉴别、自主和强制访问控制等操作进行审计。它既能审计成功操作,也能审计失败操作。

  1. 审计事件
    服务器事件、系统权限、语句时间、模式对象事件。
  2. 审计功能
    基本查阅方式、提供多套审计规则、提供审计分析和报表功能、审计日志管理、提供查询审计设置及审计记录信息的专门视图。
  3. audit语句和noaudit语句
    实例:(1)对修改SC表结构和修改SC表数据的操作进行审计:audit alter,update on SC
    (2)对修改SC的一切审计:noaudit alter,update on SC
  4. 审计一般可以分为用户级审计也系统级审计,
    用户级审计:任何用户都可设置的审计,主要是用户针对自己创建的数库表或视图进行审计,记录所有用户对这些表或视图的一切访问及各种类型的SQL操作。
    系统级审计:只能有数据库管理员设置,用以检测成功或失败的登录要求,检测授权和收回操作以及其他数据库级权限下的操作。

4.5 数据加密

对于高度敏感性数据,例如财务数据、军事数据、国家机密数据等,还可以采用数据加密技术。
加密的基本思想是根据一定的算法将原始数据–明文(plain text)变换为不可直接识别的格式- 密文(cipher text),从而使得不知道解密算法的人无法获知数据的内容。
数据加密主要包括存储加密和传输加密。

  1. 存储加密
    存储加密提供透明加密和非透明加密两种方式。
    (1)透明存储加密:内核级别加密保护方式,对用户完全透明
    数据在到磁盘时对数据进行加密,授权用户取数据时再对其进行解密
    因为数据加密对用户透明,数据库的应用程序不需要做任何修改,只需在创建表语句中说明须加密的字段即可
    当对加密数据进行增删改查时,数据库管理系统将自动对数据进行加、解密工作。
    基于数据库内核的数据存储加密方法性能好,安全完备性好。
    (2)非透明存储加密:通过多个加密函数实现的。
  2. 传输加密
    保证数据库用户与服务器之前的安全数据交换。
    常用的传输加密是链路加密和端到端加密
    基于安全套接层协议的数据库管理系统可信传输方案。
    在这里插入图片描述
    它的实现思路包含以下三点:
    (1)确认通信双方端点的可靠性。
    (2)协商加密算法和密钥
    (3)可信数据传输

4.6 其他安全性保护

  1. 推理控制
    处理的是强制存取控制未解决的问题。
    用来避免用户利用其能够访问的数据推知更高机密的数据。
  2. 隐蔽信道
    处理的是:强制存取控制未解决的问题
  3. 数据隐私保护
    控制不愿被别人知道或他人不便知道的个人数据的能力。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东风难破

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值