4.2 数据库安全性控制(2)

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操作能里的权限——使用角色来管理数据库权限,可以简化授权和回收的过程

♥  使用角色管理数据库权限

  1. 角色的创建——默认权限为空
create role <角色名>
  1. 给角色授权
grant <权限>[,<权限>...]
on <对象类型> 对象名
to  <角色>[,<角色>...] 
  1. 讲一个角色授予其他的角色或用户
grant <角色1>[,<角色2>...] 
to <角色3>[,<用户1>...] 
[with admin option]			-- 指定with admin option则获取权限的角色或用户还可以吧这种权限授予其他角色

指定with admin option则获取权限的角色或用户还可以吧这种权限授予其他角色
    ◾ 授予者是角色的创建者或者拥有在这个角色上的admin option

  1. 角色权限的回收
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 小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值