数据库系统概论——数据库安全性控制

数据库系统概论——数据库安全性控制

层层设置

  • 系统根据用户标识鉴别用户,只允许合法用户进入计算机系统

  • 数据库管理系统进行存取控制,只允许用户合法操作

  • 操作系统自身有保护措施

  • 数据以密码形式存储到数据库中

用户身份鉴别

用户身份鉴别(Identification & Authentication)是DBMS提供的最外层保护措施,用户标识由用户名和用户标识号组成

  • 静态口令

由用户自己设定,静态不变

  • 动态口令

每次鉴别用动态生成的口令进入DBMS,一次一密

  • 智能卡识别

利用不能复制的硬件,内置集成电路芯片,具有硬件加密功能

  • 生物特征鉴别

利用指纹、虹膜和掌纹等进行识别

存取控制

用户权限定义和合法权检查机制一起组成DBMS的存取控制系统

  • 权限定义

用户对某一个数据对象的操作权力称为权限,DBMS提供适当的语言来定义用户权限,存放在数据字典中,称为安全规则或授权规则

  • 合法性检查

对用户发出的数据库操作请求,DMBS查找数据字典,进行合法性检查

自主存取控制

自主存取控制(Discretionary Access Control, DAC)指的是使得用户对不同的数据对象有不同的存取权限、不同的用户对同一对象也有不同的权限、用户可以将拥有的权限转授给其他用户的机制,其中SQL通过GRANTREVOKE语句实现用户权限定义和回收

权限授予

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版)

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解

猜你喜欢

转载自blog.csdn.net/qq_44486439/article/details/107939933
今日推荐