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