db_4 数据库安全性/完整性
db_4 数据库保护
数据安全性概述
保护数据库以防止不合法的使用所造成的数据泄漏、更改和破坏
- 向授权用户提供可靠的信息服务
- 拒绝对数据的非授权存取访问请求,保证数据的可用性、完整性和一致性,进而保护数据库所有者和使用者的合法权益
安全标准/可信计算机系统评测标准
- TCSEC(Trusted Computer System Evaluation Criteria)– 1985年
- 美国国防部制定了可信计算机评估标准TCSEC
- TDI/TCSEC
- 1991年4月,美国国家计算机安全中心NCSC发布《可信计算机系统评估标 准关于数据库系统的解释TDI(Trusted Database Interpretation)》,将 TCSEC扩展到数据库管理系统
- TDI与TCSEC从安全策略、责任、保证、文档四个方面描述了安 全级别划分的指标。
数据库安全性控制
计算机系统安全模型
- 用户标识与认证
- 访问控制(存取控制)
- 审计
- 加密技术
- 推理的控制
- 隐通道分析技术
- 视图机制
DBMS安全性控制模型
用户标识与认证
DBMS提供的最外层安全保护措施
标识是指系统采用一定的方式标识其用户或应用程序的名字或身份
认证是指系统在用户或应用程序登录时判断其是否为合法的授权用户
常用的方法是采用用户名和口令
存取控制
确保合法用户按照指定的权限使用 DBMS和访问数据,而非法用户或不具有相关权限的用户则不能。
- 用户权限定义:将用户权限记录到数据字典中,形成安全规则或授权规则
- 合法权限检查:根据数据字典中的安全规则进行合法权限检查
- 用户权限定义和合法权限检查机制一起组成了DBMS 的安全子系统
- 自主存取控制(DAC)
- 用户对于不同的数据对象拥有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户可以将其拥有的权限转授给其他用户
- 强制存取控制(MAC)
- 每一个数据对象被标以一定的密级,每一个用 户也被授予某一个级别的许可证
- 对于任一个对象,只有具有合法许可证的用户才可以存取
自主存取控制(DAC)
- 用户权限:
- 数据对象
- 操作类型
- 授权:
- 定义用户的存取权限
- 用户 名,数据对象名,允许的操作类型
- 存取控制的对象
- 数据库模式(数据库、基本表、视图、索引)
- 数据(基本表、视图的数据、属性列的数据)
授权
- 用户级权限
- DBA为每个用户授予的特定权限
- 对用户使用整个数据库权限的限定
- 与数据库中具体的关系无关
1 | GRANT<权限>[,<权限>]… |
- public数据库中的全部用户
- WITH GRANT OPTION 允许被授权的用户将指定的用户级权限授予其他用户
1 | REVOKE<杈限>[,<权限>]… |
- 关系级权限
- DBA或数据库对象的拥有者为用户授予的与关系或视图有关的权限
- 对用户使用关系和视图权限的限定
1 | GRANT ALL | <权限>[,<权限>]… |
1 | REVOKE ALL | <杈限>[,<权限>]… |
数据库角色
角色是权限的集合
数据库角色是被命名的一组与数据库相关的权限
1 | CREATE ROLE<角色名> |
强制存取控制(MAC)
系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求所采取的强制存取检查手段。
它不是用户能直接感知或进行控制的
强制存取控制适用于那些对数据有严格而固定密级分类的部门,例如军事部门或政府部门
- 主体是系统中的活动实体
- 既包括DBMS所管理的实际用户,也包括代表用户的各进程
- 客体是系统中的被动实体,是受主体操纵的
- 包括文件、基本表、索引、视图等
- 敏感度标记
- 绝密、机密、秘密、公开(TS>=S>=C>=P)
- 主体的敏感度标记称为许可证级别
- 客体的敏感度标记称为密级
- 当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
- 当主体的许可证级别等于客体的密级时,该主体才能写相应的客体
视图机制
为不同的用户定义不同的视图
间接可以将用户对数据的访问限制在一定的范围内
审计
把用户对数据库的所有操作都自动记录下来放入审计日志中
DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、时间和内容等
数据库安全审计系统提供了一种事后检查的安全机制
数据加密
防止数据库中数据在存储和传输中失密。
加密的基本思想是根据一定的算法将原始数据(明 文)变换为不可识别的格式(密文),从而使得不知道解密算法的人无法获知数据的内容。
- 存储加密
- 传输加密
推理的控制
处理强制存取控制未解决的问题
例如,利用列的函数依赖关系,用户能从低安全等级信息推导出其无权访问的高安全等级信息,进而导致信息泄露。
数据库推理控制机制用来避免用户利用其能够访问的数据推知更高密级的数据
即用户利用其被允许的多次查询的结果,结合相关的领域背景知识以及数据之间的约束,推导出其不能访问的数据
- 基于函数依赖的推理控制、
- 基于感关联的推理控制等。
隐通道分析技术
处理强制存取控制未解决的问题
利用未被强制存取控制的 SQL 执行后反馈的信息进行间接信息传递
数据库完整性
含义
数据完整性是指数据的正确性和相容性
- 正确性是指数据应具有合法的类型,并在有效的取值范围之内
- 相容性是指同一对象在不同关系中的数据是符合逻辑的
DBMS维护数据库完整性功能
- 定义功能,提供定义完整性约束条件的机制
- 检查功能,检查用户发出的操作请求是否违背了完整性约束条件
- 违约响应,若违背了完整性约束条件,则采取一定措施来保证数据的完整性
完整性检查的时机
- 立即执行约束
- 执行用户事务的过程中, 在一条语句执行完后立即进行完整性约束的检查。若违背了完整性约束,系统将拒绝该操作
- 延迟执行约束
- 整个用户事务执行完毕后, 再进行完整性约束的检查,结果正确方能提交。 否则系统将拒绝整个事务
完整性约束条件
数据库完整性约束条件:施加在数据库数据之上的语义约束条件
作用的对象可以
- 列:类型、取值范围、精度
- 元组:元组中各个字段间联系的约束
- 关系:若干元组间、关系之间的联系
分类
完整性约束条件类型 | 约束条件作用的对象 | SQL支持方式 |
---|---|---|
实体完整性 | 关系约束:一个关系元组之间的 | PRIMARY KEY |
参照完整性 | 关系约束:关系之间联系的约束 | FOREIGN KEY |
用户自定义完整性 | 列约束,元组约束 | UNIQUE, NOT NULL, CHECK |
- 静态约束
- 指数据库在每一确定状态数据对象所应满足的约束条件
- 反映数据库状态合理性的约束
动态约束
- 指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件
- 反映数据库状态变迁的约束
静态关系约束
- 实体完整性约束、参照完整性约束、函数依赖、统计约束……
完整性规则的表示
五元组( D,O, A,C,P )
- D ( Data ) 约束所作用的数据对象
- O ( Operation ) 触发完整性检查的数据库操作
- A ( Assertion ) 数据对象必须满足的断言或语义约束
- C ( Condition ) 选择A作用的数据对象值的谓词
- P ( Procedure ) 违反完整性规则时触发的过程
表TEACHER(编号,姓名,职称,工资,..),
表达:教授的工资不得低于5000元。 D:工资0 O:插入或修改 A:工资>=5000 C:职称=’教授’ P:拒绝执行该操作
完整性约束条件实现机制
CREATE TABLE
- NULL/NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
断言
CREATE ASSERTION <断言名>
触发器
- 触发器是用户定义在关系上的一类由事件驱动的特殊过程
- 事件-条件-动作规则
1 | CREATE TRIGGER <触发器名称> |