数据库系统概论第四章-数据库安全性
【数据库系统概论】第四章 数据库安全性
4.1 数据库安全性概述
4.1.1 数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏:一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
- 数据库管理系统提供的安全措施主要包括 用户身份鉴别、存取控制和视图 等技术。
- 数据库中重要或敏感的数据被泄露:黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
- 数据库管理系统提供的主要技术有 强制存取控制、数据加密存储和加密传输 等。
- 审计日志分析
- 安全环境的脆弱性:数据库的安全性与计算机系统的安全性紧密联系
- 建立一套 可信(Trusted)计算机系统 的概念和标准
4.2 数据库安全性控制
- 计算机系统中,安全措施是一级一级层层设置
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据以密码形式存储到数据库中
- 存取控制流程
首先,数据库管理系统对提出SQL访问请求的数据库 用户进行身份鉴别 ,防止不可信用户使用系统。
然后,在 SQL处理层 进行 自主存取控制和强制存取控制,进一步可以进行推理控制 。
还可以对 用户访问行为和系统关键操作进行审计 ,对 异常用户行为进行简单入侵检测 。
4.2.1 用户身份鉴别
- 用户身份鉴别 (Identification & Authentication) 系统提供的最外层安全保护措施
- 用户身份鉴别的方法
- 静态口令鉴别:静态口令一般由用户自己设定,这些口令是静态不变的
- 动态口令鉴别口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法
- 生物特征鉴别:通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
- 智能卡鉴别:智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
4.2.2 存取控制
用户权限定义 和 合法权检查机制 一起组成了数据库管理系统的存取控制子系统
常用存取控制方法
- 自主存取控制(Discretionary Access Control ,简称DAC)
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可将其拥有的存取权限转授给其他用户
你有一个文件夹,里面放着一些文件。你可以决定谁可以看这些文件,谁可以修改它们。比如,你可以让你的朋友A只能看文件,而让朋友B既能看又能修改。你还可以把你的权限转给朋友C,让他也能看或修改文件。这就是自主存取控制(DAC),你作为文件的主人,可以自由决定谁有什么权限。
DAC :你作为主人,可以自由决定谁可以看或修改你的文件。
- 强制存取控制(Mandatory Access Control,简称 MAC)
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予某一个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
你和你的朋友们在一个军队或政府机构工作。每个文件都有一个保密级别,比如“机密”或“绝密”。每个人也有一个安全级别,比如“普通员工”或“高级官员”。只有你的安全级别足够高,才能看或修改相应保密级别的文件。你不能随便把权限给别人,因为这是由系统或上级强制规定的。这就是强制存取控制(MAC),权限是由系统或规则强制管理的,你不能随意更改。
MAC :文件的访问权限是由系统或规则强制规定的,你不能随意更改。
- 自主存取控制(Discretionary Access Control ,简称DAC)
4.2.3 自主存取控制方法 DAC
- 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作, 定义存取权限称为授权
- 通过 SQL 的
GRANT
语句和REVOKE
语句实现
4.2.4 授权:授予与回收
1.GRANT
语义:将对指定操作对象的指定操作权限授予指定的用户
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
发出GRANT:数据库管理员,数据库对象创建者(即属主Owner),拥有该权限的用户
按受权限的用户 :一个或多个具体用户,PUBLIC(即全体用户)
WITH GRANT OPTION
子句:指定:可以再授予
没有指定:不能传播
[例4.6] GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION; 同样,U6还可以将此权限授予U7: [例4.7] GRANT INSERT ON TABLE SC TO U7; 但U7不能再传播此权限。
不允许循环授权
2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
3.小结:SQL灵活的授权机制
角色 | 权限描述 | 操作 |
---|---|---|
数据库管理员 | 拥有 所有对象 的所有权限 | 根据实际情况将不同的权限授予不同的用户 |
用户 | 拥有 自己建立的对象 的全部操作权限 | 可以使用 GRANT 将权限授予其他用户 |
被授权的用户 | 如果具有“继续授权”的许可,可以将获得的权限再授予其他用户 | 可以使用 GRANT 继续授权,或使用 REVOKE 收回权限(如果拥有相应权限) |
4.创建数据库模式的权限
数据库管理员在 创建用户 时实现
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
- CREATE USER语句格式说明
只有系统的 超级用户 才有权创建一个新的数据库用户
新创建的数据库用户有三种权限: CONNECT、RESOURCE和DBA
以下是根据你提供的信息整理的表格,总结了新创建的数据库用户的三种权限(
CONNECT
、RESOURCE
、DBA
)及其具体能力:
权限 | 能力描述 | 限制 |
---|---|---|
CONNECT | 默认权限 , 允许用户登录数据库 | - 不能创建新用户 - 不能创建模式 - 不能创建基本表 |
RESOURCE | 允许用户创建基本表和视图 ,并成为所创建对象的属主 | - 不能创建模式 - 不能创建新用户 |
DBA | 超级用户权限 ,可以创建新用户、创建模式、创建基本表和视图等, 拥有所有对象的权限 | - 无限制 - 可以将权限授予一般用户 |
4.2.5 数据库角色
- 数据库角色
:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
命令 | 定义 |
---|---|
CREATE USER | 创建一个数据库用户,用户可以直接登录数据库并执行操作。 |
CREATE ROLE | 创建一个角色,角色是一组权限的集合,不能直接登录数据库, 但可以分配给用户 。 |
4.2.6 强制存取控制方法 MAC
在强制存取控制中,数据库管理系统所管理的 全部实体被分为主体和客体两大类
- 主体是系统中的活动实体 : 数据库管理系统所管理的实际用户 ,代表用户的各进程
- 客体是系统中的被动实体,受主体操纵 : 文件、基本表、索引、视图
敏感度标记(Label) :对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
绝密(Top Secret,TS)
机密(Secret,S)
可信(Confidential,C)
公开(Public,P)
TS>=S>=C>=P
主体的敏感度标记称为许可证级别 (Clearance Level)
客体的敏感度标记称为密级 (Classification Level)
强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能 读 取相应的客体
如果文件是“机密”级别,那么只有“机密”级别或更高级别(如“绝密”)的人才能看。
如果你是“普通员工”,就不能看“机密”文件。
总结:
“你想看文件,你的级别必须够高。”
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能 写 相应的客体
如果文件是“机密”级别,那么只有“机密”级别或更低级别(如“普通”)的人才能修改。
如果你是“绝密”级别的人,就不能修改“机密”文件,因为你的级别太高了。
为什么这样规定?
这是为了防止高级别的人不小心或故意修改低级别的文件,导致信息泄露或错误。
总结:
“你想改文件,你的级别不能太高。”
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。
4.3 视图机制
- 把要保密的数据对无权存取这些数据的用户隐藏起来 ,对数据提供一定程度的安全保护
- 间接地实现支持存取谓词的用户权限定义
4.4 审计(Audit)
- 什么是审计
- 启用一个专用的审计日志(Audit Log): 将用户对数据库的所有操作记录在上面
- 审计员利用审计日志,监控数据库中的各种行为,找出非法存取数据的人、时间和内容
1.审计事件
- 服务器事件:审计数据库服务器发生的事件
- 系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的
- 语句事件:对SQL语句,如DDL、DML、DQL及DCL语句的审计
- 模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计
3. AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
4. 用户级审计和系统级审计
- 用户级审计 是普通用户用来保护自己数据的工具。
- 系统级审计 是管理员用来保护整个数据库系统的工具。
简单对比
类型 | 设置人 | 审计范围 | 目的 |
---|---|---|---|
用户级审计 | 普通用户 | 用户自己创建的表、视图等对象上的操作 | 保护用户自己的数据 |
系统级审计 | 数据库管理员(DBA) | 登录、权限分配、数据库级别操作等 | 保护整个数据库系统的安全 |
4.5 数据加密
数据加密:防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想:根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
加密方法:存储加密和传输加密
- 存储加密
透明存储加密
内核级加密保护方式,对用户完全透明
将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可
内核级加密方法: 性能较好,安全完备性较高
非透明存储加密 :通过多个加密函数实现
- 传输加密
链路加密 :在链路层进行加密
传输信息由报头和报文两部分组成
报文和报头均加密
端到端加密
在发送端加密,接收端解密
只加密报文不加密报头
所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息
- 存储加密
4.6 其他安全性保护
推理控制:处理强制存取控制未解决的问题
避免用户利用能够访问的数据推知更高密级的数据
常用方法
- 基于函数依赖的推理控制
- 基于敏感关联的推理控制
隐蔽信道:处理强制存取控制未解决的问题