VERIFY_GROUP_FOR_USER
VERIFY_GROUP_FOR_USER 函數會傳回一個值,指出指定的使用者是在使用者設定檔清單中,還是屬於 authorization-id-expression 引數清單所指定的任何群組使用者設定檔的成員。
- SESSION_USER 或 USER 或 CURRENT_USER
- 指定授權 ID。
- authorization-id-expression
- 指定授權名稱的表示式。 未驗證現行伺服器上是否存在授權名稱。 authorization-id-expression 必須傳回任何內建字串或圖形字串資料類型的值。 每一個 authorization-id-expression 的值必須至少為 1 且小於或等於 10。
函數結果為大整數。 結果不能是空值。
如果第一個引數所代表的授權 ID 位於 authorization-id-expression清單中的任何位置,則結果的值為 1。 否則,結果為 0。
VERIFY_GROUP_FOR_USER 函數在連線內是固定的。 在連線之間,它不是決定性的。 可以在 CREATE MASK 或 CREATE PERMISSION 陳述式中參照它,以驗證對資料的存取權。
範例
假設表格 EMPLOYEE 存在,且已針對表格啟動直欄層次存取控制。 Alex (具有 QIBM_DB_SECADM 權限) 已建立下列直欄遮罩,以根據要求資訊的人員來控制針對社會保險號碼傳回的資訊。 只有在階段作業使用者是 MGR 群組設定檔的成員時,直欄遮罩才會傳回實際的社會保險號碼。 否則會傳回社會保險號碼的遮罩表示法。
CREATE MASK SSN_MASK
ON EMPLOYEE
FOR COLUMN SSN
RETURN
CASE
WHEN VERIFY_GROUP_FOR_USER(SESSION_USER,'MGR') = 1
THEN SSN
ELSE 'XXX-XX' CONCAT SUBSTR(SSN, 8,4)
END
ENABLE;然後會發出 ALTER TABLE 陳述式,以啟動 EMPLOYEE 表格上的直欄遮罩:ALTER TABLE EMPLOYEE
ACTIVATE COLUMN ACCESS CONTROL;
COMMIT;假設 Mary 是管理員,並且是 MGR 群組設定檔的成員。 Mary 發出下列陳述:
SELECT SSN FROM EMPLOYEE WHERE NAME = 'Tom';SSN_MASK 直欄遮罩會套用至 SSN 直欄,以產生結果表格。 由於 Mary 是 MGR 群組設定檔的成員,因此結果表格包含 Tom 的實際社會保險號碼。稍後, Mary 不再是管理員,並從 MGR 群組設定檔中移除。 她再次發出相同的查詢:
SELECT SSN FROM EMPLOYEE WHERE NAME = 'Tom';如同之前一樣, SSN_MASK 直欄遮罩會套用至 SSN 直欄以產生結果表格。 此時結果表格會包含 Tom 's 社會保險號碼的遮罩版本,其中只會傳回實際號碼的最後 4 位數。 會針對其他數字傳回 ' X'。