数据库概论第四章-数据库安全性
数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、 更改或破坏。
数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
安全标准简介
数据库安全性控制
用户身份鉴别
- 静态口令鉴别 静态口令一般由用户自己设定, 鉴别时只要按要求输入正确的口令, 系统将允许用户使用数据库管理系统。
- 动态口令鉴别 常用的方式如短信密码和动态令牌方式, 每次鉴别时要求用户使用通过短信或令牌等途径获取的新口令登录数据库管理系统。
- 生物特征鉴别 生物特征是指生物体唯一具有的, 可测量、 识别和验证的稳定生物特征, 如指纹、 虹膜和掌纹等
- 智能卡鉴别 智能卡由用户随身携带, 登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。
存取控制
存取控制机制主要包括定义用户权限和合法权限检查两部分。定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统。
(1) 在自主存取控制方法中, 用户对于不同的数据库对象有不同的存取权限, 不同的用户对同一对象也有不同的权限, 而且用户还可将其拥有的存取权限转授给其他用户。 因此自主存取控制非常灵活,(主要指grant语句)
(2) 在强制存取控制方法中, 每一个数据库对象被标以一定的密级, 每一个用户也被授予某一个级别的许可证。 对于任意一个对象, 只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。 (主要指权限,密级)
自主存取控制方法
用户权限是由两个要素组成的: 数据库对象和操作类型。
定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。 在数据库系统中, 定义存取权限称为授权(authorization)。
在非关系系统中, 用户只能对数据进行操作, 存取控制的数据库对象也仅限于数据本身。
在关系数据库系统中, 存取控制的对象不仅有数据本身( 基本表中的数据、 属性列上的数据), 还有数据库模式( 包括数据库、 基本表、 视图和索引的创建等), 表 4.3 列出了主要的存取权限。
授权: 授予与收回
如果指定了 WITH GRANT OPTION 子句, 则获得某种权限的用户还可以把这种权限再授予其他的用户。 如果没有指定 WITH GRANT OPTION 子句, 则获得某种权限的用户只能使用该权限, 不能传播该权限。
SQL 标准允许具有 WITH GRANT OPTION 的用户把相应权限或其子集传递授予其他用户, 但不允许循环授权, 即被授权者不能把权限再授回给授权者或其祖先, 如图 4.4 所示。
REVOKE
授予用户的权限可以由数据库管理员或其他授权者用 REVOKE 语句收回
创建数据库模式的权限
数据库角色
数据库角色是被命名的一组与数据库操作相关的权限, 角色是权限的集合。
通俗来说,角色就是一类人,可以给另一类人授权
[例 4.11] 通过角色来实现将一组权限授予一个用户。
步骤如下:
① 首先创建一个角色 R1。
1 | CREATE ROLE R1; |
② 然后使用 GRANT 语句, 使角色 R1 拥有 Student 表的 SELECT、 UPDATE、 INSERT权限。
1 | GRANT SELECT,UPDATE,INSERT |
③ 将这个角色授予王平、 张明、 赵玲, 使他们具有角色 R1 所包含的全部权限。
1 | GRANT R1 |
④ 当然, 也可以一次性地通过 R1 来收回王平的这三个权限。
1 | REVOKE R1 |
强制存取控制方法
强制存取控制是指系统为保证更高程度的安全性, 按照 TDI/TCSEC 标准中安全策略的要求所采取的强制存取检查手段。 它不是用户能直接感知或进行控制的。 强制存取控制适用于那些对数据有严格而固定密级分类的部门, 例如军事部门或政府部门。
当某一用户( 或某一主体) 以标记 label 注册入系统时, 系统要求他对任何客体的存取必须遵循如下规则:
(1) 仅当主体的许可证级别大于或等于客体的密级时, 该主体才能读取相应的客体。
(2) 仅当主体的许可证级别小于或等于客体的密级时, 该主体才能写相应的客体。
视 图 机 制
视图机制间接地实现支持存取谓词的用户权限定义。 例如, 在某大学中假定王平老师只能检索计算机系学生的信息, 系主任张明具有检索和增删改计算机系学生信息的所有权限。 这就要求系统能支持“ 存取谓词” 的用户权限定义。 在不直接支持存取谓词的系统中, 可以先建立计算机系学生的视图 CS_Student, 然后在视图上进一步定义存取权限。
审 计
审计功能把用户对数据库的所有操作自动记录下来放入审计日志( auditlog ) 中。 审计员可以利用审计日志监控数据库中的各种行为, 重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、 时间和内容等。
AUDIT 语句和 NOAUDIT 语句
AUDIT 语句用来设置审计功能, NOAUDIT 语句则取消审计功能
数 据 加 密
加密的基本思想是根据一定的算法将原始数据—明文( plain text) 变 换 为不可直接识别的格式—密文 (cipher text), 从而使得不知道解密算法的人无法获知数据的内容。