階層評価について

組織ポリシーをリソース階層ノードに設定すると、そのリソース階層ノードのすべての子孫はデフォルトでその組織ポリシーを継承します。ルート組織ノードで組織ポリシーを設定した場合、制限は、子であるすべてのフォルダ、プロジェクト、リソースに継承されます。

子ノードにはカスタム組織ポリシーを設定できます。このポリシーは、階層評価のルールに基づき、継承されたポリシーを上書きするか、継承されたポリシーと結合されます。

始める前に

階層の例

下のリソース階層図では、各ノードがカスタム組織ポリシーを設定し、それが親ノードのポリシーを継承するかどうかを定義しています。色付きの図形は、組織ポリシーで許可または拒否する値を表します。

継承図

制約は、組織ポリシーによって制御される動作の定義です。上記の例の Constraint には、デフォルトの動作としてすべての値を許可するよう設定されています。その下のノードは、値を許可または拒否することによって、この動作を上書きするカスタム ポリシーを定義します。

各ノードでの有効なポリシーは、継承のルールに基づいて評価されます。カスタム組織ポリシーが設定されていない場合、ノードはデフォルトの制約動作を継承します。組織ポリシーを設定すると、代わりにカスタム ポリシーが使用されます。上記の例では、Organization Node は赤色の四角と緑色の円を許可するポリシーを定義しています。

Organization Node の下の階層にあるリソースノードは、次のように評価されます。

  1. Resource 1 は、inheritFromParentTRUE に設定して青色のひし形を許可するカスタム ポリシーを定義します。Organization Node のポリシーが継承されてカスタム ポリシーに結合されるため、実際に適用されるポリシーは赤色の四角、緑色の円、青色のひし形を許可します。

  2. Resource 2 は、inheritFromParentTRUE に設定して緑色の円を拒否するカスタム ポリシーを定義します。ポリシーの調整中は、拒否する値の方が常に優先されます。Organization Node からのポリシーは継承され、カスタム ポリシーと結合されるため、実際に適用されるポリシーは、赤色の四角のみを許可するものと評価されます。

  3. Resource 3 は、inheritFromParentFALSE に設定して黄色の六角形を許可するカスタム ポリシーを定義します。Organization Node のポリシーは継承されないため、実際に適用されるポリシーは黄色の六角形のみを許可するものと評価されます。

  4. Resource 4 は、inheritFromParentFALSE に設定して restoreDefault 値を含めるカスタム ポリシーを定義します。Organization Node のポリシーは継承されず、デフォルトの制約動作が使用されるため、実際に適用されるポリシーは、すべて許可するものと評価されます。

階層評価ルール

特定のリソースで組織ポリシーがどのように評価されるかは、次のルールによって決まります。組織ポリシーを設定するには、組織ポリシー管理者の役割が必要です。

組織ポリシーが設定されていない

組織ポリシーが設定されていない場合、リソースノードはその親から継承します。親が組織ノードであるか、親ノードに組織ポリシーがない場合、制約のデフォルトの動作が適用されます。

継承

デフォルトで組織ポリシーセットが設定されているリソースノードは、階層内の親ノードによって設定されたポリシーを上書きします。ただし、リソースノードで inheritFromParent = true が設定されている場合は、親リソースの有効なポリシーが継承、マージ、調整され、その結果有効なポリシーが評価されます。次に例を示します。

  • あるフォルダで「projects/123」という値を拒否する。
  • そのフォルダの下にあるプロジェクトで「projects/456」という値を拒否する。

この 2 つのポリシーは結合され、実際に適用されるポリシーでは projects/123projects/456 の両方が拒否されます。

継承を禁止する

リソース階層のポリシーで inheritFromParent = false が設定されている場合、親から組織ポリシーが継承されません。代わりに、ポリシーで許可または拒否する値を設定しない限り、ノードは制約のデフォルトの動作を継承します。

ポリシーの競合を調整する

子ノードがリスト型制約に基づく組織ポリシーを継承すると、継承されたポリシーがノードの組織ポリシーと結合され、調整されます。リスト型ポリシーの評価では、DENY 値が常に優先されます。次に例を示します。

  • あるフォルダで「projects/123」という値を拒否する。
  • そのフォルダの下にあるプロジェクトで「projects/123」という値を許可する。

これらのポリシーが結合されると、DENY 値が優先されます。実際に適用されるポリシーではすべての値が拒否されます。値を拒否しているのが親ノードであるか子ノードであるかにかかわらず、評価は同じです。許可リストと拒否リストの両方に値を含めないことをおすすめします。両方に値を含めると、ポリシーを理解するのが難しくなる可能性があります。

ブール型制約から派生した組織ポリシーの場合、ポリシーの結合や調整は行われません。リソースノードでポリシーが指定されている場合、TRUE 値や FALSE 値を使用して、実際に適用されるポリシーが決定されます。次に例を示します。

  • あるフォルダで、constraints/compute.disableSerialPortAccess に対して enforced: true を設定する。

  • そのフォルダの下にあるプロジェクトで、constraints/compute.disableSerialPortAccess に対して enforced: false を設定する。

プロジェクトでは enforced: false が定義されているため、フォルダに設定された enforced: true 値は無視されます。組織ポリシーは、そのプロジェクトに対して制約を適用しません。

ユニバーサルなオーバーライド

ユニバーサルに DENY ALL を設定すると、他のすべての設定が上書きされ、ALLOW ALL を含むすべての値が拒否されます。ユニバーサルに ALLOW ALL を設定すると、親ノードで拒否されていないすべての値が許可されます。

デフォルト ポリシーにリセット

RestoreDefault を呼び出すと、組織ポリシーは現在のリソース階層ノードの制約のデフォルト動作を使用します。子ノードもこの動作を継承します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Resource Manager のドキュメント