jxq
作者jxq·2021-02-01 10:10
其它·gbase

分布式数据库系统数据安全(二)自主访问控制

字数 1644阅读 2485评论 0赞 1

(一)概述

(二)自主访问控制

自主访问控制涉及对三类主要参与者的控制:主体(例如,用户、用户群组),触发应用程序执行;操作,嵌入应用程序之中;数据库对象,对其执行操作。自主访问控制检查能否执行给定的三元组(主体,操作,对象)。例如,该用户能否对该对象执行该操作。可以将授权视为三元组(主体,操作类型,对象定义)。该三元组指定主体具有对对象执行特定类型操作的权限。为了正确地控制授权,DBMS需要定义主体、对象和访问权限。

通常通过一个二元组(用户名,口令)定义系统中的主体。用户名唯一标识系统中叫那个名称的用户,只有叫那个名称的用户才知道口令,通过口令验证用户。为了登入系统,必须同时提供用户名和口令,避免不知道口令的用户仅凭用户名就进入系统。

需要保护的对象是数据库的子集。与早期的系统相比,关系型系统提供更精细且更通用的保护粒度。在文件系统中,最小保护单位是文件,而在面向对象的DBMS中,最小保护单位是对象类型。在关系型系统中,可以使用选择谓词通过其类型(视图、关系、元组、属性)以及通过其内容定义对象。此外,视图机制允许只通过对未获授权的用户隐藏关系(属性或元组)的子集来保护对象。

权限表示主体与对象之间对于一组特定操作的关系。在基于SQL的关系型DBMS中,操作是诸如SELECT、INSERT、UPDATE或DELETE这样的高级语句,使用下列语句来定义(授予或撤销)权限:

GRANT <操作类型> ON <对象> TO <主体>
REVOKE <操作类型> FROM <对象> TO <主体>

关键词public可用于表示所有用户。可以根据谁(授予者)能授予权限来描述授权控制。最简单的权限控制形式是集中式控制:数据库管理员这个用户或用户类拥有对数据库对象的所有权限,只允许数据库管理员使用GRANT和REVOKE语句。

更灵活也更复杂的控制形式是非集中式的:对象的创建者成为对象的所有者,被授予对该对象的所有权限。特别是有一个附加操作类型GRANT,将执行该语句的授予者的所有权限转移给指定主体。因此,取得权限的人(被授予者)可以接着授予对该对象的权限。这种方法的主要难度在于,撤销处理必须是递归的。例如,A授予B,B又授予C对对象O的GRANT权限,如果A想要撤销B对O的所有权限,则也必须撤销C对O的所有权限。为了执行撤销,系统必须为每个对象维护一个授权层次体系,其中,对象的创建者是根。

将主体对对象的权限作为授权规则记录在目录中。有几种存储授权的方式。最方便的方法是将所有权限视作一个授权矩阵。矩阵的每行定义一个主体,每列定义一个对象,每个矩阵项(对应二元组<主体,对象>)定义授权的操作。由操作类型(例如,SELECT、UPDATE)指定授权的操作。习惯上将操作类型与一个谓词关联,进一步限制对对象的访问。对象是基础关系且不能是视图时,提供这种选项。例如,对二元组<Jones,关系EMP>的一个授权操作可能是

SELECT WHERE TITLE = “Syst.Anal.”

其授权Jones仅访问系统分析人员的雇员元组。下图是授权矩阵的示例,对象是关系(EMP和ASG)或属性(ENAME)。


图1 授权矩阵示例

可以有三种授权矩阵存储方式:按行、按列,或按元素。按行存储矩阵时,每一主体与对象列表相关联,这些对象可以以相关的访问权限一起访问。该方法使授权得以高效执行,因为已注册用户的所有权限都在一起(在用户配置文件中)。不过操纵每一对象的访问权限(例如,使对象成为public)并不高效,因为必须访问所有主体配置文件。按列存储矩阵时,每一对象与主体列表相关联,这些主体可以相应的访问权限访问该对象。此方法的优点和缺点与前一方法正相反。

将这两种方法各自的优点组合形成第三种方法,即按元素存储矩阵,也就是按关系(主体,对象,权限)存储。该关系可以同时在主体和对象上建有索引,从而提供按主体和按对象的快速访问权限控制。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广