Azure Policy のコンプライアンスの状態

コンプライアンスのしくみ

イニシアティブまたはポリシーの定義が割り当てられると、Azure Policy は適用可能なリソースを決定し、除外および免除に含まれないリソースを評価します。 評価によって、ポリシー ルールの条件および各リソースのそれらの要件への順守に基づいて、コンプライアンスの状態が導き出されます。

使用可能なコンプライアンスの状態

準拠していない

auditauditIfNotExists、または modify 効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"新規"、"更新"、または "既存" のリソースに対して非準拠と見なされます。

appenddeny、および deployIfNotExists 効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"既存" のリソースに対して非準拠と見なされます。 "新規" および "更新" のリソースは、要求時に自動的に修復または拒否され、コンプライアンスが適用されます。 以前に存在していた非準拠リソースが更新されると、リソースのデプロイとポリシーの評価が完了するまで、コンプライアンスの状態は非準拠のままです。

注意

DeployIfNotExist 効果と AuditIfNotExist 効果が非準拠となるためには、IF ステートメントが TRUE で、存在条件が FALSE である必要があります。 TRUE のとき、IF 条件は関連するリソースの既存の条件の評価をトリガーします。

manual 効果を使用するポリシー割り当ては、次の 2 つの状況では非準拠と見なされます。

  1. ポリシー定義の既定のコンプライアンスの状態が非準拠であり、該当するリソースに、そうでないことを示すアクティブな構成証明がない。
  2. リソースが非準拠として構成証明されている。

リソースのコンプライアンス違反の理由や、原因となった変更を特定する方法については、「コンプライアンス違反の原因の特定」をご覧ください。 deployIfNotExists および modify ポリシーの非準拠リソースを修復するには、「Azure Policyを使って準拠していないリソースを修復する」を参照してください。

対応

appendauditauditIfNotExistsdenydeployIfNotExists、または modify の効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"新規"、"更新"、または "既存" のリソースに対して準拠と見なされます。

manual 効果を使用するポリシー割り当ては、次の 2 つの状況では準拠と見なされます。

  1. ポリシー定義の既定のコンプライアンスの状態が準拠であり、該当するリソースに、そうでないことを示すアクティブな構成証明がない。
  2. リソースが準拠として構成証明されている。

エラー

エラーのコンプライアンスの状態は、テンプレートや評価のエラーなど、システム エラーを生成するポリシー割り当てに与えられます。

の 競合

ポリシー割り当ては、同じスコープ内に矛盾または競合するルールを持つ 2 つ以上のポリシー割り当てが存在する場合に、競合していると見なされます。 たとえば、異なる値の同じタグを追加する 2 つの定義などです。

除外

該当リソースが免除のスコープ内にある場合、それはポリシー割り当て免除のコンプライアンスの状態を持ちます。

Note

"免除" は "除外" とは異なります。 詳細については、スコープを参照してください

Unknown

不明は、既定値が明示的に準拠または非準拠に設定されていない限り、manual 効果を持つ定義の既定のコンプライアンスの状態です。 この状態は、コンプライアンスの構成証明が保証されていることを示します。 このコンプライアンスの状態は、manual 効果のポリシー割り当てでのみ発生します。

Protected

保護の状態は、そのリソースが denyAction 効果の割り当て対象であることを示します。

未登録

このコンプライアンス状態は、Azure Policy リソース プロバイダーが登録されていない場合、またはログインしているアカウントにコンプライアンス データを読み取るアクセス許可がない場合に、ポータルに表示されます。

Note

コンプライアンス状態が未登録と報告されている場合は、Microsoft.PolicyInsights リソース プロバイダーが登録されていること、ユーザーに適切な Azure ロールベースのアクセス制御 (Azure RBAC) アクセス許可があることを確認します (詳しくは「Azure Policy における Azure RBAC アクセス許可」をご覧ください)。 Microsoft.PolicyInsights を登録するには、こちらの手順に従ってください

開始前

このコンプライアンス状態は、ポリシーまたはリソースの評価サイクルが開始していないことを示します。

どのようなコンプライアンスの状態が存在するのかと、それぞれの意味について説明したので、準拠状態と非準拠状態を使用して例を見てみましょう。

