第四章 数据库安全性
4.1 数据库安全性概述
- 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改或破坏。
- 主要技术指标:系统安全保护措施
4.1.1 数据库的不安全因素
1. 非授权用户对数据库的恶意存取和破坏
- 数据库管理系统提供的安全措施:用户身份鉴别,存取控制和视图等技术。
2. 数据库中重要或敏感的数据被泄露
- 数据库管理系统提供的主要技术:强制存取控制、数据加密存储和加密传输等。
- 安全要求较高的系统提供审计日志分析。
3. 安全环境的脆弱性
- 可信计算机系统标准
4.1.2 安全标准简介
1. 安全标准的发展历史
- TCSEC —— 美国(可信计算机系统评估准则)(1985)
- CC —— 通用准则(1993)—— (目前CC已基本取代了TCSEC,成为评估信息产品安全性的主要标准)
2. TCSEC标准
- TCSEC又称桔皮书,TCESEC/TDI —— 紫皮书
- 安全等级划分:安全策略、责任、保证、文档
- 四组(division)七个等级:D、C (C1,C2)、B(B1,B2,B3)、A (A1)。
- 七个等级按系统可靠或可信程度逐渐增高。
- D级:将一切不符合更高标准的系统均归于D组。(例如DOS系统)
- C1级:非常初级的自主安全保护,可以进行自主存取控制(DAC)。
- C2级:安全产品的最低档次。(例如:Windows2000,Oracle7)(不是很敏感的系统满足到这个程度就行了)
- B1级:标记安全保护。(安全或可信的)(实施强制存取控制(MAC)、审计等安全机制)(例如:HP-UX BLS ,Trusted Oracle 7)
- B2级:结构化保护。(DAC和MAC)
- B3级:安全域。(提供系统恢复过程)(冗余)
- A1级:验证设计。
3. CC标准
- CC标准组成:简介和一般模型,安全功能要求,安全保证要求。
- 评估保证级(七级):EAL1 ~ EAL7
4.2 数据库安全性控制
1. 非法使用数据库的情况
- 编写合法程序绕过数据库管理系统及其授权机制。
- 直接或编写应用程序执行非授权操作。
- 通过多次合法查询数据库从中推导出一些保密数据。
2. 计算机系统的安全模型
3. 数据库有关的安全性
- 数据库安全性主要包括:用户身份验证、多层存取控制、审计、视图、数据加密等安全技术。
4.2.1 用户身份鉴别
- 用户身份鉴别是数据库管理系统提供的最外层安全保护措施。
- 用户身份鉴别的方法:
- ① 静态口令鉴别
- ② 动态口令鉴别
- ③ 生物特征鉴别
- ④ 智能卡鉴别
4.2.2 存取控制
1. 存取控制机制组成
- 用户权限定义 和 合法权检查机制 一起组成了数据库管理系统的存取控制子系统。
2. 常用存取控制方法
- 自主存取控制(DAC) 和 强制存取控制(MAC)。
- 自主存取控制(DAC):不同数据对象,不同存取权限,不同用户,不同权限,也可将权限转授给其他用户。(C2级)
- 强制存取控制(MAC):具有合法许可证的用户才可以存取。(B1级)
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
- SQL通过 GRANT 和 REVOKE语句 实现向用户授予或收回对数据的操作权限。
1. GRANT
- GRANT:对指定操作对象的指定操作权限授予指定的用户。
- 【说明】
- ① 发出GRANT法人可以是数据库管理员、数据库对象创建者(即属主Owner)、拥有该权限的用户。
- ② 接受权限的用户可以是一个或多个具体用户、PUBLIC(全体用户)
- ③ WITH GRANT OPTION子句:有,表示该权限可以再授予其他用户。没有,表示该权限不可以再授予其他用户。
- ④ SQL标准不允许循环授权。(U1→U2→U3→U4)(U4不能再授权给U1)
- ⑤ 对属性列的授权时必须明确指出相应属性列名。
2. REVOKE
- REVOKE:授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回。
- 【总结】
- ① 数据库管理员的授权:拥有所有对象的所有权限。根据实际情况不同的权限授予不同的用户。
- ② 用户的授权:拥有自己建立的对象的全部的操作权限。可以使用GRANT,把权限授予其他用户。
- ③ 被授权用户的授权:如果具有 “继续授权” 的许可,可以把获得的权限再授予其他用户。
- ④ 所有授予出去的权力在必要时又都可用REVOKE语句收回。
3. 创建数据库模式的权限
- 数据库管理员在创建用户时实现对创建数据库模式的权限。
- 【说明】
- ① 超级用户才有权创建一个新的数据库用户
- ② 新创建的数据库用户有三种权限:CONNECT,RESOURCE和DBA,默认用户只有CONNECT权限。
③拥有 RESOURCE权限 的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户。
④拥有DBA权限的用户是系统中的超级用户,可以创建新用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
4.2.5 数据库角色
- 数据库角色是指被命名的一组与数据库操作相关的权限,角色是权限的集合。
- 可以为一组具有相同权限的用户创建一个角色。简化授权的程。
- SQL中首先用 CREATE ROLE语句 创建角色,然后用 GRANT语句 授权,用 REVOKE 收回授予角色的权限。
1. 角色的创建
- 格式:
CREATE ROLE <角色名>;
2. 给角色授权
- 格式:
GRANT <权限> [,<权限>]…
ON <对象类型> 对象名
TO <角色> [,<角色>]… ;
3. 将一个角色授子予其他的角色或用户
- 格式:
GRANT <角色1> [,<角色2>]…
TO <角色3> [,<用户1>]…
[ WITH ADMIN OPTION ] ;
- 【说明】
- ① 该语句把角色授予某用,或授予的一个角色
- ② 授予者是角色创建者或拥有在这个角色上的ADMIN OPTION。
- ③ 指定了WITH ADMIN_OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。
4. 角色权限的收回
- 格式:
REVOKE <权限> [,<权限>]…
ON <对象类型> <对象名>
FROM <角色> [,<角色>] … ;
- 【说明】
- ① 用户可以回收角色的权限,从而修改角色拥有的权限)
- ② REVOKE 执行者是:角色的创建者、拥有在这个角色上的ADMIN OPTION。
4.2.6 强制存取控制方法
1. 自主存取控制缺点
- 可能存在数据 “无意泄露” 的风险。
- 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。
- 解决:对系统控制下的所有主客体实施强制存取控制策略。
2. 强制存取控制(MAC)
- 作用:保证更高程度的安全性、用户不能直接感知或进行控制。
- 适用于对数据有严格而固定密级分类的部门,如军事部门、政府部门。
(1)在强制存取控制中实体分类:
- ① 主体:主体是系统中的活动实体。(用户)
的实际用户和代表用户的各进程。 - ② 客体:客体是系统中的被动实体,(文件、基本表、索引、视图)。
(2)敏感度标记(Label):
- 敏感度标记(Label):绝密(TS)、机密(S)、可信(C)、公开(P) 。
- 密级的次序为:
TS>=S>=C>=P
。 - 主体的敏感度标记称为许可证级别(Clearance Level) 。
- 客体的敏感度标记称为密级(Classification Level)。
3. 强制存取控制规则
- (1)仅当全体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
- (2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
- 【说明】
- ① 强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
- ② 实现强制存取控制时要首先实现自主存取控制。(原因:较高安全性级别提供的安全保护要包含较低级别的所有保护)
- ③ 自主存取控制 与 强制存取控制 共同构成数据库管理系统的安全机制。
3. DAC+MAC安全检查
4.3 视图机制
- 视图对数据库安全的作用:
- ① 把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。
- ② 间接地实现支持存取谓词的用户权限定义。
4.4 审计(Audit)
1. 什么是审计?
- (1)审计日志(Audit Log):启用一个专用的审计日志,将用户对数据库的所有操作记录在上面。
- (2)审计员:审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容。
- (3)C2以上安全级别的 DBMS 必须具有审计功能。
2. 审计功能的可选性
- (1)审计很费时间和空间。
- (2)DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能。
- (3)审计功能主要用于安全性要求较高的部门。
3. 审计事件
- (1)服务器事件:审计数据库服务器发生的事件。
- (2)系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
- (3)语句事件:对SQL语句,如DDL、DML、DQL及DCL语句的审计。
- (4)模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计。
4. 审计功能
- (1)基本功能:提供多种审计查阅方式。
- (2)多套审计规则:一般在初始化设定。
- (3)提供审计分析和报表功能。
- (4)审计日志管理功能。
- ① 防止审计员误删审计记录,审计日志必须先转储后删除。
- ② 对转储的审计记录文件提供完整性和保密性保护。
- ③ 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等。
- (5)提供查询审计设置及审计记录信息的专门视图。
5. 审计分类
- 审计分为 用户级审计 和 系统级审计 。
6. AUDIT语句和NOAUDIT语句
- AUDIT语句设置审计功能,NOAUDIT语句取消审计功能。
- 【说明】
- ① 审计设置和审计日志一般存储在数据字典中。
- ② 必须打开审计开关,系统参数audit_trail设为true,才能在系统表SYS_AUDITTRAIL中看到审计信息。
- ③ 数据库安全审计系统提供一种事后检查的安全机制。
4.5 数据加密
- 数据加密是防止数据库中数据在存储和传输中失密的有效手段。
- 加密的基本思想是根据一定的算法将原始数据一明文(plain-text)变换为不可直接识别的格式 一 密文(Cipher text)。
- 数据加密包括 存储加密 和 传输加密。
1. 存储加密
- (1)透明存储加密 —— 对用户完全透明
- (2)非透明存储加密 —— 通过多个加密函数实现
2. 传输加密
- (1)链路加密 —— 在链路层进行加密,报头和报文均加密。
- (2)端到端加密 —— 发送端加密,接收端解密;只加密报文;易被获取敏感信息。
- 数据库管理系统可信传输示意:
- ① 确认通信双方端点的可靠性
- ② 协商加密算法和密钥
- ③ 可信数据传输
4.6 其他安全性措施
1. 推理控制
- 处理强制存取控制未解决的问题,避免用户利用能够访问的数据推知更高密级的数据。
2. 隐蔽信道
- 处理强制存取控制未解决的问题。
3. 数据隐私保护
- 控制不愿被他人知道或他人不便知道的个人数据的能力。
4.7 小结
数据库管理系统是管理数据的核心,必须有套完整而有效的安全性机制。
数据库管理系统的主要安全措施有:
- ① 用户身份鉴别;
- ② 自主存取控制和强制存取控制技术;
- ③ 视图技术和审计技术;
- ④ 数据加密存储和加密传输。
Comments | NOTHING