数据库系统概论——数据库安全性控制
数据库系统概论——数据库安全性控制
层层设置
-
系统根据用户标识鉴别用户,只允许合法用户进入计算机系统
-
数据库管理系统进行存取控制,只允许用户合法操作
-
操作系统自身有保护措施
-
数据以密码形式存储到数据库中
用户身份鉴别
用户身份鉴别(Identification & Authentication
)是DBMS
提供的最外层保护措施,用户标识由用户名和用户标识号组成
- 静态口令
由用户自己设定,静态不变
- 动态口令
每次鉴别用动态生成的口令进入DBMS
,一次一密
- 智能卡识别
利用不能复制的硬件,内置集成电路芯片,具有硬件加密功能
- 生物特征鉴别
利用指纹、虹膜和掌纹等进行识别
存取控制
用户权限定义和合法权检查机制一起组成DBMS
的存取控制系统
- 权限定义
用户对某一个数据对象的操作权力称为权限,DBMS
提供适当的语言来定义用户权限,存放在数据字典中,称为安全规则或授权规则
- 合法性检查
对用户发出的数据库操作请求,DMBS
查找数据字典,进行合法性检查
自主存取控制
自主存取控制(Discretionary Access Control, DAC
)指的是使得用户对不同的数据对象有不同的存取权限、不同的用户对同一对象也有不同的权限、用户可以将拥有的权限转授给其他用户的机制,其中SQL
通过GRANT
和REVOKE
语句实现用户权限定义和回收
权限授予
GRANT
grant <authority> [,<authority>]
on <object type><object name> [,<object type><object name>]
to <user>[,<user>]
[with grant option];
若指定了with grant option
子句则可以再转授权限,否则不能转授
发出GRANT的用户
-
DBA
-
数据库对象创建者
-
拥有该权限的用户
接收GRANT的用户
-
一个或多个具体用户
-
PUBLIC(全体用户)
示例
将department表的所有权限授予给用户user1,user2
grant all privileges
on table department
to use1, user2;
将department表的所有权限授予给所由用户
grant all privileges
on table department
to public;
缺点
GRANT
语句可以授权查询整个表或某些列的权限,但不能授予用户查询某些行的权限
权限回收
REVOKE
revoke <authority> [,<authority>]
on <object type><object name> [,<object type><object name>]
from <user>[,<user>] [CASCADE | RESTRICT]
示例
从用户user1回收对department表插入的权限
revoke insert
from table deparment
from user1;
创建数据库模式的权限
create user <username>
[with DBA|RESOURCES|CONNECT];
数据库角色
数据库角色指的是被命名的一组与数据库操作相关的权限的集合,可以为一组具有相同权限的用户建立一个角色,简化了授权的过程
创建角色
create role <role name>
向角色授权
grant <authority> [,<authority>]
on <object type><object name> [,<object type><object name>]
to <role>[,<role>]
角色授权给其他角色或用户
grant <role>[,<role>]
to <role>[,<role>]
with admin option
角色权限回收
revoke <authority> [,<authority>]
on <object type><object name> [,<object type><object name>]
to <role>[,<role>]
示例
- 创建角色
create role r1;
- 授予角色R1表department的所有权限
grant all priviledge
on table depatment
to r1;
- 将角色授予给user1, user2以角色R1包含的所有权限
grant r1
to user1, user2;
- 从user1回收权限
revoke r1
from user1;
缺点
自主存取可能存在数据的无意泄露,因为自主存取控制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全标记
强制存取控制方法
强制存取控制相对自主存取控制提供了更高的安全程度,用户不能直接感知或进行控制,适用于对数据有严格而固定密级分类的部门,强制存取控制是对数据本身进行密别标记,无论数据如何复制,标记与数据是不可分的整体,只有符合密级标记的要求用户才可以操纵数据
主体
主体指的是系统中的活动实体,例如数据库管理系统实际用户或代表用户的各进程等
客体
客体指的是系统中的受主体操纵的被动实体,例如文件、基本表、索引、视图等
敏感度标记
敏感度标记(Label
),对于主体和客体,数据库管理系统为每个实例指派一个敏感度标记,敏感度标记划分为多个级别,主体敏感度标记称为许可证级别(Clearance Level
),客体的则称为密级(Classification Level
)
存取控制规则
-
仅当主体许可证级别大于等于客体密级,该主体才能读取相应客体
-
仅当主体许可证级别小于等于客体密级,该主体才能写入相应客体
鸣谢
数据库系统概论(第5版)
数据库系统概念(原书第6版)
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解
发布评论