ALTER SECURITY POLICY ステートメント

ALTER SECURITY POLICY ステートメントは、セキュリティー・ポリシーを変更します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

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

構文

Read syntax diagramSkip visual syntax diagramALTER SECURITY POLICYsecurity-policy-name ADD SECURITY LABEL COMPONENTcomponent-name1OVERRIDE NOT AUTHORIZED WRITE SECURITY LABELRESTRICT NOT AUTHORIZED WRITE SECURITY LABELUSE GROUP AUTHORIZATIONSIGNORE GROUP AUTHORIZATIONSUSE ROLE AUTHORIZATIONSIGNORE ROLE AUTHORIZATIONS
Notes:
  • 1 Only the ADD SECURITY LABEL COMPONENT clause can be specified more than once.

説明

セキュリティー・ポリシー名
変更されるセキュリティー・ポリシーの名前を指定します。 名前は、現行のサーバー上の既存のセキュリティー・ポリシーを識別するものでなければなりません (SQLSTATE 42710)。
ADD SECURITY LABEL COMPONENT コンポーネント名
セキュリティー・ラベル・コンポーネントをセキュリティー・ポリシーに追加します。 セキュリティー・ポリシーに対して同じセキュリティー・コンポーネントを複数回指定してはなりません (SQLSTATE 42713)。 セキュリティー・ポリシーが現在、によって使用されている可能性はありません (SQLSTATE 42893)。
OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL または RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
このセキュリティー・ポリシーで保護されている表に対して発行された INSERT ステートメントまたは UPDATE ステートメント内に 明示的に指定されているセキュリティー・ラベルを書き込む許可をユーザーが持たない場合に取る処置を指定します。 ユーザーのセキュリティー・ラベルおよび免除資格情報によって、明示的に指定されたセキュリティー・ラベルを書き込むユーザー許可が判別されます。
OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL
挿入または更新の操作での書き込みアクセスに対して、明示的に指定されているセキュリティー・ラベルではなく、 ユーザーのセキュリティー・ラベルの値を使用することを指定します。
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
INSERT または UPDATE ステートメント内に置かれている明示的に指定されたセキュリティー・ラベルの書き込みをユーザーが許可されていない場合、挿入または更新の操作が失敗することを指示します (SQLSTATE 42519)。
USE GROUP AUTHORIZATION または IGNORE GROUP AUTHORIZATION
直接または間接的にグループに付与されたセキュリティー・ラベルおよび免除が、 いずれかのアクセスを試行する際に考慮されるかどうかを指定します。
USE GROUP AUTHORIZATION
直接または間接的にグループに付与されたセキュリティー・ラベルまたは免除が、 考慮されることを指定します。
IGNORE GROUP AUTHORIZATION
グループに付与されたセキュリティー・ラベルまたは免除が、 考慮されないことを指定します。
USE ROLE AUTHORIZATION または IGNORE ROLE AUTHORIZATION
直接または間接的にロールに付与されたセキュリティー・ラベルおよび免除が、 いずれかのアクセスを試行する際に考慮されるかどうかを指定します。
USE ROLE AUTHORIZATION
直接または間接的にロールに付与されたセキュリティー・ラベルまたは免除が、 考慮されることを指定します。
IGNORE ROLE AUTHORIZATION
ロールに付与されたセキュリティー・ラベルまたは免除が、 考慮されないことを指定します。

