GBase 8s CREATE SECURITY LABEL COMPONENT 语句

143 篇文章 3 订阅
142 篇文章 0 订阅

使用 CREATE SECURITY LABEL COMPONENT 语句在当前数据库中定义新的安全标签组件和其
元素。
该语句是 SQL ANSI/ISO 标准的扩展。
语法
在这里插入图片描述

用法
只有 DBSECADM 能发出 CREATE SECURITY LABEL COMPONENT 语句,来定义安全标签组件。
这是定义一个或多多个逻辑类别的数据库对象,其值可以在安全策略中使用以确定用户的读取或写
入数据的请求是接受还是拒绝。安全组件可具有的所有有效单个值的集合由该语句为组件指定的安
全标签组件的集合来定义。
安全标签组件实施的逻辑类别由 DBSECADM 在设计安全策略的过程中标识,它是基于标签访问控制
(LBAC)的核心构造。然而,要在数据库中实施此安全功能,DBSECADM 必须以下列顺序创建安全对
象:

  1. 一个或多个安全标签集合,每个集合可由 CREATE SECURITY LABEL COMPONENT 语句
    定义。该语句指定安全做件的名称、其值范围的结构和此组件可被分配给将安全策略应用与
    数据或用户的安全标签的可能值。
  2. 一个或多个安全策略,每个策略可通过 CREATE SECURITY POLICY 语句定义,它可指定
    应用于数据和尝试对数据库中的安全策略包含的数据执行读取或写入操作的用户,一个或多
    个组件列表和角色集合。安全策略总是包含 CREATE SECURITY POLICY 值的组件的所有
    的元素。
  3. 可使用 CREATE SECURITY LABEL 定义安全标签,它为每个标签支持的安全策略的一个
    或多个组件指定一个或多个值。此安全标签可以应用于数据和用户。一个安全标签的所有组
    件必须是同一安全策略的组件,但是多个安全策略和多个安全标签可以共享同一组件。
    CREATE SECURITY LABEL COMPONENT 定义的一个安全标签一般只包含一个安全组件
    元素的子集。
    如果您包含可选的 IF NOT EXISTS 关键字,则当指定名称的安全标签组件已经在当前数据库中注册
    时,数据库服务器不采取操作(而非向应用程序发生异常)。
    请参阅 GRANT Security 和 REVOKE Security 语句以获取安全标签和豁免安全策略的规则是如何
    定义用户或角色的 LABC 凭证的信息。
    请参阅 CREATE TABLE 和 ALTER TABLE 语句获取安全标签如何与数据库表或表中的一个数据
    行关联的信息。
    安全标签组件的类型和元素
    安全标签组件它自己包含一个或多个 CREATE SECURITY LABEL COMPONENT 语句声明为字符
    串变量的元素。这些元素定义对此组件有效的值的集合。
    当 CREATE SECURITY LABEL 语句成功执行,GBase 8s 更新了具有以下新条目的数据库的系统目录:
     它在 sysseclabelcomponents 表中创建新行以注册新的组件。
     对于新组件的每个元素,它在 sysseclabelcomponentelements 表中创建新行。
    安全标签组件必须定义为三种组件类型之一。紧跟在组件名称声明之后的 ARRAY 、SET 或 TREE
    关键字指定组件类型,它必须跟随在此安全组件的元素列表之后。 这些元素定义组件在安全策略内
    可具有的值的集合。对于所有安全标签策略的三种类型,元素集具有以下限制:
     安全组件不能拥有超过 64 个的元素。
     安全组件的每个元素都是不超过 32 字节的带引号的字符串变量。
     在带引号字符串变量中的字符不能包含左括号( ( )或右括号( ))、逗号( , )或冒
    号( : ),但是 DB_LOCALE 设置支持的其它符号是有效的,包括空格符(ASCII 32)。
     每个元素在同一安全策略组件的元素中必须唯一,但是同一引号字符串变量还可以是其它安
    全标签组件的元素。
    组件中每个元素的定义隐含与数据库表或单个数据行相关联的安全标签的数据敏感性的级别,还影
    响了拥有读取或写入由同一标签或指定该组件的一个或多个元素的不同标签保护的数据的安全标签
    的用户的安全凭证。
    就像其它可定义数据库对象的数据库 SQL 数据定义语言 ,CREATE SECURITY LABEL
    COMPONENT 必须为每个组件元素指定一个字符值,而非占位符。要更改现有安全标签组件的定义,
    DBSECADM 可使用 ALTER SECURITY LABEL COMPONENT 向 ARRAY 、SET 或 TREE 组件
    中插入新元素。然而,要删除或重命名一个或多个组件的单个元素, DBSECADM 必须使用 DROP
    SECURITY LABEL COMPONENT 语句销毁现有的组件,然后重新发出 CREATE SECURITY
    LABEL COMPONENT 语句来创建新的组件,定义所需的组件结构内的元素值集。
    ARRAY 组件
    ARRAY 类型的安全标签组件是不超过 64 个元素的有序集合。每个元素定义了一个对安全策略内
    的组件有效的值。声明的元素的顺序是十分重要的,因为它定义数据敏感性的降序顺序,其中每个
    连续的元素在数据敏感性上排名低于前面的元素。ARRAY 的标签元素集和其逗号分隔符必须包含
    在一对方括号([ … ] )之间。
    当在安全标签的定义中指定 ARRAY 组件时,该标签只能指定一个此组件的元素作为组件的值。
    以下示例定义名为 aquilae ARRAY 类型的安全标签组件,其是五个元素的顺序集合,这五个元素分
    别为 imperator 、tribunus 、centurio 、miles 和 asinus :
    CREATE SECURITY LABEL COMPONENT aquilae
    ARRAY [ “imperator”, “tribunus”, “centurio”, “miles”, “asinus” ];
    此处具有最高数据敏感性的组件元素是 imperator ,asinus 具有最低的数据敏感性,具有
    tribunus 数据敏感性的数据排在有 centurio 数据敏感性的数据之前,有 imperator 数据敏感性
    的数据之后。
    在多维度安全策略的一些维度可以被映射到单调递减的单个标度的上下文中,适用 ARRAY 类型的
    组件。
    SET 组件
    SET 类型的安全标签组件是指不超过 64 个元素的无序集合。SET 的每个元素都是不超过 32 字节
    的字符串常量,且在此组件中必须唯一,但是同一值可在其它组件中使用。SET 组件的元素声明的
    顺序对这些元素识别的类别的数据敏感性并不重要。这些元素和其逗号分隔符必须包含在一对大括
    号({ … } )之间。
    当在安全标签的定义中指定 SET 组件时,此标签可以指定该组件一个或多个元素作为其的有效值。
    在以下示例中,DBSECADM 定义了一个称为 departments 的安全标签组件,它是三个元素的无序集
    合,这三个元素分别为 Marketing 、HR 和 finance :
    CREATE SECURITY LABEL COMPONENT departments
    SET { ‘Marketing’, ‘HR’, ‘Finance’ };
    就像所有 SET 类型的组件,这些元素声明的顺序意味着在数据敏感性上没有相对的排名。
    SET 类型的组件适用于多维度安全策略的一些维度可表示为名义类别的上下文中,没有任何逻辑基
    础用于单调的比例对它们排序,也不用将它们排列在层次结构中。
    TREE 组件
    TREE 类型的安全标签组件具有层次结构的逻辑拓扑(即,没有循环的简单图),其具有单个根节
    点和不超过 63 个附加节点。必须首先列出根节点的字符串变量,并且后面必须跟 ROOT 关键字。
    每个后续声明的节点的字符串常量必须后跟关键字 UNDER 和一些先前声明的节点的字符串常量。
    TREE 组件的元素集(包括它们的 ROOT 和 UNDER 关键字及逗号分隔符)必须包含在一对
    (( … ))括号之间。
    在 UNDER 关键字之后指定的标签元素称为同一 UNDER 关键字(称为该父元素的 child)之前的
    标签元素的 parent。如果没有在同一语句中声明 UNDER 关键字之后的节点名称,则 CREATE
    SECURITY LABEL COMPONENT 语句发生错误并失败。
    指定为 TREE 组件的根节点的字符串常量具有最高的数据敏感性。对于用户读取或写入受保护的数
    据,用户安全标签的每个 TREE 组件必须包括数据行安全标签的 TREE 组件中的至少一个元素,
    或者一个这样元素的祖先。例如,如果 “Beta” 声明为 UNDER “Alpha” ,“Gamma” 声明为 UNDER
    “Beta” 则 “Gamma” 的数据敏感度低于 “Alpha” 。只有在同一父子关系链中的元素才能在其数据
    敏感性中进行比较。
    下一示例定义了一个 TREE 结构并具有六个节点的名为 Oakland 的安全标签组件:
    CREATE SECURITY LABEL COMPONENT Oakland
    TREE ( ‘Port’ ROOT,
    ‘Downtown’ UNDER ‘Port’,
    ‘Airport’ UNDER ‘Port’,
    ‘Estuary’ UNDER ‘Airport’,
    ‘Avenues’ UNDER ‘Downtown’,
    ‘Hills’ UNDER ‘Avenues’);
    此处的根节点是 Port,它具有最高数据敏感性。在此层次结构中,Downtown 、Avenues 和 Hills 元
    素代表数据敏感性的降序级别,Airport 元素的数据敏感性比 Estuary 元素高。在此示例中,
    UNDER 关键字指定为父节点的四个组件元素在被包括在 UNDER 规范之前被声明。如果 Avenues
    节点声明在 Airport 节点之前,则此示例的修改版本也是有效的,但是如果 Hills 节点声明先于
    Avenues 节点,则会导致错误。
    TREE 类型组件可以适用于多维安全策略的一些维度映射到单个逻辑层次结构或者共享公共根的层
    次结构的上下文中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值