第四章 数据库安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改或破坏
数据库安全保护措施是否有效是数据库系统的主要技术指标之一
4.1 数据库安全性概述
4.1.1 数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏
- 安全措施
- 用户身份鉴别
- 存取控制和视图
- 安全措施
- 数据库中重要或敏感的数据被泄露
- 安全措施
- 强制存取控制
- 数据加密存储
- 加密传输
- 安全措施
- 安全环境的脆弱性
4.1.2 安全标准简介
- D级
- 该级是最低级别。保留D级的目的是为了将一切不符合更高标准的系统统统归于D组。
- C1级
- 该级只提供了非常初级的自主安全保护,能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。
- C2级
- 该级实际上是安全产品的最低档,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。达到C2级的产品在其名称中往往不突出“安全”isecurity)这一特色,
- B1级
- 标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。B1级别的产品才被认为是真正意义上的安全产品,满足此级别的产品前一般多冠以“安全”(security)或“可信的”(trusted)字样,作为区别于普通产品的安全产品出售。
- B2级
- 结构化保护。建立形式化的安全策略模型,并对系统内的所有主体和客体实施DAC和MAC。
- B3级
- 安全域。该级的TCB(Trusted Computing Base)必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
- A1级
- 验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证,以确信各安全保护真正实现。
-
CC标准
-
提出国际公认的表述信息技术安全性的结构,把信息产品的安全要求分为安全功能要求、安全保证
-
CC文本组成,三个部分缺一不可,相互依存
- 第一部分是简介和一般模型,介绍CC中的有关术语、基本概念和一般模型以及与评估有关的一些框架。
- 第二部分是安全功能要求,列出了一系列类、子类和组件。由11大类、66个子类和135个组件构成。
- 第三部分是安全保证要求,列出了一系列保证类、子类和组件,包括7大类、26个子类和74个组件。根据系统对安全保证要求的支持情况提出了评估保证级(EvaluationAssurance Level,EAL),从EAL1至EAL7共分为7级,按保证程度逐渐增高。
-
4.2 数据库安全性控制
-
非法使用数据库的情况
- 编写合法程序绕过数据库管理系统及其授权机制
- 直接或编写应用程序执行非授权操作。
- 通过多次合法查询数据库从中推导出一些保密数据
-
计算机系统的安全模型
-
数据库有关的安全性
- 数据库安全性主要包括
- 用户身份验证
- 多层存取控制
- 审计
- 视图
- 数据加密等安全技术
- 数据库安全性主要包括
4.2.1 用户身份鉴别
- 用户身份鉴别的方法
- 静态口令鉴别:
- 静态口令一般由用户自己设定,这些口令是静态不变的。
- 动态 口令鉴别
- 这种方式的口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
- 生物特征鉴别
- 它是一种通过生物特征进行认证的技术,其中,生物特征是指生物体唯一具有的,可测量、识别和验证的稳定生物特征,如指纹、虹膜和掌纹等。
- 智能卡鉴别
- 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。
- 静态口令鉴别:
4.2.1 存取控制
存取控制机制组成
- 定义用户权限
- 并将用户权限登记到数据字典中
- 权限是指用户对某一数据对象的操作权力。
- DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则。
- 合法权限检查
- 用户发出存取数据库操作请求。
- DBMS查找数据字典,进行合法权限检查。
常用存取控制方法
- 自主存取控制
- 自主存取控制(Discretionary Access Control,简称DAC)中用户对不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,用户可将其拥有的存取权限转授给其他用户。C2级的数据库管理系统支持自主存取控制。
- 强制存取控制
- 强制存取控制(Mandatory Access Control,简称 MAC)中每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证,对于任意一个对象,只有具有合法许可证的用户才可以存取。B1级的数据库管理系统支持强制存取控制。
4.2.3 自主存取控制方法
SQL标准的通过GRANT语句和REVOKE语句实现自主存取控制。
- 用户权限概念
- 定义用户存取权限就是定义用户可以在哪些数据库对象哪些类型的操作。定义存取权限称为授权。
- 用户权限组成
- 数据对象、操作类型
- 关系数据库系统中存取控制对象
4.2.4 授权:授予与收回
SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。
如果加了最后一句,被授权用户才可以授权给 其他人
-
创建数据库模式的权限
-
说明
- 只有系统的超级用户才有权创建一个新的数据库用户。
- 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA。
- CREATEUSER命令中如果没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。由数据库管理员或其他用户授予他应有的权限,根据获得的授权情况他可以对数据库对象进行权限范围内的操作。
- 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新的用户。数据库对象的属主可以使用GRANT语句把该对象上的存取权限授予其他用户。
- 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
-
4.2.5 数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合
- ①该语句把角色授予某用户,或授予另一个角色
- 授予者是角色创建者或拥有在这个角色上的ADMIN OPTION
- 指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。
4.2.6 强制存取控制方法
-
自主存取控制缺点
- 可能存在数据"无意泄露"的风险
- 原因
- 这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
- 解决
- 对系统控制下的所有主客体实施强制存取控制策略
-
强制存取控制(MAC)
- 保证更高程度的安全性,用户不能直接感知或进行控制
- 适用于对数据有严格而固定密级分类的部门,如军事部门等
- 敏感度标记(Label)
- 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
- 敏感度标记级别
- 绝密(Top Secret,TS)、机密(Secret,S)、可信(Confidential,C)、公开(Public,P)等。
- 密级的次序是TS>=S>=C>=P。
- 主体的敏感度标记称为许可证级别
- 客体的敏感度标记称为密级
-
强制存取控制规则
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
- 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
-
说明
- 强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
- 实现强制存取控制时要首先实现自主存取控制
- 原因:较高安全性级别提供的安全保护要包含较低级别的所有保护。
- 自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。
4.3 视图机制
- 视图对数据库安全的作用
- 把要保密的数据对无权存取这些数据的用户 隐藏起来,对数据提供一定程度 的安全保护
- 间接的实现支持存取谓词的用户权限定义
4.4 审计(Audit)
- 什么是审计
- 审计日志(Audit Log):启用一个专用的审计日志,将用户对数据库的所有操作记录在上面。
- 审计员:审计员利用审计日志监控数据库中的各种行为找出非法存取数据的人、时间和内容。
- C2以上安全级别的DBMS必须具有审计功能。
- 审计事件
- 服务器事件
- 审计数据库服务器发生的事件,包含数据库服务器的启动、停止、数据库服务器配置文件的重新加载。·
- 系统权限
- 对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
- ·语句事件
- 对SQL语句,如DDL、DML、DQL(Data Query Language,数据查询语言)及DCL语句的审计。
- 模式对象事件
- 对特定模式对象上进行的SELECT或DML操作的审计。模式对象包括表、视图、存储过程、函数等。模式对象不包括依附于表的索引、约束、触发器、分区表等。
- 服务器事件
- 审计功能
- 基本功能,提供多种审计查阅方式:基本的、可选的、有限的,等等。
- 提供多套审计规则,审计规则一般在数据库初始化时设定,以方便审计员管理。
- 提供审计分析和报表功能。
- 审计日志管理功能
- 防止审计员误删审计记录,审计日志必须先转储后删除;
- 对转储的审计记录文件提供完整性和保密性保护;
- 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录;
- 系统提供查询审计设置及审计记录信息的专门视图。对于系统权限级别、语句级别及模式对象级别的审计记录也可通过相关的系统表直接查看。
- 审计分类
- 用户级审计
- 任何用户可设置的审计,主要是用户针对自己创建的数据库表和视图进行审计。
- 系统级审计
- 只能由数据库管理员设置,监测成功或失败的登录要求,检测授权和收回操作以及其他数据库级权限下的操作。
- 用户级审计
- 语句
- AUDIT语句设置审计功能
- NOAUDIT语句取消审计功能
- 说明
- 审计设置以及审计日志一般都存储在数据字典中。
- 必须把审计开关打开(即把系统参数audit trail 设为true),才可以在系统表SYS AUDITTRAIL中查看到审计信息。
- 数据库安全审计系统提供了一种事后检查的安全机制。
4.5 数据加密
数据加密是防止数据库数据在存储和传输中失密的有效手段。
加密的基本思想是根据一定的算法将原始数据——明文(plain text)变换为不可直接识别的格式——密文(cipher text),从而使得不知道解密算法的人无法获知数据的内容。
数据加密主要包括存储加密和传输加密。
- 存储加密
- 透明存储加密
- 内核级加密保护方式,对用户完全透明
- 将数据在写到磁盘时对数据进行加密,授权用户读取数据时在对其进行解密
- 数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可
- 内核级加密方法
- 性能较好,安全完备性较高
- 非透明存储加密
- 通过多个加密函数实现
- 透明存储加密
- 传输加密
- 链路加密
- 在链路层进行加密
- 传输信息由报头和报文两部分组成,报文和报头均加密
- 端到端加密
- 在发送端加密,接收端解密
- 只加密报文不加密报头
- 所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息
- 链路加密
4.6 其它安全性保护
- 推理控制
- 处理强制存取控制未解决的问题,避免用户利用能够访问的数据推知更高密级的数据。
- 常用方法:基于函数依赖的推理控制、基于敏感关联的推理控制。
- 隐蔽信道
- 处理强制存取控制未解决的问题。
- 数据隐私保护
- 描述个人控制其不愿他人知道或他人不便知道的个人数据的能力。主要用于数据收集存储处理和数据发布等各个阶段。