ContosoRG というリソース グループがあり、その一部のストレージ アカウント (赤で強調表示されている) がパブリック ネットワークに公開されているとします。

Diagram of storage accounts exposed to public networks in the Contoso R G resource group.

Contoso R G リソース グループ内の 5 つのストレージ アカウントのイメージを示す図。 ストレージ アカウント 1 と 3 は青ですが、ストレージ アカウント 2、4、および 5 は赤です。

この例では、セキュリティ リスクに注意する必要があります。 パブリック ネットワークに公開されているストレージ アカウントを監査するポリシー定義を割り当て、この割り当てに対して免除を作成しないものとします。 このポリシーは、該当するリソース (ContosoRG リソース グループ内のすべてのストレージ アカウント) をチェックし、評価から除外されていないリソースを評価します。 パブリック ネットワークに公開されている 3 つのストレージ アカウントを監査し、そのコンプライアンス状態を非準拠に変更します。残りは準拠としてマークされます。

Diagram of storage account compliance in the Contoso R G resource group.

Contoso R G リソース グループ内の 5 つのストレージ アカウントのイメージを示す図。 ストレージ アカウント 1 と 3 は、それらの下に緑色のチェックマークが表示されるようになりましたが、ストレージ アカウント 2、4、および 5 は、それらの下に赤い警告記号が表示されるようになりました。

コンプライアンス ロールアップ

コンプライアンスの状態は、リソースごと、ポリシーごとの割り当によって決定されます。 ただし、環境の状態の全体像が必要になることがよくあります。そこで登場するのが、集約コンプライアンスです。

集約されたコンプライアンス結果をポータルで表示するには、いくつかの方法があります。

集約コンプライアンス ビュー コンプライアンス状態を決定する要因
Scope 選択したスコープ内のすべてのポリシー
イニシアティブ イニシアチブ内のすべてのポリシー
イニシアティブ グループまたはコントロール グループまたはコントロール内のすべてのポリシー
のポリシー 該当するすべてのリソース
リソース 該当するすべてのポリシー

さまざまなコンプライアンスの状態の比較

では、複数のリソースまたはポリシーが異なるコンプライアンス状態を持っている場合、集約コンプライアンス状態はどのように決定されますか? Azure Policy では、このような状況で一方がもう一方より "優先される" ように、各コンプライアンス状態がランク付けされています。 ランクの順序は次のとおりです。

  1. 準拠していない
  2. 対応
  3. エラー
  4. の 競合
  5. 保護 (プレビュー)
  6. 除外
  7. 不明 (プレビュー)

Note

[開始前][未登録] は、コンプライアンスのロールアップ計算では考慮されません。

このランク付けにより、非準拠と準拠の両方の状態がある場合、たとえばロールアップ集計の結果が非準拠になります。 例を見てみましょう。

イニシアティブに 10 個のポリシーが含まれており、リソースが 1 つのポリシーから除外されているが、残りの 9 つのポリシーに準拠しているとします。 準拠状態は除外状態よりもランクが高いため、リソースはイニシアティブのロールアップ サマリーに準拠として登録されます。 そのため、あるリソースがイニシアチブ全体について免除として表示されるのは、そのイニシアチブ内の他のすべての適用可能なポリシーから免除されているか、それらへの準拠が不明な場合だけです。 もう 1 つの極端な場合として、リソースがイニシアティブ内の少なくとも 1 つの適用可能なポリシーに非準拠である場合、残りの適用可能なポリシーに関係なく、全体のコンプライアンス状態は非準拠になります。

コンプライアンスの割合

コンプライアンス対応率は、準拠適用除外、および不明のリソースを "総リソース数" で割って算出されます。 "総リソース数" は、準拠非準拠不明除外競合エラーの状態のリソースを含みます。

overall compliance % = (compliant + exempt + unknown + protected)  / (compliant + exempt + unknown + non-compliant + conflicting + error + protected)

示されている画像では、適用可能な個別のリソースが 20 個あり、そのうち 1 つだけが非準拠です。 全体的なリソース コンプライアンスは 95% (19/20) となります。

Screenshot of policy compliance details from Compliance page.

次のステップ