GRANT (免除) ステートメント

この形式の GRANT ステートメントは、指定されたラベル・ベースのアクセス制御 (LBAC) セキュリティー・ポリシーに対して、 アクセス規則の免除をユーザー、グループ、またはロールに付与します。

免除を受けたユーザーが、そのセキュリティー・ポリシーによって保護されている表内のデータにアクセスした場合、そのユーザーがデータにアクセスできるかどうかを決定する際に、指示された規則は施行されません。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

構文

Read syntax diagramSkip visual syntax diagramGRANT EXEMPTION ON RULEDB2LBACREADARRAYDB2LBACREADSETDB2LBACREADTREEDB2LBACWRITEARRAYWRITEDOWNWRITEUPDB2LBACWRITESETDB2LBACWRITETREEALLFORpolicy-nameTO ,USERGROUPROLEauthorization-name

説明

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