azure-policy について
Azure のサブスクリプションや管理グループを統制するチーム向けのガイダンススキルです。非準拠の構成を監査、拒否、修復する方法を説明し、効果の選択と安全な段階導入を扱います。
主な機能
- 01Audit、Deny、修復の効果を選択
- 02組み込みポリシーとイニシアティブを利用
- 03管理グループスコープでポリシーを割り当て
- 04監査から拒否へ段階的に展開
- 05修復タスクで既存リソースを修正
- 06Defender for Cloud とコンプライアンスを監視
活用シーン
- 01組織のセキュリティベースラインを段階的に導入
- 02管理グループ全体にリソースガードレールを適用
- 03診断設定などの関連リソースをデプロイ
- 04既存リソースのポリシー違反を修復
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill azure-policyインストール後、Claude Code で/azure-policyを入力して読み込まれたか確認します。
詳細
Azure Policy
Azure Policy は、組織の標準を適用し、大規模なコンプライアンスを評価します。準拠していないリソース構成を監査または防止し、構成のずれを自動的に修正します。Azure 環境の予防的な制御プレーンであり、Defender for Cloud の規制コンプライアンスを支えるエンジンです。
使用する場面
サブスクリプションや管理グループ全体に、予防的および検出的なガバナンス/セキュリティのガードレールを実装する場合に使用します。このスキルを使って、効果を選択し、イニシアティブを設計し、安全に展開します。
このスキルを使用しないでください。RBAC ロールの選択(azure-role-selector)、Defender のセキュリティ態勢(defender-for-cloud-hardening)、または Bicep/IaC テンプレート作成には使用しません。
目的に応じたポリシー効果の選択
| 目的 | 効果 | 備考 |
|---|---|---|
| ブロックせずに非準拠リソースを検出する | Audit | レポートのみ。最初の既定値 |
| 非準拠リソースの作成/更新をブロックする | Deny | 予防的。まず Audit でテストします |
| 必須のタグ/プロパティを自動的に追加する | Modify(または Append) | 要求を変更します |
| 関連リソースの不足分をデプロイする(例:診断設定) | DeployIfNotExists(DINE) | マネージド ID が必要です |
| 関連リソースの不足分を検出する | AuditIfNotExists(AINE) | レポートのみ |
| 多数のリソースにまたがる条件付きロジック | Initiative | 複数のポリシーをグループ化します |
| ゲストユーザーの作成/特定の SKU をブロックする | Deny + パラメーター | 許可する SKU をパラメーター化します |
| Defender for Cloud のベースラインを適用する | 組み込みの MCSB initiative | 独自のものは作成しないでください |
経験則: 新しいポリシーはすべて、まず Audit で 14~30 日間運用します。コンプライアンスを確認し、重要な制御を Deny に移行します。「当然そこにあるべき」もの(診断設定、Defender エージェント)には DeployIfNotExists を使用します。テナント全体に対して最初から Deny を適用しないでください。
アプローチ
-
組み込みのイニシアティブがある場合はそれを使用します — 既定は Microsoft Cloud Security Benchmark (MCSB) です。コンプライアンスの適用範囲に応じて、規制関連のイニシアティブ(CIS、ISO 27001、NIST 800-53、PCI DSS、HIPAA)を追加します。 確認:MCSB イニシアティブがルート管理グループに割り当てられていること。Defender for Cloud でコンプライアンス状態を確認できること。
-
組み込みの定義がない場合に限り、カスタム定義を作成します — ARM JSON でカスタムポリシーを作成します。
policyRule(条件 + 効果)、parameters(再利用可能な入力)、metadata(カテゴリ)を指定します。ポリシーは単一の目的に絞り、イニシアティブでグループ化します。 -
イニシアティブでポリシーをグループ化します — 関連するポリシーをまとめます(例:「Enterprise security baseline」イニシアティブに 30 個のポリシーを含めます)。管理しやすいよう、個別のポリシーではなくイニシアティブを割り当てます。
-
管理グループをスコープにします — 子サブスクリプション全体に継承させるため、管理グループ に割り当てます。除外は必要最小限にし、正当な理由を文書化します。 確認:ポリシーのコンプライアンスで割り当てスコープを確認できること。子サブスクリプションに継承されていること。
-
Audit → 確認 → Deny の順に展開します — まず Audit として割り当てます。14~30 日待ち、非準拠の一覧を取得し、ワークロード所有者と協力して修正するか、例外を文書化します。その後、割り当てを Deny に切り替えます。 確認:Deny に切り替える前に、非準拠の件数が許容できるベースラインまで減っていること。ワークロード所有者に通知済みであること。
-
修復タスクで既存のリソースを修正します —
DeployIfNotExistsポリシーとModifyポリシーは、新規または更新されたリソースにのみ作用します。既存のリソースを準拠させるには、修復タスク を使用します。変更はポリシー割り当ての マネージド ID によって実行されます。 確認:割り当て後に修復タスクが作成されていること。成功率が 95% を超えていること。失敗をトリアージ済みであること。 -
監視し、Defender for Cloud と統合します — コンプライアンス状態が日々のダッシュボードになります。Defender for Cloud は推奨事項にポリシーを使用します。推奨事項の不合格は、ポリシーの不合格を意味します。
ガードレール
- Deny ポリシーはまず監査モードでテストしてください。広範な Deny は、正当なデプロイやパイプラインをブロックする可能性があります。 真夜中に初めて Deny を適用すると、09:00 の本番デプロイがブロックされます。
- パラメーターを使って、環境間でポリシーを再利用できるようにしてください。 リージョン、SKU、タグ値をハードコードすると、環境ごとにポリシーが必要になり、構成の乖離が避けられません。
- 除外しすぎないでください。除外するたびにガードレールが弱まり、正当な理由が必要です。 除外は例外リストです。理由を記録し、有効期限を設定してください。
- DeployIfNotExists には、適切なロールを持つマネージド ID が必要です。 割り当ての ID に適切な RBAC が設定されていないと、修復は警告なしに失敗します。
- すでに組み込み済みのものを作成しないでください。 MCSB や規制イニシアティブはメンテナンスされています。独自にコピーすると、Microsoft のガイダンスから乖離します。
- ポリシー ≠ RBAC です。 ポリシーはリソースの構成を制御し、RBAC は操作できるユーザーを制御します。両方のレイヤーが必要です。
よくあるアンチパターン
- 「初日にテナント全体へ Deny をデプロイする」 - 初回の本番デプロイが失敗します。まず監査してください。
- 「環境ごとにポリシーを作り、コピー&ペーストする」 - パラメーターがハードコードされ、保守が困難になります。パラメーター化し、環境ごとに 1 つの割り当てを作成してください。
- 「独自のものがあるので MCSB イニシアティブをスキップする」 - 独自のものは乖離します。MCSB は Microsoft によってメンテナンスされています。
- 「コンプライアンスに違反するサブスクリプションを除外する」 - 問題を隠すことになります。修正するか、リスクを正式に受容してください。
- 「修復タスクなしで DeployIfNotExists をデプロイする」 - 既存のリソースはコンプライアンス違反のままになり、新しいリソースにしか構成が適用されません。
- 「テストせずにカスタム JSON を使う」 - 構文エラーのあるポリシーを初めて割り当てても、効果も警告もありません。まずサンドボックスのサブスクリプションでテストしてください。
プロンプトの例
管理グループのスコープでセキュリティベースラインを適用する Azure Policy イニシアティブを作成してください。コンプライアンス違反のリソースを拒否し、DeployIfNotExists で自動修復するにはどうすればよいですか?継承を使って、管理グループのスコープでガバナンスガードレールを適用してください。ポリシーを Deny に切り替える前に、リソース構成を監査してください。開発/テスト/本番の各環境で再利用できるように、許可する場所のポリシーをパラメーター化してください。既存のリソースをコンプライアンスに適合させる修復タスクを作成してください。
Microsoft Learn
- Azure Policy の概要:https://learn.microsoft.com/azure/governance/policy/overview
- ポリシーの効果:https://learn.microsoft.com/azure/governance/policy/concepts/effects
- イニシアティブ(ポリシーセット):https://learn.microsoft.com/azure/governance/policy/concepts/initiative-definition-structure
- 修復タスク:https://learn.microsoft.com/azure/governance/policy/how-to/remediate-resources
- 管理グループのスコープ:https://learn.microsoft.com/azure/governance/management-groups/overview
- Microsoft Cloud Security Benchmark:https://learn.microsoft.com/security/benchmark/azure/overview
- DeployIfNotExists パターン:https://learn.microsoft.com/azure/governance/policy/how-to/programmatically-create
- ポリシーのコンプライアンス:https://learn.microsoft.com/azure/governance/policy/how-to/get-compliance-data