南大通用GBase8s 常用SQL语句(六十三)

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

元素 描述 限制 语法
component 此处为此组件声明的名称 在当前数据库中的安全标签组件中必须唯一 标识符
element 此处定义的组件元素 在该 component 的元素中必须唯一,且不能多于 32 字节。左括号( ( )和右括号( ) )、逗号( , )和冒号(: )是无效字符 引用字符串
用法
只有 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 类型的组件适用于多维度安全策略的一些维度可表示为名义类别的上下文中,没有任何逻辑基础用于单调的比例对它们排序,也不用将它们排列在层次结构中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值