安全级别
不用看
共享 → 安全性问题 → 不能无条件共享
- 计算机系统中, 安全措施是一级一级层层设置
- 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
- 数据库管理系统还要进行存取控制,只允许用户执行合法操作
- 操作系统有自己的保护措施
- 数据以密码形式存储到数据库中
存取控制
自主存取控制怎么做, 缺点, REVOKE, GRANT
强制存取控制, 兼容
存取控制子系统
- 用户权限定义
- 定义用户权限(用户对某一数据对象的操作权利)并登记到数据字典中
- DBMS提供适当的语言来定义用户权限, 存放在数据字典中, 称为安全规则/授权规则
- 合法权限检查
- 用户发出存取数据库操作请求时, DBMS查询数据字典并进行合法权限检查
自主存取控制
- 同一用户对不同数据对象有不同存取权限
- 不同用户对同一数据对象有不同存取权限
- 用户可以将其拥有的权限转授给其他用户
用户权限组成: 数据库对象, 用户可以进行的操作类型
定义用户存取权限就是定义用户可以在哪些数据库对象上进行哪些类型的操作
授权机制
- 数据库管理员
- 拥有所有对象的所有权限
- 授予不同用户不同的权限
- 用户
- 拥有自己建立的对象的所有权限
- 可以使用
GRANT
语句将权限授予其他用户
- 被授权的用户
- 如果具有继续授权的许可, 则可以把获得的权限再授予其他用户
- 所有授予出去的权利在必要时都可以用
REVOKE
语句撤回
语法格式
不同类型对象的操作权限:
对象类型 | 对象 | 操 作 类 型 |
数据库模式 | 模式 | CREATE SCHEMA |
ㅤ | 基本表 | CREATE TABLE,ALTER TABLE |
ㅤ | 视图 | CREATE VIEW |
ㅤ | 索引 | CREATE INDEX |
数据 | 基本表和视图 | SELECT,INSERT,UPDATE,DELETE,REFERENCES,
ALL PRIVILEGES |
ㅤ | 属性列 | SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES |
- GRANT → 将对指定操作对象的指定操作权限授予指定的用户
发起GRANT者: 数据库管理员/对象创建者/拥有转授权限的用户
接受GRANT者: 任意个具体用户/全体用户(
PUBLIC
)- REVOKE → 收回授予出去的权限
与GRANT相同, 用户可以是
PUBLIC
. 创建数据库模式的权限
由数据库管理员在创建用户时规定各用户创建模式的权限.
拥有的权限 | 可否执行的操作 | ㅤ | ㅤ | ㅤ |
ㅤ | CREATE USER | CREATE SCHEMA | CREATE TABLE | 登录数据库 ,执行数据查询和操纵 |
DBA | 可以 | 可以 | 可以 | 可以 |
RESOURCE | 不可以 | 不可以 | 可以 | 可以 |
CONNECT | 不可以 | 不可以 | 不可以 | 可以,但必须拥有相应权限 |
CONNECT: 不能创建新用户, 不能创建模式, 不能创建基本表, 只能登录数据库, 执行对数据的查询和操纵(前提是有权限)
RESOURCE: 不能创建新用户, 不能创建模式, 可以创建基本表和视图, 可以称为创建对象的属主
DBA: 超级用户, 可以创建新用户, 可以创建模式, 可以创建基本表和视图, 拥有所有数据库对象的存取权限, 可以将权限授予其他一般用户.
“角色”式批量授权
- 数据库角色: 被命名的一组与数据库操作相关的权限(角色是权限的集合)
- 可以为一组具有相同权限的用户创建一个角色, 从而简化授权的流程(分配到该角色则拥有对应权限)
- 创建
- 为角色授权
- 将角色授予用户或其他角色(继承)
- 收回角色的权限
自主存取控制的缺点
- 仅仅通过对数据的存取权限进行安全控制, 数据本身没有安全性标记, 可能存在数据的无意泄漏.
- 解决: 对系统控制下的所有主客体实施强制存取控制策略(MAC)
强制存取控制
比自主存取控制具有更高程度的安全性
- 每一个数据对象(客体)被标以一定的密级
- 每一个用户(主体)也被授予某一个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
- 仅当主体的许可证大于等于客体的密级时, 主体才能读取相应客体;
- 仅当主体的许可证小于等于客体的密级时, 主体才能写入相应客体.
- 各级别信道物理意义上隔离.
- 用户不能直接感知或进行控制
对数据本身进行密级标记,无论数据如何复制,标记与数据都是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据.
适用于对数据有严格且固定的密级分类的部门使用.
实现强制存取控制(更强)首先要实现自主存取控制(更弱), 先进行自主存取控制检查, 如果能通过再进行强制存取控制检查.
Ch25
不太需要重点关注, 和视图有关, 前面讲视图说过了, 翻一翻就行
但是视图本身很重要!
视图
视图机制: 把要保密的数据对无权存取这些数据的用户隐藏起来(只暴露可见范围内的视图),对数据提供一定程度的安全保护, 可以间接地实现支持存取条件的用户权限定义.
审计
启用一个专用的审计日志, 记录用户对数据库的所有操作.
审计员利用审计日志监控数据库中的各种行为, 找出非法存取数据的人、时间和内容.
审计很费时间和空间, 主要用户安全性高的部门. 管理员可以根据对安全性的要求灵活开关审计功能.
审计事件:
- 服务器事件: 审计数据库服务器发生的事件
- 系统权限: 审计通过系统权限获得操作权限的、对系统拥有的结构或模式对象进行的操作
- 语句事件: 对SQL语句的审计
- 模式对象事件: 对特定模式对象上的操作的审计
多种审计查阅方式, 多套审计规则, 提供审计分析和报表功能, 审计日志管理功能
用户级审计(任何用户可设置, 针对自己创建的数据库表和视图)/系统级审计(管理员设置, 监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作)
数据加密
- 存储加密
- 透明存储加密: 内核级, 对用户透明, 写到磁盘/从磁盘读时加密/解密. 应用程序不需要处理加密和解密, 只需要在建表语句中说明需要加密的字段即可. 性能较好, 安全完备性较高
- 非透明存储加密: 通过多个加密函数实现
- 传输加密
- 链路加密: 在链路层进行加密, 报文和报头均加密, 每一跳上都加密解密
- 端到端加密: 在发送端加密, 接收端解密, 只加密报文, 途中不加密解密