#CHAR_TO_LABEL
CHAR_TO_LABEL函数用于获取LBAC标签策略中指定标签内容所对应的标签值。
若指定的标签内容已存在则直接返回对应的标签值,若指定的标签内容不存在会先自动创建新的标签再返回对应的标签值(自动创建的标签值区间为[1000000000,4000000000])。
本函数仅适用于HEAP表。
使用本函数可能需要调用YLS_ENFORCEMENT、SA_SYSDBA、SA_COMPONENTS、SA_LABEL_ADMIN等内置高级包,相关权限要求和使用约束还会受限于相应的内置高级包。
policy_name
LBAC标签策略名称,策略名称大小写不敏感,可查询DBA_SA_POLICIES视图获取。
label_string
标签内容,必须符合标签格式要求且对应的组件均存在,标签内容大小写不敏感。
可参考SA_LABEL_ADMIN查看标签格式要求。
可查看DBA_SA_LABELS视图获取该策略下的已存在的标签。
可查看DBA_SA_LEVELS视图获取该策略下的等级信息。
可查看DBA_SA_COMPARTMENTS视图获取该策略下的范围信息。
示例(HEAP表)
-- 打开LBAC
CALL YLS_ENFORCEMENT.ENABLE_YLS;
-- 创建LBAC标签策略
CALL SA_SYSDBA.CREATE_POLICY('lbac_policy', 'policy_column');
-- 创建LBAC等级
CALL SA_COMPONENTS.CREATE_LEVEL( 'lbac_policy', 10, 'GENERAL', 'GENERAL');
CALL SA_COMPONENTS.CREATE_LEVEL ( 'lbac_policy', 20, 'SENS', 'SENS');
CALL SA_COMPONENTS.CREATE_LEVEL ( 'lbac_policy', 30, 'SECRET', 'SECRET');
-- 创建LBAC区间
CALL SA_COMPONENTS.CREATE_COMPARTMENT ( 'lbac_policy', 10, 'MNG', 'MNG');
CALL SA_COMPONENTS.CREATE_COMPARTMENT ( 'lbac_policy', 20, 'QA', 'QA');
CALL SA_COMPONENTS.CREATE_COMPARTMENT ( 'lbac_policy', 30, 'RD', 'RD');
CALL SA_COMPONENTS.CREATE_COMPARTMENT ( 'lbac_policy', 40, 'TEST', 'TEST');
-- 创建标签
CALL SA_LABEL_ADMIN.CREATE_LABEL ('lbac_policy', 1001, 'GENERAL:MNG');
SELECT CHAR_TO_LABEL('lbac_policy', 'general:mng') label_tag FROM DUAL;
LABEL_TAG
---------------------
1001
-- 删除策略
CALL SA_SYSDBA.DROP_POLICY('lbac_policy', TRUE);
-- 关闭LBAC
CALL YLS_ENFORCEMENT.DISABLE_YLS;

