Azure Policy のコンプライアンスの状態
コンプライアンスのしくみ
イニシアティブまたはポリシーの定義が割り当てられると、Azure Policy は適用可能なリソースを決定し、除外および免除に含まれないリソースを評価します。 評価によって、ポリシー ルールの条件および各リソースのそれらの要件への順守に基づいて、コンプライアンスの状態が導き出されます。
使用可能なコンプライアンスの状態
準拠していない
audit
、auditIfNotExists
、または modify
効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"新規"、"更新"、または "既存" のリソースに対して非準拠と見なされます。
append
、deny
、および deployIfNotExists
効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"既存" のリソースに対して非準拠と見なされます。 "新規" および "更新" のリソースは、要求時に自動的に修復または拒否され、コンプライアンスが適用されます。 以前に存在していた非準拠リソースが更新されると、リソースのデプロイとポリシーの評価が完了するまで、コンプライアンスの状態は非準拠のままです。
注意
DeployIfNotExist 効果と AuditIfNotExist 効果が非準拠となるためには、IF ステートメントが TRUE で、存在条件が FALSE である必要があります。 TRUE のとき、IF 条件は関連するリソースの既存の条件の評価をトリガーします。
manual
効果を使用するポリシー割り当ては、次の 2 つの状況では非準拠と見なされます。
- ポリシー定義の既定のコンプライアンスの状態が非準拠であり、該当するリソースに、そうでないことを示すアクティブな構成証明がない。
- リソースが非準拠として構成証明されている。
リソースのコンプライアンス違反の理由や、原因となった変更を特定する方法については、「コンプライアンス違反の原因の特定」をご覧ください。 deployIfNotExists
および modify
ポリシーの非準拠リソースを修復するには、「Azure Policyを使って準拠していないリソースを修復する」を参照してください。
対応
append
、audit
、auditIfNotExists
、deny
、deployIfNotExists
、または modify
の効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE と評価されると、"新規"、"更新"、または "既存" のリソースに対して準拠と見なされます。
manual
効果を使用するポリシー割り当ては、次の 2 つの状況では準拠と見なされます。
- ポリシー定義の既定のコンプライアンスの状態が準拠であり、該当するリソースに、そうでないことを示すアクティブな構成証明がない。
- リソースが準拠として構成証明されている。
エラー
エラーのコンプライアンスの状態は、テンプレートや評価のエラーなど、システム エラーを生成するポリシー割り当てに与えられます。
の 競合
ポリシー割り当ては、同じスコープ内に矛盾または競合するルールを持つ 2 つ以上のポリシー割り当てが存在する場合に、競合していると見なされます。 たとえば、異なる値の同じタグを追加する 2 つの定義などです。
除外
該当リソースが免除のスコープ内にある場合、それはポリシー割り当て免除のコンプライアンスの状態を持ちます。
Note
"免除" は "除外" とは異なります。 詳細については、スコープを参照してください
Unknown
不明は、既定値が明示的に準拠または非準拠に設定されていない限り、manual
効果を持つ定義の既定のコンプライアンスの状態です。 この状態は、コンプライアンスの構成証明が保証されていることを示します。 このコンプライアンスの状態は、manual
効果のポリシー割り当てでのみ発生します。
Protected
保護の状態は、そのリソースが denyAction 効果の割り当て対象であることを示します。
未登録
このコンプライアンス状態は、Azure Policy リソース プロバイダーが登録されていない場合、またはログインしているアカウントにコンプライアンス データを読み取るアクセス許可がない場合に、ポータルに表示されます。
Note
コンプライアンス状態が未登録と報告されている場合は、Microsoft.PolicyInsights リソース プロバイダーが登録されていること、ユーザーに適切な Azure ロールベースのアクセス制御 (Azure RBAC) アクセス許可があることを確認します (詳しくは「Azure Policy における Azure RBAC アクセス許可」をご覧ください)。 Microsoft.PolicyInsights を登録するには、こちらの手順に従ってください。
開始前
このコンプライアンス状態は、ポリシーまたはリソースの評価サイクルが開始していないことを示します。
例
どのようなコンプライアンスの状態が存在するのかと、それぞれの意味について説明したので、準拠状態と非準拠状態を使用して例を見てみましょう。
ContosoRG というリソース グループがあり、その一部のストレージ アカウント (赤で強調表示されている) がパブリック ネットワークに公開されているとします。
Contoso R G リソース グループ内の 5 つのストレージ アカウントのイメージを示す図。 ストレージ アカウント 1 と 3 は青ですが、ストレージ アカウント 2、4、および 5 は赤です。
この例では、セキュリティ リスクに注意する必要があります。 パブリック ネットワークに公開されているストレージ アカウントを監査するポリシー定義を割り当て、この割り当てに対して免除を作成しないものとします。 このポリシーは、該当するリソース (ContosoRG リソース グループ内のすべてのストレージ アカウント) をチェックし、評価から除外されていないリソースを評価します。 パブリック ネットワークに公開されている 3 つのストレージ アカウントを監査し、そのコンプライアンス状態を非準拠に変更します。残りは準拠としてマークされます。
Contoso R G リソース グループ内の 5 つのストレージ アカウントのイメージを示す図。 ストレージ アカウント 1 と 3 は、それらの下に緑色のチェックマークが表示されるようになりましたが、ストレージ アカウント 2、4、および 5 は、それらの下に赤い警告記号が表示されるようになりました。
コンプライアンス ロールアップ
コンプライアンスの状態は、リソースごと、ポリシーごとの割り当によって決定されます。 ただし、環境の状態の全体像が必要になることがよくあります。そこで登場するのが、集約コンプライアンスです。
集約されたコンプライアンス結果をポータルで表示するには、いくつかの方法があります。
集約コンプライアンス ビュー | コンプライアンス状態を決定する要因 |
---|---|
Scope | 選択したスコープ内のすべてのポリシー |
イニシアティブ | イニシアチブ内のすべてのポリシー |
イニシアティブ グループまたはコントロール | グループまたはコントロール内のすべてのポリシー |
のポリシー | 該当するすべてのリソース |
リソース | 該当するすべてのポリシー |
さまざまなコンプライアンスの状態の比較
では、複数のリソースまたはポリシーが異なるコンプライアンス状態を持っている場合、集約コンプライアンス状態はどのように決定されますか? Azure Policy では、このような状況で一方がもう一方より "優先される" ように、各コンプライアンス状態がランク付けされています。 ランクの順序は次のとおりです。
- 準拠していない
- 対応
- エラー
- の 競合
- 保護 (プレビュー)
- 除外
- 不明 (プレビュー)
このランク付けにより、非準拠と準拠の両方の状態がある場合、たとえばロールアップ集計の結果が非準拠になります。 例を見てみましょう。
イニシアティブに 10 個のポリシーが含まれており、リソースが 1 つのポリシーから除外されているが、残りの 9 つのポリシーに準拠しているとします。 準拠状態は除外状態よりもランクが高いため、リソースはイニシアティブのロールアップ サマリーに準拠として登録されます。 そのため、あるリソースがイニシアチブ全体について免除として表示されるのは、そのイニシアチブ内の他のすべての適用可能なポリシーから免除されているか、それらへの準拠が不明な場合だけです。 もう 1 つの極端な場合として、リソースがイニシアティブ内の少なくとも 1 つの適用可能なポリシーに非準拠である場合、残りの適用可能なポリシーに関係なく、全体のコンプライアンス状態は非準拠になります。
コンプライアンスの割合
コンプライアンス対応率は、準拠、適用除外、および不明のリソースを "総リソース数" で割って算出されます。 "総リソース数" は、準拠、非準拠、不明、除外、競合、エラーの状態のリソースを含みます。
overall compliance % = (compliant + exempt + unknown + protected) / (compliant + exempt + unknown + non-compliant + conflicting + error + protected)
示されている画像では、適用可能な個別のリソースが 20 個あり、そのうち 1 つだけが非準拠です。 全体的なリソース コンプライアンスは 95% (19/20) となります。
次のステップ
- コンプライアンス データを取得するための方法を学びます。
- 非準拠の原因を判別する方法について確認する
- ARG クエリ サンプルを使用してコンプライアンス データを取得する