VERIFY_GROUP_FOR_USER 标量函数
VERIFY_GROUP_FOR_USER 函数返回一个值,该值指示与由 SESSION_USER 专用寄存器标识的授权标识相关联的任何组是否位于由 group-name-expression 参数列表指定的组名称中。
该模式是 SYSIBM。 不能将函数名指定为限定名。
- group-name-expression
- 用于指定授权名称的表达式 (SQLSTATE 42815)。 未验证当前服务器上是否存在授权名称。 group-name-expression 必须返回非 LOB 的内置字符串数据类型或图形字符串数据类型 (SQLSTATE 42815)。 该字符串的内容不会转换为大写,并且不会左对齐。
该函数的结果为整数。 结果不能为空。 如果与 SESSION_USER 专用寄存器标识的授权标识相关联的任何组都位于 group-name-expression 参数列表中,那么结果为 1。 否则,结果为 0。
示例 1
银行的柜员只能从他们所在的分行访问客户。 所有柜员都是 TELLER 组中的成员。 行许可权由具有 SECADM 权限的用户创建,以强制执行此规则。
CREATE PERMISSION TELLER_ROW_ACCESS ON CUSTOMER
FOR ROWS WHERE VERIFY_GROUP_FOR_USER(SESSION_USER,'TELLER') = 1 AND
BRANCH = (SELECT HOME_BRANCH FROM INTERNAL_INFO
WHERE EMP_ID = USER)
ENFORCED FOR ALL ACCESS
ENABLE示例 2
对于用户是否可以看到该行的判断取决于被保护表的 ACCESS_ROLE 列中的角色名称。 行许可权由具有 SECADM 权限的用户创建,以检查会话用户是否使用此角色。
CREATE PERMISSION ROLEACCESS ON CUSTOMER
FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER(SESSION_USER, ACCESS_ROLE ) = 1 )
ENFORCED FOR ALL ACCESS
ENABLE
