目录
- 一、安全性概述
- 1.1不安全因素
- 1.2安全标准简介
- 1.2.1 TCSEC/TDI标准
- 1.2.2 CC标准
- 1.3安全性控制
- 二、存取控制
- 2.1自主存取控制
- 2.1.1权限的授予和回收
- 2.1.2创建数据库模式的权限
- 2.1.3数据库角色
- 2.2强制存取控制方法
- 2.1自主存取控制
- 三、其他安全措施
- 3.1视图机制
- 3.2审计技术
- 3.3数据加密
一、安全性概述
1.1不安全因素
非授权用户对数据库的恶意存取和破坏
数据库中重要或敏感的数据被泄露
安全环境的脆弱性
1.2安全标准简介
1.2.1 TCSEC/TDI标准
各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力
1.2.2 CC标准
1.3安全性控制
计算机系统中,安全措施是一级一级层层设置
数据库管理系统安全性控制模型
数据库系统常用的安全性控制方法包括:用户标识与鉴别,存取控制,视图,审计,数据加密
二、存取控制
组成
- 定义用户权限,并将用户权限登记到数据字典中
- 用户对某一数据对象的操作权力称为权限
- DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
- 合法权限检查
- 用户发出存取数据库操作请求
- DBMS查找数据字典,进行合法权限检查
2.1自主存取控制
通过 SQL 的 grant语句和 revoke语句实现
用户权限组成
- 数据对象
- 操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权
关系数据库系统中的存取权限
2.1.1权限的授予和回收
1、授予 grant
grant <权限列表> on <对象名> to <用户/角色列表>
/*
权限列表可以是 all privileges,或者如下
select:查询
delete:删除元组
insert [(<属性列>,...,<属性列>)]:插入
update [(<属性列>,...,<属性列>)]:修改
references [(<属性列>,...,<属性列>)]:赋予用户创建关系时定义外码的能力
*/
2、回收 revoke
grant <权限列表> on <对象名> to <用户/角色列表>
{cascade | retrict}
2.1.2创建数据库模式的权限
--数据库管理员在创建用户时实现
create user
[with][dba | resource | connect];
create user语句格式说明
- 只有系统的超级用户才有权创建一个新的数据库用户
- 新创建的数据库用户有三种权限:connect、resource和DBA
- 如没有指定创建的新用户的权限,默认该用户拥有connect权限
2.1.3数据库角色
定义:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
--创建角色
create role <角色名>
--角色授权
grant <权限列表> on <对象名> to <角色名>
--使用角色授权
grant <角色列表> to <用户/角色列表>
--收回授予角色的权限
revoke <权限列表> on <对象名> from <角色名>
--收回角色
revoke <角色列表> from <用户/角色列表> {cascade | restrict}
--通过角色来实现将一组权限授予一个用户。步骤如下:
--首先创建一个角色 R1
create role R1;
--然后使用grant语句,使角色R1拥有Student表的 select、update、insert权限
grant select,update,insert
on table Student
to R1;
--将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
grant R1
to 王平,张明,赵玲;
--可以一次性通过R1来回收王平的这3个权限
revoke R1
from 王平;
2.2强制存取控制方法
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
主体是系统中的活动实体
- 数据库管理系统所管理的实际用户
- 代表用户的各进程
客体是系统中的被动实体,受主体操纵
- 文件、基本表、索引、视图
敏感度标记
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记
敏感度标记分成若干级别
- 绝密
- 机密
- 秘密
- 公开
主体的敏感度标记称为许可证级别
客体的敏感度标记称为密级
强制存取控制规则
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
- 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
实现强制存取控制时要首先实现自主存取控制
- 原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
三、其他安全措施
3.1视图机制
首先定义视图,屏蔽一部分需要对某些用户保密的数据;然后在视图上定义存取权限,将对使徒的访问权授予这些用户,而不允许他们直接访问定义视图的关系
3.2审计技术
审计技术是一种监视措施,它跟踪数据库中的访问活动,检测可能的不合法行为
审计启用一个专门的审计日志,自动记录所有用户对数据库的更新(插入、删除、修改)
审计日志记录部分
- 操作类型(插入、删除、修改)
- 操作终端标识与操作者标识
- 操作日期和时间
- 操作涉及的数据(关系、元组、属性等)
- 数据的前像和后像
3.3数据加密
按照一定的加密算法,将原始数据(明文)变换成不可直接识别的格式(密文)
加密模式不应依赖于算法的保密,而是依赖于算法参数,即密钥