Azure Policy 定義の auditIfNotExists 効果
auditIfNotExists
効果により、if
条件に一致するリソースに "関連する" が、then
条件の details
で指定されるプロパティがないリソースを監査できるようになります。
AuditIfNotExists の評価
auditIfNotExists
は、リソース プロバイダーによってリソースの作成または更新要求が処理され、成功の状態コードが返された後に実行されます。 監査は、関連するリソースがない場合、または ExistenceCondition
によって定義されたリソースが true と評価されない場合に発生します。 新規および更新されたリソースの場合、Azure Policy によってアクティビティ ログに Microsoft.Authorization/policies/audit/action
操作が追加され、リソースは非準拠とマークされます。 トリガーされた場合、if
条件を満たすリソースは、非準拠としてマークされているリソースです。
AuditIfNotExists のプロパティ
AuditIfNotExists 効果の details
プロパティには、照合する関連リソースを定義するすべてのサブプロパティが含まれます。
type
(必須)- 照合する関連リソースの型を指定します。
type
がif
条件リソース下にあるリソースの種類である場合、ポリシーは、評価対象リソースのスコープ内でこのtype
のリソースのクエリを実行します。 それ以外の場合、ポリシーは、existenceScope
に応じて、評価対象リソースと同じリソース グループまたはサブスクリプション内でクエリを実行します。
name
(省略可)- 照合するリソースの正確な名前を指定して、指定した型のすべてのリソースではなく 1 つの特定のリソースを取得します。
if.field.type
とthen.details.type
の条件値が一致する場合、name
は "必須" になり、子リソースに対し[field('name')]
または[field('fullName')]
であることが必要です。 ただし、代わりに audit の影響を考慮する必要があります。
Note
type
と name
のセグメントを組み合わせると、通常、入れ子になったリソースを取得できます。
特定のリソースを取得するには、"type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
と "name": "parentResourceName/nestedResourceName"
を使用できます。
入れ子になったリソースのコレクションを取得するには、姓セグメントの代わりにワイルドカード文字 ?
を指定できます。 たとえば、"type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
と"name": "parentResourceName/?"
です。 これをフィールド関数と組み合わせて、評価されたリソースに関連するリソース (例: "name": "[concat(field('name'), '/?')]"
) にアクセスできます。"
resourceGroupName
(省略可)- 別のリソース グループに由来する関連リソースを照合できるようにします。
type
がif
条件リソースの下にあるリソースである場合は適用されません。- 既定値は、
if
条件リソースのリソース グループです。
existenceScope
(省略可)- 使用できる値は Subscription と ResourceGroup です。
- 照合する関連リソースを取得する範囲を設定します。
type
がif
条件リソースの下にあるリソースである場合は適用されません。- ResourceGroup については、
resourceGroupName
内のリソース グループに制限されます (指定されている場合)。resourceGroupName
が指定されていない場合は、if
条件リソースのリソース グループに制限されます。これは既定の動作です。 - Subscription の場合は、関連リソースのサブスクリプション全体を検索します。 適切に評価するためには、割り当てスコープがサブスクリプション以上で設定されている必要があります。
- 既定値は ResourceGroup です。
evaluationDelay
(省略可)- 関連リソースの存在を評価する必要があるタイミングを指定します。 遅延は、リソースの作成または更新要求の結果である評価のみに使用されます。
- 使用できる値は
AfterProvisioning
、AfterProvisioningSuccess
、AfterProvisioningFailure
、または ISO 8601 期間の 0 から 360 分の間です。 - AfterProvisioning 値では、ポリシー規則の
if
条件で評価されたリソースのプロビジョニング結果が検査されます。 結果に関係なく、プロビジョニングが完了した後にAfterProvisioning
が実行されます。 6 時間より長くかかるプロビジョニングは、AfterProvisioning の評価の遅延を判断するときに失敗として扱われます。 - 既定値は
PT10M
(10 分間) です。 - 長い評価遅延を指定すると、リソースの記録されたコンプライアンス状態が、次の評価のトリガーまで更新されない場合があります。
existenceCondition
(省略可)- 指定されない場合、
type
の関連リソースは効果を満たしているため、監査はトリガーされません。 if
条件のポリシー規則と同じ言語が使用されますが、それぞれの関連リソースに対して個別に評価されます。- 照合する関連リソースのいずれかが true と評価された場合、効果は条件を満たしているため、監査はトリガーされません。
- [field()] を使用して、
if
条件の値と等しいことを確認できます。 - たとえば、(
if
条件内の) 親リソースが、照合する関連リソースと同じリソースの場所にあることを検証するために使用できます。
- 指定されない場合、
AuditIfNotExists の例
例: 仮想マシンを評価してマルウェア対策の拡張機能が存在するかどうかを判定し、ない場合に監査します。
{
"if": {
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [
{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Azure.Security"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "IaaSAntimalware"
}
]
}
}
}
}
次のステップ
- Azure Policy のサンプルを確認します。
- 「Azure Policy の定義の構造」を確認します。
- プログラムによってポリシーを作成する方法を理解します。
- コンプライアンス データを取得する方法を学習します。
- 準拠していないリソースを修復する方法を学習します。
- Azure 管理グループを確認する。