VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER スカラー関数

VERIFY_TRUSTED_CONTEXT_FOR_USER 関数は、第 1 引数に関連する許可 ID がトラステッド接続内のロールを取得したかどうか、およびその取得したロールが第 2 引数のリストに指定されているロール名に含まれているかどうかを示す値を戻します。

構文図を読むビジュアルシンタックスダイアグラムをスキップするVERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER( SESSION_USERUSER ,role-name-expression )

スキーマは SYSIBM です。

SESSION_USER または USER
SESSION_USER (または USER) 特殊レジスターの値を指定します。
ロール名式
ロール名を指定する式。 ロール名が現行サーバーにあるかどうかは検証されません。 role-name-expression は、LOB 以外の組み込みの文字ストリング・データ・タイプ、またはグラフィック・ストリング・データ・タイプを戻す必要があります。 ストリングは、SQL ID の最大長を超えない長さである必要があります。 ストリングの内容は、大文字変換されず、左寄せされません。

この関数の結果は長精度整数 (large integer) です。 結果が NULL 値になることはありません。

SESSION_USER (または USER) 特殊レジスターで識別されたユーザーが、トラステッド・コンテキストに関連付けられたトラステッド接続でロールを取得済みで、そのロールが role-name-expression のリストに含まれている場合、結果は 1 です。 それ以外の場合、結果は 0 です。

決定論:
VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER 関数は、信頼できる接続内では決定論的です。 トラステッド接続間では決定論的ではありません。 また、この関数は CREATE MASK ステートメントまたは CREATE PERMISSION ステートメントで参照でき、表式またはビューのマージとして考慮されます。

例 1:
特定のロールおよびトラステッド・コンテキストを作成するために、以下のステートメントが発行されたとします。CTX1:
CREATE ROLE EMPLOYEE;
COMMIT;

CREATE ROLE MGR;
COMMIT;

CREATE ROLE PAYROLL;
COMMIT;

CREATE TRUSTED CONTEXT CTX1
	BASED UPON CONNECTION USING SYSTEM AUTHID ADMF001
	ATTRIBUTES (ADDRESS '9.30.131.203', ENCRYPTION 'LOW')
	DEFAULT ROLE EMPLOYEE
	ENABLE
	WITH USE FOR SAM, JOE ROLE MGR WITH AUTHENTICATION;

COMMIT;

マネージャーの Joe は、以下の動的照会をトラステッド接続 CTX1 を介して発行し、Joe の部門の DSN8910.EMP 表の中の従業員の給与を表示します。

SELECT SALARY FROM DSN8910.EMP
	WHERE VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER(SESSION_USER,'MGR','PAYROLL')= 1
	AND WORKDEPT = ?;
例 2:
次の例では、SECADM 権限を持つユーザーが、表にアクセスするステートメントを実行する特定のユーザーのアクセスを制御する必要があるとします。
現行ユーザー B はロール X を使用して、ロール C が所有するステートメントを実行していますか。
SESSION_USER = B AND
VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER(SESSION_USER, 'X')
現行ユーザー B はロール X を使用して、ロール D が所有するステートメントを実行していますか。
SESSION_USER = B AND
VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER(SESSION_USER, 'X')
現行ユーザー B は、ロール B を使用して動的ステートメントを実行していますか。
SESSION_USER = B AND
VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER(SESSION_USER, 'B')