Azure Policy 定義の denyAction 効果
denyAction
効果は、リソースに意図されるアクションに基づいて要求を大規模にブロックするために使われます。 現在、サポートされているアクションは DELETE
のみです。 この効果とアクション名は、重要なリソースが誤って削除されるのを防ぐのに役立ちます。
DenyAction の評価
該当するアクション名と対象スコープを持つ要求の呼び出しを送信すると、denyAction
により、要求は成功しなくなります。 要求は 403 (Forbidden)
として返されます。 ポータルでは、Forbidden
はポリシー割り当てによって阻止されたデプロイの状態として表示されます。
ロックアウト シナリオを防ぐために、Microsoft.Authorization/policyAssignments
、Microsoft.Authorization/denyAssignments
、Microsoft.Blueprint/blueprintAssignments
、Microsoft.Resources/deploymentStacks
、Microsoft.Resources/subscriptions
、Microsoft.Authorization/locks
はいずれも denyAction
の適用から除外されています。
サブスクリプションの削除
サブスクリプションの削除中に発生するリソースの削除は、ポリシーによってブロックされません。
リソース グループの削除
ポリシーにより、リソース グループの削除中に denyAction
ポリシーに対して場所とタグをサポートするリソースが評価されます。 リソース グループの削除をブロックするのは、ポリシー規則で cascadeBehaviors
が deny
に設定されているポリシーのみです。 場所とタグ、または mode:all
が設定されたポリシーをサポートしていないリソースの削除は、ポリシーによってブロックされません。
カスケード削除
カスケード削除が発生するのは、親リソースを削除したときに、そのすべての子および拡張リソースも暗黙的に削除される場合です。 削除アクションが親リソースを対象としている場合、子および拡張リソースの削除はポリシーによってブロックされません。 Microsoft.Storage/storageaccounts
の拡張リソースの例として、Microsoft.Insights/diagnosticSettings
が挙げられます。 denyAction
ポリシーが Microsoft.Insights/diagnosticSettings
を対象としている場合、診断設定 (子) に対する削除の呼び出しは失敗しますが、ストレージ アカウント (親) の削除によって、診断設定 (拡張) が暗黙的に削除されます。
この表は、割り当てられた denyAction
ポリシーに適用されるリソースと、DELETE
呼び出しのターゲット スコープを考慮して、リソースが削除から保護されるかどうかを説明するものです。 この表のコンテキストでは、インデックス付きリソースはタグと場所をサポートするものであり、非インデックス付きリソースはタグと場所をサポートしないものです。 インデックス付きと非インデックス付きのリソースの詳細については、定義モードに関する記事を参照してください。 子リソースとは、別のリソースのコンテキスト内でのみ存在するリソースのことです。 たとえば、仮想マシン拡張機能リソースは、親リソースである仮想マシンの子です。
削除されるエンティティ | ポリシー条件に適用されるエンティティ | 実行した操作 |
---|---|---|
リソース | リソース | Protected |
サブスクリプション | リソース | Deleted |
Resource group | インデックス付きリソース | 依存先 cascadeBehaviors |
Resource group | 非インデックス付きリソース | Deleted |
子リソース | 親リソース | 親が保護される、子が削除される |
親リソース | 子リソース | Deleted |
DenyAction のプロパティ
denyAction
効果の details
プロパティには、アクションと動作を定義するすべてのサブプロパティがあります。
actionNames
(必須)- 実行を阻止するアクションを指定する "配列"。
- サポートされているアクション名は
delete
です。
cascadeBehaviors
(省略可)- リソース グループが削除されたときにリソースが暗黙的に削除される場合に実行される動作を定義するオブジェクト。
- mode が
indexed
に設定されているポリシー定義でのみサポートされます。 - 使用できる値は
allow
またはdeny
です。 - 既定値は
deny
です。
DenyAction の例
例: 運用環境と等しいタグ環境のデータベース アカウントを対象とした削除の呼び出しをすべて拒否します。カスケード動作は Deny に設定されているため、該当するデータベース アカウントを持つリソース グループを対象とするすべての DELETE
呼び出しをブロックします。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.DocumentDb/accounts"
},
{
"field": "tags.environment",
"equals": "prod"
}
]
},
"then": {
"effect": "denyAction",
"details": {
"actionNames": [
"delete"
],
"cascadeBehaviors": {
"resourceGroup": "deny"
}
}
}
}
次のステップ
- Azure Policy のサンプルを確認します。
- 「Azure Policy の定義の構造」を確認します。
- プログラムによってポリシーを作成する方法を理解します。
- コンプライアンス データを取得する方法を学習します。
- 準拠していないリソースを修復する方法を学習します。
- Azure 管理グループを確認する。