defender-for-containers について
Microsoft Defender for Cloud を使い、Kubernetes クラスターとイメージレジストリの保護を計画・強化するスキルです。クラスターの態勢、イメージの脆弱性、ランタイム脅威、アドミッション制御を扱います。
主な機能
- 01クラスター接続とセンサー導入の計画
- 02イメージの継続的な脆弱性スキャン
- 03ランタイム脅威検出の計画
- 04Kubernetes アドミッションポリシーの設計
- 05攻撃経路の確認
活用シーン
- 01Arc 経由で EKS または GKE クラスターを接続
- 02既存イメージの新たな脆弱性を検出
- 03アドミッションポリシーを監査モードで試行
- 04コンテナのランタイム脅威アラートを調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill defender-for-containersインストール後、Claude Code で/defender-for-containersを入力して読み込まれたか確認します。
詳細
Microsoft Defender for Containers
Defender for Containers は、Microsoft Defender for Cloud の Kubernetes 対応プランです。 AKS、Azure Arc 対応 Kubernetes(オンプレミス、EKS、GKE、OpenShift)、およびそれらにイメージを供給するコンテナーレジストリを対象とし、セキュリティ態勢、イメージの脆弱性評価、ランタイムの脅威検出、アドミッション制御を提供します。
使用する場面
Kubernetes クラスターと、それらにイメージを供給するレジストリを保護する場合に使用します。プランの展開、センサーとエージェントレスの比較検討、レジストリスキャン、アドミッションポリシーの設計、ランタイムアラートへの対応にこのスキルを使用してください。
次の用途にはこのスキルを使用しないでください。 VM/ホストの強化(defender-for-servers)、クラスターのネットワーク設計(azure-network-security-design)、または一般的な AKS 運用(azure-kubernetes)。
機能マップ
| 機能 | 仕組み | 対象 |
|---|---|---|
| エージェントレス検出 | API ベースのクラスターインベントリ、コントロールプレーンの設定ミス、K8s API 監査ログの分析 | AKS、EKS、GKE、Arc |
| エージェントレス脆弱性評価 | ノードディスクのスナップショットを取得し、レジストリ内のイメージと実行中のコンテナーをスキャン | AKS、EKS、GKE |
| レジストリスキャン | イメージをプル時、プッシュ時、継続的にスキャン | ACR、ECR、GAR |
| ランタイムの脅威検出 | Defender センサー(DaemonSet、Linux では eBPF)— ファイルレス攻撃、ラテラルムーブメント、暗号通貨マイナーを検出 | AKS、Arc、EKS、GKE |
| Kubernetes データプレーンの強化 | Azure Policy アドオン(OPA/Gatekeeper) | AKS、Arc 対応 K8s |
| 攻撃経路分析 | セキュリティ態勢、脆弱性、ランタイムを組み合わせ、インターネット → ポッド → クラウド IAM の経路を明らかにする | すべて |
アプローチ
-
サブスクリプションスコープで Defender for Containers を有効にします。 自動プロビジョニングにより、次がインストールされます。
- Linux ノードでのランタイム検出用 Defender センサー(DaemonSet)。
- アドミッション制御用 Azure Policy for Kubernetes アドオン。
- ACR スキャンへの自動接続。
確認方法:
kubectl get ds -n kube-systemの結果にmicrosoft-defender-collector-dsが表示され、AKS の Defender プロファイルが有効になっていることを確認します。
-
Azure 以外のクラスターを Arc 経由で接続します。 EKS/GKE では、AWS/GCP のクラウドアカウントレベルでコネクタを設定し、ランタイムセンサーを使用するために Arc にオンボードする必要があります(センサーなしでもエージェントレス機能は動作します)。
-
レジストリスキャンのセキュリティ態勢を整えます。 継続的スキャンを有効にし、公開済みの新しい CVE が、プッシュ時だけでなく、すでにプッシュ済みのイメージでも検出されるようにします。90 日後に「イメージ X は CVE-Y に対して脆弱か」と確認できるよう、保持期間を設定します。
-
パイプラインでイメージの脆弱性を管理します。 ランタイムまで待たずに、同じ MDVM API を CI に統合し、悪用可能な重大度の CVE がある場合はビルドを失敗させます。イメージの署名(Notation/cosign)と組み合わせ、署名済みイメージを必須にするアドミッション制御を設定します。
-
ランタイムの脅威検出 — センサーとエージェントレスのどちらを使うか?
- センサーが必要な対象:ファイルレス攻撃、プロセスツリー、メモリ内での悪用、ラテラルムーブメント、リバースシェル。
- エージェントレスで対応できる対象:イメージの脆弱性、セキュリティ態勢、K8s API 監査に基づく検出。
- 本番環境では両方を使用します。センサーは Linux ノードプールのみに導入してください(Windows のランタイムセンサーによるカバレッジは限定的です)。
-
Azure Policy/Gatekeeper でアドミッション制御を行います。 14 日間は監査モードで展開し、その後に拒否モードに切り替えます。ベースラインポリシー:
- 特権コンテナーを禁止する。
- 機密性の高いパスへの
hostPathマウントを禁止する。 - アプリケーションのワークロードに
readOnlyRootFilesystemを必須とする。 - リソース制限を必須とする。
- 署名済みイメージを必須とする(許可リストに登録したレジストリを使用)。
-
攻撃経路分析 — 毎週確認します。最初に修正すべき重要度の高い経路は、インターネットに公開されたポッドの重大な CVE → ワークロード ID → クラウド IAM です。検出件数ではなく、影響範囲の広さに基づいて優先順位を付けます。
-
Defender for Cloud コネクタを介して Sentinel にアラートをストリーミングします。ProductName = "Microsoft Defender for Containers" でフィルターした
SecurityAlertに対するハンティングクエリを作成します。
ガードレール
- 実行時検出には Defender センサーが必要です。 エージェントレスだけでは、ポッド内で実行されるリバースシェルや暗号通貨マイナーを検出できません。
- アドミッションポリシーは、まず監査モードで展開してください。 初日から拒否モードで
requiredLabelsポリシーを適用すると、デプロイが停止します。 - カーネルにフックする特権 DaemonSet を、テストせずに 2 つ実行しないでください(例:Defender センサー、Falco、サードパーティ製 EDR)。eBPF プログラムの競合やノードの不安定化が発生する可能性があります。
- ACR とプライベート エンドポイント、および Defender のスキャンには、慎重なネットワーク設計が必要です。 スキャナーがレジストリにアクセスできる必要があります。プライベート DNS の名前解決と、信頼されたサービスのバイパスを確認してください。
- プランのスコープを単一クラスターの RG に限定しないでください。 別の RG に新しいクラスターを作成すると、保護されません。サブスクリプションのスコープとポリシーの適用を使用してください。
- Windows コンテナーでは、センサーのカバー範囲が限られています。 Windows ワークロードでは、より厳格なアドミッション制御とイメージスキャンで補ってください。
- 悪用可能性のコンテキストがないイメージの脆弱性検出結果はノイズになります。 トリアージの前に、必ず悪用可能なもの/KEV でフィルターしてください。
よくあるアンチパターン
- 「センサーはノードあたり 80 MB の RAM を追加で使うので、エージェントレスだけにする」 — 実行時検出ができません。RAM を確保してください。
- 「初日からアドミッションポリシーを拒否モードにする」 — 障害が発生します。14 日間監査し、違反を修正してから拒否してください。
- 「プッシュ時だけイメージをスキャンする」 — 昨日のイメージに含まれる今日の CVE が検出されません。継続的なスキャンを有効にしてください。
- 「CI では MDVM の検出結果を無視し、実行時に対処する」 — 脆弱性が本番環境に到達し、ロールバックにコストがかかります。重大かつ悪用可能な脆弱性があれば、ビルドを失敗させてください。
- 「すべてのクラスターを対象にし、サンドボックスの例外は設けない」 — アラートが大量に発生し、実際のインシデントが埋もれます。アドミッション拒否とアラートのルーティングから、サンドボックスをタグ付けして除外してください。
- 「Docker を直接実行している VM ホストに Defender for Containers を使用した」 — ツールが違います。その場合は
defender-for-serversを使用します。 - 「コネクターで十分だと考え、EKS/GKE で Arc を省略した」 — 実行時センサーがなく、eBPF 検出もできません。
プロンプトの例
5 つのサブスクリプションにある AKS クラスター全体で Defender for Containers を有効にし、dev 環境で 7 日間パイロット運用する。Kubernetes アドミッション制御に Azure Policy を展開する — ベースラインポリシーセットは監査モードにする。Arc 経由で 3 つの EKS クラスターを接続し、実行時センサーを有効にする。MDVM の重大かつ悪用可能な CVE を検出した場合に失敗する CI ゲートを構築する。「コンテナー内の暗号通貨マイニング活動」アラートを調査する — ランブックと KQL。攻撃経路分析を調整し、インターネットからクラウド IAM への経路のみを表示する。承認済み ACR の署名済みイメージのみを必須にするアドミッション制御を設計する。
Microsoft Learn
- 概要:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction
- プランを有効にする:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable
- アーキテクチャ:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-architecture
- 脆弱性評価:https://learn.microsoft.com/azure/defender-for-cloud/agentless-vulnerability-assessment-azure
- 実行時検出アラート:https://learn.microsoft.com/azure/defender-for-cloud/alerts-reference#alerts-k8scluster
- Kubernetes 向け Azure Policy:https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes
- EKS / GKE の保護:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable?pivots=defender-for-container-eks
- 攻撃経路分析:https://learn.microsoft.com/azure/defender-for-cloud/concept-attack-path