jxq
作者jxq·2018-11-09 09:38
其它·gbase

数据库产品 CC 认证的最佳实践(四十)《GBase 8t V8.5安全目标》之6.1.2 访问控制

字数 4023阅读 1579评论 0赞 2

(一)前言
(二)CC 通用准则概述
(三)CC 通用准则的演进
(四)CC 安全性评估
(五)安全功能组件
(六)安全保证组件
(七)评估保证级
(八)《安全目标》编写规范
(九)《GBase 8t V8.5安全目标》之目录
……

(四十)《GBase 8t V8.5安全目标》之6.1.2 访问控制

6.1.2 访问控制

GBase 8t 自主访问控制(DAC)机制能够根据不同的用户来包括或排除其对 GBase 8t 对象的访问权限,并使用户能够控制其他用户对这些对象的访问。除非用户已明确地获得授权或在缺省情况下根据自主访问控制策略可以访问数据库中的信息,否则,任何用户都无法访问这些数据。请注意,尽管自主访问控制机制依赖底层操作系统来提供并保护其存储介质(即,文件),但 GBase 8t 自主访问控制机制与底层操作系统的机制不同。

GBase 8t 自主访问控制策略保护数据库中存储的信息,达到给定表中单独列的粒度。数据库的 GBase 8t 系统目录包括存储访问控制列表(ACL)的表,这些数据标识用户及其对该数据库中特定对象的访问权限。GBase 8t 系统为数据库、表、视图、同义词、类型、例程和序列定义访问权限。可以使用适当的 SQL 语句授予和撤销这些访问权限。通过用户名将访问权限授予单个用户,或者通过使用特殊名称 PUBLIC 将访问权限授予所有用户。

这些访问权限是按照与适用对象相关联的权限级别来组织的:数据库级权限、表级权限、类型级权限、例程级权限和序列级权限。请注意,还有语言级权限,但不将这些权限视为与安全相关的权限,因为语言级权限仅用于限制在用户定义的例程中可以使用的语言。权限级别实际上只是逻辑分组,可以指定给定级别中的特定权限,并用于控制对相应对象的访问。

对于表、视图、同义词、类型、例程和序列,都有一个创建该对象的所有者用户。此外,如果对象是由 DBA 创建的,则可以将该对象名称指定为 user.objectname,且该用户成为对象的所有者。为了访问此类对象,用户仍至少需要 connect 权限才能连接到该对象所在的数据库。另一方面,数据库具有一个自动获取 dba 权限的创建者,但没有数据库所有者的概念。通过授予和撤销数据库的 dba 权限,可以更改数据库的管理职责。dba 权限基本体现了全部数据库可用的权限,并且拥有该权限的任何用户都被称为该数据库的 DBA。此外,DBA 可以指定(即,更改)其数据库中对象的所有者。

除非用户至少具有该数据库的下列权限之一:dba、resource 或 connect,否则,用户不能访问数据库中的任何信息。connect 权限允许用户访问数据库,包括将检索到的信息存储在临时表中的能力。resource 权限意味着 connect 权限,外加在数据库中创建表和索引的能力。dba 权限意味着 resource 和 connect 权限,体现数据库中的完全管理权限,包括授予和撤销其他用户的数据库权限的能力。请注意,这些权限中的每一项都只适用于特定的数据库。在尝试进行访问(连接到数据库、查询表等)时,也会检查每一权限。如果更改权限,则在用户下次尝试进行需要进行访问权限检查的访问时,该更改生效。

只有当用户至少对该表具有下列权限之一时,该用户才能访问表中的信息:alter、delete、index、insert、references、select 和 update。alter 权限允许用户更改表的关系模式,以及在表的列上添加或删除约束。alter 权限隐含着 index 权限,允许用户在表上创建索引。delete 权限允许用户从表中删除一行,而 insert 权限允许用户在表内插入新行。references 权限允许用户定义表上的引用约束。请注意,可以在相关联的表中的某一列或某些列上授予对表的 select、references 和 update权限。select 权限允许用户从表中的所有列或部分列中检索数据。update 权限隐含着 select 权限,并允许用户更改表中某些列或全部列中的值。

通过数据库和表权限来控制对视图和同义词的自主访问控制。没有为这些对象定义特定的权限。

为了访问一个类型,用户必须具有使用该类型的 usage 权限,或者具有 under 权限,以便创建该类型的一个子类型。

要执行一个例程,要求用户具有对该例程的 execute 权限。

为了使用或修改一个序列,用户必须分别具有 select 或 alter 权限。

不同的对象权限依赖于对象之间的关系。alter 和 index 表权限取决于该用户具有相关联的 resource 数据库权限。delete、insert、select 和 update 表权限取决于该用户具有相关联的 connect 数据库权限。

