数据库安全性控制

自主存取控制方法

存取控制机制主要包括定义用户权限和合法检查两个部分

  • 定义用户权限并将用户权限登记到数据字典中

  • 合法权限检查

定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统

GRANT <权限> [,<权限>]... ON<对象类型><对象名>[,<对象类型><对象名>]... TO <用户>[,<用户>]... [WITH GRANT OPTION];

如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限在授予给其他的用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,而不能传播该权限。

SQl标准允许具有[WITH GRANT OPTION]的用户把相应权限或其子集传递授予其他的用户但不允许循环授权,其被授予者不能把权限在授予回给授权者或其祖先。

-- 把对表SC的查询权限授予给所有用户 GRANT SELECT  ON TABLE SC  TO PUBLIC;  

REVOKE:

授予用户的权限可以有数据库管理员或其他授权者用REVOKE语句收回,REVOKE语句的一般格式为:

REVOKE<权限>[,<权限>]... ON <对象类型><对象名>[,<对象类型><对象名>]... FROM <用户>[,<用户>]...[CASCADE|RESTRICT];  
-- 把用户U5对SC表的INSERT权限收回 REVOKE INSERT ON TABLE SC FROM U5 CASCADE;  

用户可以“自主”地决定将数据的存取权限授予何人、决定是否也将”授权”的权限授予别人。因此称这样的存取控制是自主存取控制。

创建数据库模式的权限

-- 默认用户拥有CONNECT权限 CREATE USER <USERNAME>[WITH][DBA|RESOURCE|CONNECT]; 

CREATE USER语句说明如下:

  • 只有系统的超级用户才有权创建一个新的数据库用户。

  • 新创建的数据库用户只有三种权限:CONNECTRESOURCEDBA

拥有的权限 是否可执行的操作
CREATE USER CREATE SCHEMA CREATE TABLE 登录数据库,执行数据查询和操纵
DBA 可以 可以 可以 可以
RESOURCE 不可以 不可以 可以 可以
CONNECT 不可以 不可以 不可以 可以,但必须拥有相应的权限

注意:CREATE USER语句不是SQl标准,因此不同的关系数据库管理系统的语法和内容相差甚远。

数据库角色

数据库角色是被命名的一组域数据库操作相关的权限,角色是权限的集合。

角色的创建

CREATE ROLE <角色名> 

给角色授权

GRANT <权限>[,<权限>]... ON<对象类型>对象名 TO<角色>[,<角色>]...  

将角色授予给其他的角色和用户

GRANT <角色1>[,<角色2>]... TO <角色3>[,<角色4>]... [WITH ADMIN OPTION]  

角色权限的收回

-- REVOKE动作的执行者或者是角色的创建者或者是拥有这个(些)角色的ADMIN OPTION REVOKE <权限>[,<权限>]... ON <对象类型><对象名> FROM <角色>[,<角色>]...  

强制存取控制方法

自主存取控制(MAC)能够通过授权机制有效的控制对敏感数据的存取。在这种授权机制下,仍可能存在数据的“无意泄露”。这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。要解决这个问题,就需要对系统控制下的所有主客体实施强制存取控制策略。

实体分类

主体

系统中的活动实体,既包括数据库管理系统管理的实际用户,也包括代表用户的进程

客体

系统中的被动实体,实收主体操纵的,包括文件、基本表、索引、视图等

敏感性标记

对于实体(主体和客体),数据库管理系统会为他们每个实例都排一个敏感性标记

敏感性标记级别

  • 绝密(TS)

  • 机密(S)

  • 可信©

  • 公开§

密级的次序是TS>=S>=C>=P。

主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定是否能够存取客体。

读写规则

  • 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体

  • 仅当主体的许可证级别小于或等于客体的密级时,该主体才可以写相应的客体(写了就读不了)

如果违反了规则2,就有可能把数据的密级由高流向低,造成数据的泄露

强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记和数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。

审计

审计功能把用户对数据库的所有操作自动记录下来放在审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

AUDIT语句和NOAUDIT语句

-- 对修改SC表结构或修改SC表数据的操作进行审计 AUDIT ALTER,UPDATE ON SC; -- 取消对SC表的一切审计 NOAUDIT ALTER,UPDATE ON SC;  

审计设置以及审计日志一般都储存在数据字典中。必须把审计开关打开(即把系统参数audit_trail设为true),才可以在系统表SYS——AUDITTRAIL中查看到审计

版权声明:玥玥 发表于 2021-03-30 2:56:11。
转载请注明:数据库安全性控制 | 女黑客导航