Azure Policy のコンプライアンスの状態
コンプライアンスのしくみ
イニシアティブまたはポリシー定義が割り当てられると、Azure Policy はどのリソースが適用対象であるかを判断した後、除外や免除されないリソースを評価します。 評価では、ポリシー ルール内の条件および各リソースのそれらの要件への準拠状況に基づいて、コンプライアンスの状態が導き出されます。
使用可能なコンプライアンスの状態
準拠していない
audit
、auditIfNotExists
、modify
のいずれかの効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE
と評価されると、"新規"、"更新"、または "既存" のリソースでは非準拠と見なされます。
append
、deny
、および deployIfNotExists
効果を使用するポリシー割り当ては、ポリシー ルールの条件が TRUE
と評価されると、"既存" のリソースでは非準拠と見なされます。 "新規" および "更新" のリソースは、要求時に自動的に修復または拒否され、コンプライアンスが適用されます。 以前に存在していた非準拠リソースが更新されると、リソースのデプロイとポリシーの評価が完了するまで、コンプライアンスの状態は非準拠のままです。
Note
deployIfNotExists
および auditIfNotExists
効果が非準拠となるには、IF ステートメントが TRUE であり、存在条件が FALSE である必要があります。 TRUE のとき、IF 条件は関連するリソースの既存の条件の評価をトリガーします。
manual
効果を使用するポリシー割り当ては、次の 2 つの状況では非準拠と見なされます。
- ポリシー定義の既定のコンプライアンスの状態が非準拠であり、適用対象リソースに、そうでないことを宣言するアクティブな構成証明が存在しない。
- リソースが非準拠として宣言された。
リソースが非準拠である理由や、原因となった変更を特定するには、「非準拠の原因の特定」を参照してください。 deployIfNotExists
および modify
ポリシーの非準拠リソースを修復するには、「Azure Policyを使って準拠していないリソースを修復する」を参照してください。
対応
append
、audit
、auditIfNotExists
、deny
、deployIfNotExists
、modify
のいずれかの効果を使用するポリシー割り当ては、ポリシー ルールの条件が FALSE
と評価されると、"新規"、"更新"、または "既存" のリソースで準拠と見なされます。
manual
効果を使用するポリシー割り当ては、次の 2 つの状況では準拠と見なされます。
- ポリシー定義の既定のコンプライアンスの状態が準拠であり、適用対象のリソースに、そうでないことを宣言するアクティブな構成証明が存在しない。
- リソースが準拠として宣言された。
エラー
エラーのコンプライアンスの状態は、テンプレートや評価のエラーなど、システム エラーを生成するポリシー割り当てに与えられます。
の 競合
ポリシー割り当ては、同じスコープ内に矛盾または競合するルールを持つ 2 つ以上のポリシー割り当てが存在する場合に、競合していると見なされます。 たとえば、異なる値の同じタグを追加する 2 つの定義などです。
除外
該当リソースが免除のスコープ内にある場合、それはポリシー割り当て免除のコンプライアンスの状態を持ちます。
Note
"免除" は "除外" とは異なります。 詳細については、「Azure Policy でのスコープについて」を参照してください。
Unknown
既定値が明示的に準拠または非準拠に設定されていない限り、不明が manual
効果を使用する定義の既定のコンプライアンス状態となります。 この状態は、コンプライアンスの構成証明が保証されていることを示します。 このコンプライアンスの状態は、manual
効果のポリシー割り当てでのみ発生します。
Protected
保護の状態は、そのリソースが denyAction 効果の割り当て対象であることを示します。
未登録
このコンプライアンス状態は、Azure Policy リソース プロバイダーが登録されていない、またはサインインしているアカウントにコンプライアンス データを読み取るアクセス許可がない場合に Azure portal に表示されます。
Note
コンプライアンス状態が未登録と報告されている場合は、Microsoft.PolicyInsights
リソース プロバイダーが登録されていること、およびユーザーが「Azure Policy 内の Azure RBAC アクセス許可」で説明されている適切な Azure ロールベースのアクセス制御 (Azure RBAC) アクセス許可を持っていることを確認します。
Microsoft.PolicyInsights
を登録するには、「Azure リソースのプロバイダーと種類」の手順に従います。
開始前
このコンプライアンス状態は、ポリシーまたはリソースの評価サイクルが開始していないことを示します。
例
どのようなコンプライアンスの状態が存在するのかと、それぞれの意味について説明したので、準拠状態と非準拠状態を使用して例を見てみましょう。
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) となります。
次のステップ
- コンプライアンス データを取得するための方法を学びます。
- 非準拠の原因を判別する方法について確認する
- Azure Policy の Azure Resource Graph サンプル クエリを通してコンプライアンス データを取得する