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')]する必要があります。 ただし、代わりに 監査 効果を考慮する必要があります。
注
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条件リソースのリソース グループに制限されます。これは既定の動作です。 - サブスクリプションの場合は、関連リソースのサブスクリプション全体を照会します。 適切な評価を行う場合は、割り当てスコープをサブスクリプション以上に設定する必要があります。
- 既定値は ResourceGroup です。
-
evaluationDelay(省略可)- 関連リソースの存在を評価するタイミングを指定します。 遅延は、リソースの作成または更新要求の結果である評価にのみ使用されます。
- 使用できる値は、
AfterProvisioning、AfterProvisioningSuccess、AfterProvisioningFailure、または 0 ~ 360 分の間の ISO 8601 期間です。 -
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 管理グループを確認する。