请注意,实际上有三种类型的表:上文所述的永久性表、临时表和视图。创建临时表是为了完成诸如联接这样的操作,以便将信息返回给用户。当用户终止其数据库会话时,将删除这些表。为了创建一个视图,用户必须在适当的数据库上具有 connect 数据库权限,并在适当的表列(或者其他可能用于创建该视图的其他视图)上具有 select 表权限。请注意,当创建视图时,该视图从相关联的表和视图继承访问控制。

GBase 8t 实现的角色可以专门与允许其执行特权 SQL 语句的用户相关联。如后所示,任何被分配了任何管理角色的用户实际上都被视为获得授权的管理员,因为这些角色都允许访问其他不受信任的用户无法使用的 SQL 语句。只有少量的角色,例如 DBSA,可以绕过一般的自主访问控制规则。

除了使用许可来控制访问之外,获得授权的管理员还可以定义 LBAC 安全标签,获得授权的用户可以将 LBAC 策略分配给表。一旦将 LBAC 策略分配给表(“保护”表的概念),如果该表包含一个安全标签列,则该表受到行级粒度的保护,否则,如果(根据表定义)该表具有一个由安全标签保护的列,则该表受到列级粒度的保护。随后,当用户试图创建、修改或以其他方式访问表中的数据时,除了受“自主访问控制”规则限制之外,还会根据与其会话相关联的安全标签、与该表相关联的安全标签以及 LBAC 访问规则来限制用户对表中数据的访问。因此,对特定行或列的访问请求受 LBAC 约束的制约。

LBAC 标签具有三类可用组件中的零(0)个或多个(但必须始终至少有一个组件):

  • array——表示一个有序的集合;该集合中的任意元素都比该集合中的后续元素级别更高。
  • set——表示一个无序的集合;在该集合中的元素之间没有定义好的关系,且元素的顺序无关紧要。
  • tree——表示一个层级结构,用于表示组织架构图,并标识拥有可应用数据的组织内部的各个部门。

有两组规则,每组有三个规则,以确定基于 LBAC 标签所允许的访问权限:

当检索数据时,应用“读访问规则”。在 SELECT、UPDATE 和 DELETE 操作期间检索数据。

  • LBACREADARRAY ——用户安全标签的每一 array 组件都必须大于或等于对应的数据(行或列)安全标签的 array 组件。
  • LBACREADTREE——用户安全标签的每一 tree 组件都必须包括对应的数据(行或列)安全标签的 tree 组件中的至少一个元素(或一个这样元素的祖先)。
  • LBACREADSET——用户安全标签的每一 set 组件都必须包括对应的数据(行或列)安全标签的 set 组件。

“写访问规则”适用于 INSERT、UPDATE 和 DELETE 操作。

  • LBACWRITEARRAY——用户安全标签的每一 array 组件都必须等于对应的数据(行或列)安全标签的 array 组件。
  • LBACWRITETREE——用户安全标签的每一 tree 组件都必须包括至少一个对应的数据(行或列)安全标签的 tree 组件中的元素(或一个这样元素的祖先)。
  • LBACWRITESET——用户安全标签的每一 set 组件都必须包括对应的数据(行或列)安全标签的 set 组件。

除了上述规则之外,GBase 8t 还可以将特定的豁免分配给用户,以便绕过上面归纳的一个或多个读和写规则。

GBase 8t 旨在限制对对象的访问,直到首次写入了对象的资源为止。虽然 GBase 8t 实际上并没有清除资源,但通过在写入了或初始化了数据之后才允许读取数据,确保不会不恰当地重用或访问信息。有许多妥善管理的内部 GBase 8t 资源,以防止出现不恰当泄露的可能性。对于外部可访问对象,GBase 8t 管理那些可用的且可能添加至对象的空闲页。当创建或扩展对象时,将添加资源,但直到使用这些资源时才能读取它们。当使用资源时,初始化适用的资源并管理其内容,以确保只读取先前写入的内容。释放资源后,只是将该资源标记为空闲,可用于重用。

“访问控制”安全功能满足下列安全要求:

FDP_ACC.1 子集访问控制
——通过将权限与适用于每一已标识的 GBase 8t 对象的所有操作相关联,并在用户尝试执行操作时要求用户具有相应的权限或具有管理角色,GBase 8t 满足此要求。

FDP_ACF.1 基于安全属性的访问控制
——通过将权限与适用于每一已标识的 GBase 8t 对象的所有操作相关联,并在用户尝试执行操作时要求用户具有相应的权限或具有管理角色,GBase 8t 满足此要求。

FDP_IFC.1 子集信息流控制
——通过允许将 LBAC 策略分配给表,来控制后续的读和写操作,GBase 8t 满足此要求。

FDP_IFF.2 分级安全属性
——通过强制执行上文中总结的 LBAC 信息流规则,GBase 8t 满足此要求。

FDP_RIP.2a 完全残余信息保护
——通过确保只有在已首次写入了数据之后才能读取数据,GBase 8t 满足此要求。

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

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广