本章目标
–了解什么是计算机系统安全性问题,什么是数据库的安全性问题,威胁数据库安全性的因素有哪些。
–牢固掌握TCSEC和CC标准的主要内容。C2级DBMS、B1级DBMS的主要特征。DBMS提供的安全措施:用户身份鉴别、自主存取控制和强制存取控制技术、视图技术和审计技术、数据加密存储和加密传输。
–熟练掌握使用SQL中的GRANT和REVOKE语句实现自主存取控制。
–深刻理解强制存取控制中的存取规则。
文章目录
一、数据库安全性概述
数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
数据库的不安全因素:
- 非授权用户对数据库的恶意存取和破坏。
- DBMS提供用户身份鉴别、存取控制和视图等技术。
- 数据库中重要或敏感的数据被泄露。
- DBMS提供强制存取控制、数据加密存储和加密传输等。
- 审计日志分析
- 安全环境的脆弱性。
二、安全标准简介
TCSEC标准
1991年4月美国NCSC颁布的《可信计算机系统评估标准关于可信数据库系统的解释》(简称TDI)。
- TDI又称紫皮书。将TCSEC扩展到数据库管理系统
- TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
TCSEC/TDI标准的基本内容:从四个方面来描述安全性级别划分的指标
- 安全策略
- 责任
- 保证
- 文档
TCSEC/TDI安全级别划分(7级)
- 四组七个等级:D,C(C1,C2),B(B1,B2,B3),A(A1)
- 偏序向下兼容的关系:较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。
安全级别 | 定义 | 功能 | 实例 | 备注 |
---|---|---|---|---|
D | 最小保护 | DOS系统:在安全性方面几乎没有什么专门的保障机制 | 一切不符合更高标准的系统均归于D组 | |
C1 | 自主安全保护 | 实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。 | 现有商业系统稍作改进即可 | 非常初级的自主安全保护 |
C2 | 受控的存取保护 | 提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。 | Windows2000, Oracle7 | 安全产品的最低档次,并不突出”安全“这一特色 |
B1 | 标记安全保护 | 对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制。 | ”安全“或”可信的“产品 | |
B2 | 结构化保护 | 建立形式化的安全策略模型并对系统内的所有主体和课题实施DAC和MAC。 | ||
B3 | 安全域 | 该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。 | ||
A1 | 验证设计 | 提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。 |
CC标准(国际通用准则)
CC提出了目前国际上公认的表述信息技术安全性的结构:
-
安全功能要求:用以规范产品和系统的安全行为。
-
安全保证要求:要求解决如何正确有效地实施这些功能。
(都以“类-子类-组件”的结构表述,组件是安全要求的最小构建块。)
CC文本内容:
- 简介和一般模型:介绍CC中的有关术语、基本概念和一般模型以及与评估有关的一些框架。
- 安全功能要求。
- 安全保证要求。
CC评估保证级(7级)
评估保证级 | 定义 | TCSEC安全级别 |
---|---|---|
EAL1 | 功能测试 | |
EAL2 | 结构测试 | C1 |
EAL3 | 系统地测试和检查 | C2 |
EAL4 | 系统地设计、测试和复查 | B1 |
EAL5 | 半形式化设计和测试 | B2 |
EAL6 | 半形式化验证的设计和测试 | B3 |
EAL7 | 形式化验证的设计和测试 | A1 |
三、数据库安全性控制
计算机系统中,安全措施是一级一级层层设计。
DBMS安全控制模型
![在这里插入图片描述](https://img-blog.csdnimg.cn/1344bb9c76084437b50478cc0bd32db6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA57-Z57-ZQ2ljaQ==,size_20,color_FFFFFF,t_70,g_se,x_16
DBMS提供的安全控制方法
用户身份鉴别
系统提供的最外层安全保护措施。
用户标识:
- 用户名(user name)
- 用户标识号(UID),UID在系统的整个生命周期内是唯一的。
常用的用户身份鉴别方法:
-
静态口令鉴别
-
动态口令鉴别
-
生物特征鉴别
-
智能卡鉴别
存取控制
用于确保只授权给有资格的用户访问数据库的权限,令所有未被授权的人员无法接近数据。
包括定义用户权限和合法权限检查两部分,一起组成了DBMS的存取控制子系统。
- 权限:用户对某一数据对象的操作权力
- 安全规则或授权规则:DBMS提供于定义用户权限的语言。
常用存取控制方法:
- 自主存取控制(DAC)
- C2级
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可以将其拥有的存取权限转授给其他用户。
- 强制存取控制(MAC)
- B1级
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予某一个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
自主存取控制方法
用户权限组成包含两个要素:数据对象和操作类型。
授权:定义存取权限。
存取控制的对象:数据本身和数据库模式。
授权:授予与收回
GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。
-
GRANT语句
GRANT <权限> ON <对象类型><对象名> TO <用户>;
WITH GRANT OPTION子句:获得该权限的用户可以把这种权限再授予给其他用户
ALL PRIVILEGES:全部权限
谁发出:DBA;数据库对象创建者;拥有该权限的用户
谁接收:一个或多个具体用户;PUBLIC
-
REVOKE语句
REVOKE <权限> ON <对象类型><对象名> FROM <用户> [CASCADE|RESTRICT];
SQL授权小结:
- 数据库管理员:拥有所有对象的所有权限
- 用户:拥有自己建立的对象的全部操作权限,可以使用GRANT授予给其它用户。
- 被授予的用户:如果具有“继续授权”的许可,可以再授权给其他用户
数据库角色
数据库角色是被命名的一组与数据库操作相关的权限。
- 角色是权限的集合。
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权过程
CREATE ROLE <角色名>;
GRANT <权限> ON <对象类型><对象名> TO <角色>;
将一个角色授予其他的角色或用户:GRANT <角色> TO <角色/用户> [WITH ADMIN OPTION]; (ADMIN还可以授予给其他人)
REVOKE <权限> ON <对象类型><对象名> TO <角色>;
- REVOKE的执行者:角色的创建者 & 拥有此角色的ADMIN OPTION
DROP ROLE <角色名>;
强制存取控制方法
自主存取控制缺点:
- 可能存在数据的”无意泄露“。
- 原因:因为这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。
强制存取控制(MAC):
- 保证更高程度的安全性
- 用户不能直接感知或进行控制
- 适用于对数据有严格而固定密级分类的部分:军事部门;政府部门
DBMS所管理的全部实体被分为主体和客体。
-
主体:系统中的活动实体
DBMS所管理的实际用户,代表用户的个进程
-
客体:系统中的被动实体,受主体操纵
文件,基本表,索引,视图
敏感度标记(Label):
- 对主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记。
- 敏感度标记被分为:绝密(TS)、机密(S)、可信©、公开§
- 主体的敏感度标记称为许可证级别。
- 客体的敏感度标记称为密级。
MAC规则:
- 上读:仅当主体的许可证级别 ≥ 客体的密级,该主体才能读取相应的客体。
- 下写:仅当主体的许可证级别 ≤ 客体的密级,该主体才能写相应的客体。
实现强制存取控制时要首先实现自主存取控制
- 原因:较高安全性级别提供的安全保护要包含较低级别的所有保护。
自主存取控制与强制存取控制共同构成DBMS的安全机制。
DAC+MAC安全检查:DAC→MAC
视图
CREATE VIEW CS_STU
SELECT *
FROM STUDENT
WHEN Sdept = ‘CS’;
GRANT SELECT ON VIEW CS_STU TO U1;
审计
WHAT:审计日志(Audit Log)将用户对数据库的所有操作记录在上面,审计员利用审计日志,监控数据库中的各种行为,找出非法存取数据的人、时间和内容。
WHERE:C2以上的安全级别的DBMS必须具有审计功能。
审计功能的可选项:
- 审计很费时间和空间
- DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能
- 审计功能主要用户安全性要求较高的部门。
AUDIT & NOAUDIT
数据加密
目的:放置数据库中数据在存储和传输中失密的有效手段。
思想:明文转换为密文
加密方法:存储加密 & 传输加密
另:存此篇末尾习题