4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 数据库角色的引入
例:
可能需要不断重复得类似相同的操作——非常麻烦
grant select, update, insert | grant select, update, insert
on table Student | on table Student
to U1,U2; | to U3;
grant select, update(Ccredit) | grant select, update(Ccredit)
on table Course | on table Course
to U1,U2; | to U3;
grant select, insert | grant select, insert
on table SC | on table SC
to U1,U2; | to U3;
♥ 数据库角色:被命名的一组与数据库操作相关的权限
◾ 角色是权限的集合
◾ 可以为一组具有相同权限的用户创建一个角色
◾ 简化授权过程
所以针对上述例子,我们可以创建一个角色——拥有对Student表的select, update, insert,对Course表拥有select, update(Ccredit)以及对SC表的 select, insert操作能里的权限——使用角色来管理数据库权限,可以简化授权和回收的过程
♥ 使用角色管理数据库权限
- 角色的创建——默认权限为空
create role <角色名>
- 给角色授权
grant <权限>[,<权限>...]
on <对象类型> 对象名
to <角色>[,<角色>...]
- 讲一个角色授予其他的角色或用户
grant <角色1>[,<角色2>...]
to <角色3>[,<用户1>...]
[with admin option] -- 指定with admin option则获取权限的角色或用户还可以吧这种权限授予其他角色
指定with admin option则获取权限的角色或用户还可以吧这种权限授予其他角色
◾ 授予者是角色的创建者或者拥有在这个角色上的admin option
- 角色权限的回收
revoke <权限>[,<权限>...]
on <对象类型> 对象名
from <角色>[,<角色>...]
◾ 用户可以回收角色的权限,从而达到修改角色拥有的权限的目的
◾ revoke执行这是:
● 角色的创建者
● 拥有这在这个(些)角色上admin opion
[例 4.1] 通过角色来实现权限管理
步骤如下:
(1)首先创建角色R1
create role R1;
(2)然后使用grant语句,使角色R1拥有对Student表的select, update, insert
grant select, update, insert
on table Student
to R1;
(3)将该角色授予张三、李四、王五。使他们具有角色R1所包含的全部权限
grant R1 to 张三,李四,王五;
(4)可以一次性通过R1来收回对战三的这3个权限
revoke R1 from 张三;
[例 4.2] 增加角色的权限
grant delete
on table Student
to R1;
使得角色R1在原来的基础上增加了Student表的delete权限
现R1拥有对Student表的select, update, insert,delete操作权限
[例 4.3] 减少角色的权限
revoke select
on table Student
from R1;
使得角色R1减少了对Student表的select权限
现R1拥有对Student表的update, insert,delete操作权限
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 可能存在数据的“无意泄露”(其实就是故意的ヾ(@⌒ー⌒@)ノ)
♥ 例:只有财务人员再有访问职工工资表EMP-Salary
create table Salary-copy
as select Eno,Name,Salary
from Emp=Salary;
grant select
on table Salary-copy
to public; -- 职工工资信息被泄露
自主存取控制权仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
4.2.6 强制存取控制方法
♥ 强制存取控制(MAC)
◾ 保证更高程度的安全性
◾ 用户不能直接感知或进行控制
◾ 适用于对数据有严格而固定密级分类的部门
● 军事部门
● 政府部门
♥ 在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
♥ 主体是系统中的活动实体
◾ 数据库管理系统所管理的实际用户
◾ 代表用户的各进程
♥ 客体是系统中的被动实体,受主体操纵
◾ 文件、基本表、索引表、视图
♥ 敏感度标记(Label)
◾ 对于主体和客体,DBMS为他们每个实例(值)指派一个敏感度标记(Label)
- 主体的敏感度标记为许可证级别(Clearance Level)
- 客体的敏感度标记称为密级(Classification Level)
◾ 敏感度标记分为若干级别
● 绝密(Top Secret, TS)
● 机密(Secret, S)
● 可信(Confidential, C)
● 公开(Public,P)
● TS >= S >= C >= P
♥ 强制存取控制规则
(1) 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
例子:主体级别为:机密
所以,其可以读机密、可信、公开的客体
(2) 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写入相应的客体
例子:主体级别为:机密
所以,其可以写机密和绝密的客体
若,其为写入的客体赋予绝密的密级,其也不能读
即:防止主体恶意降低客体密级
♥ 强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
♥ DAC + MAC安全检查
♥ 实现强制存取控制MAC时要首先实现自主存取控制DAC
◾ 原因:较高安全级别提供的安全保护要包含较低级别的所有保护
♥ 自主存取控制DAC与强制存取控制MAC共同构成数据库管理系统的安全机制
♥ 小结
♥ 数据库角色
◾ 创建角色
◾ 给角色授权
◾ 将角色授权给用户或其他角色
◾ 角色权限的回收
♥ 强制存取控制
◾ 为主体的每个实例指派一个许可证级别
◾ 为客体的每个实例指派一个密级
◾ 通过许可证级别与密级匹配关系进行存取控制
上一篇:4.2 数据库安全性控制(1)
目 录:《数据库系统概论》
下一篇:4.3 视图机制 4.4 审计(Audit) 4.5 数据加密 4.6 其他安全性保护 4.7 小结