基于标签的拜访控制
基于标签的拜访控制(Label-based access control,LBAC)是一种控制数据拜访的体式技俩。它控制谁可以对数据库对象截至读写拜访。这里的数据库对象普通指一行或一列。LBAC 具有行级别粒度、列级别粒度,或两者兼具。LBAC 控制拜访的体式技俩是将分拨给数据库对象的安然标签与赋予用户的安然标签截至婚配。IDSLBACRULES 拜访规矩是一组预界说的拜访规矩,规画对受维护表中受维护行或列的拜访。只有数据库安然规画员(DBSECADM)可以对 LBAC 对象截至设置。
安然标签组件
安然标签组件是 LBAC 安然战略的构成部门。它们用于树立安然战略安宁安标签。它们是一些可以截至树立、删除、修改或重定名的数据库实体。
安然标签组件有三种类型:ARRAY、SET 和 TREE。每种类型最多有 64 个安然标签组件元素。
- ARRAY 是一组分级的元素列表。个中第一个元素的级别最高,而最初一个元素的级别最低。下面的例子演示了运用 ARRAY 规范的
CREATE SECURITY LABEL COMPONENT
:CREATE SECURITY LABEL COMPONENT level ARRAY [ 'Top Secret', 'Secret', 'Confidential', 'Un>
- SET 是一个横向的元素列表,个中所有的元素都具有雷同的级别。下面的例子演示了运用 SET 规范的
CREATE SECURITY LABEL COMPONENT
:CREATE SECURITY LABEL COMPONENT department SET {'Marketing', 'HR', 'Finance'};
- TREE 是一个树形构造,个中第一个元素(根)具有最初级别,而下面的分支(子元素和孙子元素)的级别较低。下面的例子演示了运用 TREE 规范的
CREATE SECURITY LABEL COMPONENT
:
清单 26. 运用 TREE 规范的 CREATE SECURITY LABEL COMPONENT:CREATE SECURITY LABEL COMPONENT region TREE ( 'Headquarters' ROOT, 'West' UNDER 'Headquarters', 'East' UNDER 'Headquarters', 'California' UNDER 'West', 'New York' UNDER 'East', 'Florida' UNDER 'East');
安然战略
安然战略与需求实行拜访控制的表有关。要树立安然战略,需求界说称号和一个或多个组件标签(最多 16 个)。安然战略也是一种可以实行树立、删除和重定名利用的数据库实体。
清单 27. CREATE SECURITY POLICY 示例
CREATE SECURITY POLICY company COMPONENTS region, department;
安然标签
安然标签与表中的数据库对象(行或列)以及用户干系。只要用户持有的安然标签(凭据)与数据库对象干系的安然标签婚配,才能拜访受维护表中的对象。要树立安然标签,需求为标签署义称号,指定该标签所属的安然战略,确定该战略的组件,并为每个组件确定一个或多个元素。
清单 28. CREATE SECURITY LABEL 示例
CREATE SECURITY LABEL company.label2 COMPONENT level 'Secret', COMPONENT function 'Administrative', COMPONENT region 'Southwest';
赋予安然标签
若是用户想要拜访受 LBAC 维护的数据,安然规画员(DBSECADM)必须赋予他们适合的凭据。凭据分为以下几类:FOR READ ACCESS、FOR WRITE ACCESS 或 FOR ALL ACCESS。
清单 29. GRANT SECURITY LABEL 示例
GRANT SECURITY LABEL company.label1 TO sam FOR READ ACCESS;
维护表
树立完 LBAC 安然对象后,需求将其运用到数据中,即将安然战略附加到表,将安然标签附加到表行和表列。这可以经过议定 CREATE TABLE
和 ALTER TABLE
语句完成。
行级别粒度
要对表运用行级别粒度,必须将安然战略附加到表并指定安然标签列的规范为 IDSSECURITYLABEL。若是某个用户实行拜访某行,而他又不具有对该行的 LBAC 凭据,则数据库将相应该行并不存在。
清单 30. CREATE TABLE,附加安然战略并指定一个安然标签列
CREATE TABLE T5 (C1 IDSSECURITYLABEL, C2 int) SECURITY POLICY company;
对受维护表拔出行
只要拥有准确 LBAC 凭据时,用户才能向受维护表实行拔出利用。若是用户拔出了一行而没无为 IDSSECURITYLABEL 列指定值,体系将把用户的默许安然标签(FOR WRITE ACCESS)分拨给被拔出的行。可是,用户可以经过议定以下内置函数指定安然标署称号或组件。
SECLABEL_BY_COMP()
:该函数运用户可以在拔出或更新行时指定单独的组件。例如:INSERT INTO T5 VALUES (SECLABEL_BY_COMP('company', 'Secret:HR:West'), 1);
SECLABEL_BY_NAME()
:该函数可以运用户可以在拔出或更新行时指定安然标签的称号。例如:INSERT INTO T5 VALUES (SECLABEL_BY_NAME('company', 'label1'), 1);
下面的内置函数用于 SELECT
语句:
SECLABEL_TO_CHAR()
:该函数运用户可以检索 IDSSECURITYLABEL 列并暗示个中的各个组件。例如:SELECT SECLABEL_TO_CHAR('company', c1), c2 FROM T5; (expression) Secret:HR:West c2 1
列级别粒度
要运用列级别粒度维护表,需求将安然战略附加到表并将安然标签附加到一个或多个列。若是受维护表中的某列受安然标签维护,若要实行拔出,用户必须具有适合的凭据。若是某个用户实行拜访某列,而他又不具有对该列的 LBAC 凭据,数据库将相应为错误。
清单 31. CREATE TABLE,将安然战略安宁安标签附加到列
CREATE TABLE T6 ( C1 int, C2 char (10) COLUMN SECURED WITH label1) SECURITY POLICY company;
版权声明: 原创作品,容许转载,转载时请务必以超链接形式标明文章 原始理由 、作者信息和本声明。否则将清查法令责任。