SECLABEL_TO_CHAR 函数

SECLABEL_TO_CHAR 函数返回一个安全标签字符串格式的安全标签。

执行此函数的用户的安全凭证可影响该函数的输出。如果用户没有对那个元素的读访问权限,则在输出中不包括安全标签组件的元素。如果用户提供对该数据的读访问的安全凭证,由仅包含那个元素而没有其他元素的安全标签保护数据,则用户有对该元素的访问权限。

对于规则集 IDSLBACRULES,仅类型 TREE 的组件可包含用户没有对元素的子集的读访问权限的元素。对于其他类型组件,如果任何元素阻止读访问,则用户根本不可读该行。因此,仅类型 TREE 的安全组件可有以此方式排除的安全组件元素的子集。

例如,如果用户的安全标签的 TREE 类型组件为 {A},且行安全标签的 TREE 类型组件为 {A, B},则仅返回组件 A,且用户感觉不到在行安全标签中存在 B。然而,如果用户持有 IDSLBACREADTREE 规则上的豁免,则返回的安全组件为 AB

在下一示例中,MegaCorp 安全策略有名为 mylabel 的安全标签,该标签由其值为 'Director' 的 level 组件,以及带有值 'HR' 和 'Finance' 的 compartments 组件组成。被授予了 ‘mylabel’ 的用户已将带有那个安全标签的一行插入到表 T1 内。在此上下文中,在下列 T1 上的 SELECT 语句中,由 SECLABEL_TO_CHAR 函数返回的安全标签字符串如下。
SELECT SECLABEL_TO_CHAR ('MegaCorp’, C1) FROM T1;
          
          Row returned:
          
          'Director:(HR,Finance)'
        

由于数据库服务器允许对安全策略名称和安全标签组件的值的读访问,根据 MegaCorp 安全策略的 IDSLBACREAD 规则,此查询的成功说明 SECLABEL_TO_CHAR 函数成功,且该用户的安全凭证是充分的。

限定安全标签字符串的最大大小为 32 KB。如果要被返回的安全标签字符串的长度超出此上限,则发出警告,且返回截断了的 32 KB 字符串。