将值插入到受保护的表内

在使用基于标签的访问控制(LBAC)的数据库中,INSERT 语句的 INTO 子句可引用被安全策略保护的表,如果该用户持有保护该表的标签的安全策略的足够的凭证,且持有对该表的 Insert 权限的话。

然而,未持有安全标签的用户不可将数据插入到有 LBAC 行保护的表内,即使该用户已经被授予了从该安全策略的规则所需要的豁免,除非在 INSERT 语句的 VALUES 子句中指定受保护表的行标签。数据操作语言语句可提供受保护的表的行标签,通过调用任何三个内建的函数,其第一个参数指定安全策略的名字,且其附加的参数为下列之一: 例如,下列 INSERT 语句调用内建的 SECLABEL_BY_NAME 函数,以便将新行插入到名为 tab002 的表内,该表受到 MegaCorp 安全策略的名为 Decca 的行标签的保护:
INSERT INTO tab002 
   VALUES (SECLABEL_BY_NAME('Megacorp', 'Decca'), 45, 'A.C.Debussy'); 
此 INSERT 操作能否成功取决于该用户的安全凭证是否充分,相对于 Decca 标签的组件值,来启用对 tab002 表的写访问。

要了解关于通过调用 SECLABEL_BY_NAME 或类似的内建的函数访问受保护的表的 INSERT 语句的附加的示例,请参阅 安全标签支持函数。要了解关于 LBAC 安全策略、安全标签、读和写的访问规则以及从那些规则的豁免的通用信息,请参阅您的 GBase 8s 安全指南