GRANT (免除) ステートメント
この形式の GRANT ステートメントは、指定されたラベル・ベースのアクセス制御 (LBAC) セキュリティー・ポリシーに対して、 アクセス規則の免除をユーザー、グループ、またはロールに付与します。
免除を受けたユーザーが、そのセキュリティー・ポリシーによって保護されている表内のデータにアクセスした場合、そのユーザーがデータにアクセスできるかどうかを決定する際に、指示された規則は施行されません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。
構文
説明
- EXEMPTION ON RULE
- アクセス規則に対する免除を付与します。
- DB2LBACREADARRAY
- 事前定義された DB2LBACREADARRAY 規則に対する免除を付与します。
- DB2LBACREADSET
- 事前定義された DB2LBACREADSET 規則に対する免除を付与します。
- DB2LBACREADTREE
- 事前定義された DB2LBACREADTREE 規則に対する免除を付与します。
- DB2LBACWRITEARRAY
- 事前定義された DB2LBACWRITEARRAY 規則に対する免除を付与します。
- WRITEDOWN
- 免除が下方への書き込みにのみ適用されることを指定します。
- WRITEUP
- 免除が上方への書き込みにのみ適用されることを指定します。
- DB2LBACWRITESET
- 事前定義された DB2LBACWRITESET 規則に対する免除を付与します。
- DB2LBACWRITETREE
- 事前定義された DB2LBACWRITETREE 規則に対する免除を付与します。
- すべて
- 事前定義されたすべての規則に対する免除を付与します。
- FOR ポリシー名
- 免除の付与対象のセキュリティー・ポリシーを識別します。 その免除が有効なのは、このセキュリティー・ポリシーで保護されている表に対してのみです。 名前は、カタログに既に記述されているセキュリティー・ポリシーを示すものでなければなりません (SQLSTATE 42704)。
- 今後
- 免除を誰に付与するかを指定します。
- ユーザー
- authorization-name がユーザーであることを指定します。
- GROUP
- authorization-name がグループ名であることを指定します。
- ROLE
- authorization-name がロール名であることを指定します。 ロール名は、現行サーバーに存在するものでなければなりません (SQLSTATE 42704)。
- 1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。
ルール
- 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
- インスタンスに対して有効なセキュリティー・プラグインによって authorization-name の状況を判別できなければ、エラーが戻されます (SQLSTATE 56092)。
- authorization-name がデータベースでは ROLE として定義され、有効なセキュリティー・プラグインでは GROUP または USER のいずれかとして定義されている場合には、エラーが戻されます (SQLSTATE 56092)。
- 有効なセキュリティー・プラグインに従って authorization-name が USER と GROUP の両方として定義されている場合、エラーが戻されます (SQLSTATE 56092)。
- authorization-name が 有効なセキュリティー・プラグインに従って USER のみとして定義されている場合、または未定義の場合は、USER が想定されます。
- authorization-name が、 有効なセキュリティー・プラグインに従って GROUP としてのみ定義されている場合は、GROUP が想定されます。
- authorization-name がデータベースで ROLE としてのみ定義されている場合には、ROLE であると見なされます。
- セキュリティー・ポリシーがグループまたはロールを介してアクセスを考慮するように定義されていない場合、 グループまたはロールに付与された免除はアクセスが試行されるときに無視されます。
注
- デフォルトでは、セキュリティー・ポリシーの作成時には、個々のユーザーに付与された免除のみが考慮されます。 セキュリティー・ポリシーでグループまたはロールが考慮されるようにするには、ALTER SECURITY POLICY ステートメントを発行し、必要に応じて USE GROUP AUTHORIZATION または USE ROLE AUTHORIZATION を指定しなければなりません。
例
- 例 1: セキュリティー・ポリシー DATA_ACCESS のアクセス規則 DB2LBACREADSET に対して、ユーザー WALID に免除を付与します。
GRANT EXEMPTION ON RULE DB2LBACREADSET FOR DATA_ACCESS TO USER WALID
- 例 2: セキュリティー・ポリシー DATA_ACCESS のアクセス規則 DB2LBACWRITEARRAY に対する免除を、WRITEDOWN オプションを指定して、ユーザー BOBBY に付与します。
GRANT EXEMPTION ON RULE DB2LBACWRITEARRAY WRITEDOWN FOR DATA_ACCESS TO USER BOBBY
- 例 3: セキュリティー・ポリシー DATA_ACCESS のアクセス規則 DB2LBACWRITEARRAY に対する免除を、WRITEUP オプションを指定して、ユーザー BOBBY に付与します。
GRANT EXEMPTION ON RULE DB2LBACWRITEARRAY WRITEUP FOR DATA_ACCESS TO USER BOBBY