ルール

  • ユーザーが書き込みアクセス用のセキュリティー・ラベルを直接保持していない場合、 以下の状態のときにエラーが戻されます (SQLSTATE 42519):
    • 行セキュリティー・ラベル列の値が、SQL ステートメントの一部として明示的に提供されていない
    • OVERRIDE NOT AUTHORIZED WRITE SECURITY LABEL オプションがセキュリティー・ラベルに対して有効であり、 ユーザーは設定されたセキュリティー・ポリシー・レベルではデータ・オブジェクトを書き込むことが許可されない

  • 新規コンポーネントは、変更されたポリシーによって組み込まれた既存のセキュリティー・ラベル定義の最後に論理的に追加されます。 このセキュリティー・ポリシー用に定義された既存のセキュリティー・ラベルは、 定義の一部として新規コンポーネントを組み込むように、 そしてこのコンポーネントの値にはエレメントを含まないように変更されます。
  • NOT AUTHORIZED WRITE SECURITY LABEL を変更するときのキャッシュの無効化: NOT AUTHORIZED WRITE SECURITY LABEL を 新しい値に変更すると、変更中のセキュリティー・ポリシーによって保護された表に依存する、 キャッシュに入れられた動的または静的な SQL ステートメントが無効になります。
  • SESSION 許可 ID はラベル・ベースのアクセス制御のフォーカス許可 ID なので、 グループまたはグループを介してアクセス可能なロールに付与されたセキュリティー・ラベルは、 静的 SQL を含むすべてのタイプの SQL ステートメントに関して考慮されることに適格となります。
  • 読み取りまたは書き込みアクセスの試行時に関連付けられたグループまたはロールを持つユーザーに対して複数のセキュリティー・ラベルまたは免除が使用可能な場合、 それらのセキュリティー・ラベルおよび免除は以下の規則に従って適格性が評価されます。
    • セキュリティー・ポリシーがロール権限だけを考慮の対象として使用可能にする場合、 ユーザー許可 ID が直接または間接のメンバーであるロールに付与されたすべてのセキュリティー・ラベルおよび免除は考慮されます。 ユーザー許可 ID に関連付けられたグループを介してのみメンバーシップにアクセス可能なロールに 付与されたセキュリティー・ラベルおよび免除は、考慮されません。
    • セキュリティー・ポリシーがグループ権限だけを考慮の対象として使用可能にする場合、 ユーザー許可 ID がグループに付与されたすべてのセキュリティー・ラベルおよび免除は考慮されます。 ユーザー許可 ID に関連付けられたグループを介してのみメンバーシップにアクセス可能なロールに 付与されたセキュリティー・ラベルおよび免除は、考慮されません。
    • セキュリティー・ポリシーがグループ権限およびロール権限の両方を考慮の対象として使用可能にする場合、 ユーザー許可 ID に関連付けられたグループを介して間接的にユーザーにアクセス可能なロールに 付与されたセキュリティー・ラベルおよび免除は考慮されます。
    • PUBLIC を介してのみユーザーにアクセス可能なロール権限は、常に考慮されません。
  • アクセスを試行するときに複数のセキュリティー・ラベルが考慮の対象として適格である場合、 各セキュリティー・ラベルに提供された値は個別のコンポーネント・レベルでマージされて、 セキュリティー・ポリシーの各コンポーネントの部分で使用可能なすべての値の組み合わせを反映するセキュリティー・ラベルが形成されます。 これは、アクセスの試行に使用されるセキュリティー・ラベル値です。
    セキュリティー・ラベルを結合する仕組みは、コンポーネント・タイプごとに異なります。 結果として生じるセキュリティー・ラベルのコンポーネントは、以下のとおりです。
    • セット・コンポーネントには、適格なセキュリティー・ラベル内で検出された すべての固有値の共用体が含まれています。
    • 配列コンポーネントには、適格なセキュリティー・ラベル内で検出された 最高順位のエレメントが含まれています。
    • ツリー・コンポーネントには、適格なセキュリティー・ラベル内で検出された すべての固有値の共用体が含まれています。
  • アクセスの試行時に複数の免除が考慮の対象として適格である場合、 検索されたすべての免除はアクセスの試行に適用されます。

  • 例 1: DATA_ACCESS という名前のセキュリティー・ポリシーを変更して、 REGION という名前の新規コンポーネントを追加します。
       ALTER SECURITY POLICY DATA_ACCESS
         ADD COMPONENT REGION
  • 例 2: DATA_ACCESS という名前のセキュリティー・ポリシーを変更して、 ロールに付与されたセキュリティー・ラベルを介するアクセスを許可します。
       ALTER SECURITY POLICY DATA_ACCESS
         USE ROLE AUTHORIZATIONS
  • 例 3: セキュリティー・ポリシー内の グループ権限またはロール権限の設定値に応じて考慮される、 適格なセキュリティー・ラベルを表示します。 セキュリティー・ポリシー SECUR_POL には、以下のエレメントから構成される、 配列コンポーネントおよびセット・コンポーネントがあります。
    • Array = {TS, S, C, U}
    • Set = {A, B, X, Y}
    以下のセキュリティー・ラベルが SECUR_POL 用に定義されます。
    • セキュリティー ・ラベル L1 = C:A
    • セキュリティー ・ラベル L2 = S: B
    • セキュリティー ・ラベル L3 = TS: X
    • セキュリティー ・ラベル L4 = U:Y
    ユーザー Paul は、 ロール R1 およびグループ G1 のメンバーです。 グループ G1 は、ロール R2 のメンバーです。 セキュリティー・ラベル L1 は、Paul に付与されます。 セキュリティー・ラベル L2 は、ロール R1 に付与されます。 セキュリティー・ラベル L3 は、グループ G1 に付与されます。 セキュリティー・ラベル L4 は、ロール R2 に付与されます。 以下の表は、セキュリティー・ポリシー SECUR_POL のさまざまな可能な設定値に応じて、 Paul がアクセスを試行するときにどのセキュリティー・ラベルが考慮されるかを示しています。
    表 1. セキュリティー・ポリシー設定の関数として考慮されるセキュリティー・ラベル
      使用可能にされるロール 使用不可にされるロール
    使用可能にされるグループ L1, L2, L3, L4 L1, L3
    使用不可にされるグループ L1, L2 L1
    以下の表は、セキュリティー・ポリシー SECUR_POL のさまざまな設定値に応じて、 Paul がアクセスを試行するときのセキュリティー・ラベルの結合値を示しています。
    表 2. セキュリティー・ポリシー設定の関数として結合されたセキュリティー・ラベル
      使用可能にされるロール 使用不可にされるロール
    使用可能にされるグループ TS:(A, B, X, Y) TS:(A, X)
    使用不可にされるグループ S:(A, B) C:A