Defender for Containers のアーキテクチャ
Defender for Containers は、次のうちどれで実行されていても、Kubernetes 環境ごとに異なる方法で設計されています。
Azure Kubernetes Service (AKS) - コンテナー化されたアプリケーションを開発、デプロイ、管理するための Microsoft のマネージド サービスです。
接続された Amazon Web Services (AWS) アカウントでの Amazon Elastic Kubernetes Service (EKS) - 独自で Kubernetes の制御プレーンやノードをインストール、運用、保守することなく、AWS 上で Kubernetes を稼働させるための Amazon のマネージド サービスです。
接続された Google Cloud Platform (GKE) プロジェクトの Google Kubernetes Engine (GKE) - GCP インフラストラクチャを使用してアプリケーションをデプロイ、管理、スケーリングするための Google の管理された環境。
管理されていない Kubernetes のディストリビューション (Azure Arc 対応の Kubernetes を使用) - Cloud Native Computing Foundation (CNCF) 認定の Kubernetes クラスターを、オンプレミスまたは IaaS 上でホストします。
Note
Defender for Containers による Arc 対応の Kubernetes クラスター (AWS EKS、GCP GKE) のサポートはプレビュー機能です。
Kubernetes コンテナーを保護するために、Defender for Containers は次の情報を受け取って分析します。
- API サーバーからの監査ログとセキュリティ イベント
- コントロール プレーンからのクラスター構成情報
- Azure Policy からのワークロード構成
- ノード レベルからのセキュリティ シグナルとイベント
サポートされるオペレーティング システム、使用できる機能、送信プロキシなどの実装の詳細については、「Defender for Containers の機能の可用性」を参照してください。
各 Kubernetes 環境のアーキテクチャ
Defender for Cloud と AKS クラスターのアーキテクチャ図
Azure Kubernetes Service でホストされているクラスターを Defender for Cloud で保護すると、監査ログ データの収集はエージェントレスとなり、Azure インフラストラクチャによって自動的に収集されます。追加のコストは発生せず、構成に関する他の考慮事項も発生しません。 以下は、Microsoft Defender for Containers の保護機能をすべて利用するために必要なコンポーネントとなります。
- Defender センサー: 各ノードにデプロイされ、eBPF テクノロジを使用してホストからのシグナルを収集し、実行時の保護を提供する DaemonSet。 このセンサーは Log Analytics ワークスペースに登録され、データ パイプラインとして使用されます。 ただし、監査ログ データは Log Analytics ワークスペースに保存されません。 Defender センサーは AKS セキュリティ プロファイルとしてデプロイされます。
- Kubernetes 用の Azure Policy: オープンソース Gatekeeper v3 を拡張し、Webhook として Kubernetes アドミッション コントロールに登録するポッドにより、クラスターに対して大規模な適用と保護を一元的かつ一貫した方法で適用できます。 Kubernetes ポッド用の Azure Policy は、AKS アドオンとしてデプロイされます。 クラスター内の 1 つのノードにのみインストールされます。 詳細については、「Kubernetes ワークロードを保護する」および「Kubernetes 用の Azure Policy について理解する」を参照してください。
Defender センサー コンポーネントの詳細
ポッド名 | 名前空間 | 種類 | 簡単な説明 | 機能 | リソース制限 | エグレスが必要 |
---|---|---|---|---|---|---|
microsoft-defender-collector-ds-* | kube-system | DaemonSet | Kubernetes 環境からインベントリ イベントとセキュリティ イベントを収集することに重点を置いたコンテナー セットです。 | SYS_ADMIN、 SYS_RESOURCE、 SYS_PTRACE |
メモリ: 296Mi CPU: 360m |
No |
microsoft-defender-collector-misc-* | kube-system | デプロイ | 特定のノードにバインドされていない Kubernetes 環境からインベントリ イベントとセキュリティ イベントを収集することに重点を置いたコンテナー セットです。 | 該当なし | メモリ: 64Mi CPU: 60m |
No |
microsoft-defender-publisher-ds-* | kube-system | DaemonSet | 収集したデータを Microsoft Defender for Containers のバックエンド サービスに公開して、データの処理と分析を行います。 | 該当なし | メモリ: 200 Mi CPU: 60m |
Https 443 アウトバンド アクセスの前提条件 の詳細情報 |
* リソースの制限は構成できません。Kubernetes リソースの制限の詳細を確認してください。
Azure での Kubernetes のエージェントレス検出のしくみ
検出プロセスは、間隔をおいて取得したスナップショットに基づいています。
Kubernetes のエージェントレス検出拡張機能を有効にすると、次のプロセスが発生します。
作成:
- 拡張機能が Defender CSPM から有効になっている場合、Defender for Cloud では
CloudPosture/securityOperator/DefenderCSPMSecurityOperator
という顧客環境で ID が作成されます。 - 拡張機能が Defender for Containers から有効になっている場合、Defender for Cloud では
CloudPosture/securityOperator/DefenderForContainersSecurityOperator
という顧客環境で ID が作成されます。
- 拡張機能が Defender CSPM から有効になっている場合、Defender for Cloud では
割り当て: Defender for Cloud では、Kubernetes エージェントレス オペレーターという組み込みロールが、サブスクリプション スコープでその ID に割り当てられます。 このロールには、次のアクセス許可が含まれています。
- AKS 読み取り (Microsoft.ContainerService/managedClusters/read)
- 次のアクセス許可を使用する AKS の信頼されたアクセス。
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/write
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/read
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/delete
AKS の信頼されたアクセスの詳細を確認してください。
検出: システム割り当て ID を使用して、Defender for Cloud では AKS の API サーバーへの API 呼び出しにより、環境内の AKS クラスターの検出が実行されます。
バインド: AKS クラスターが検出されると、Defender for Cloud は、作成された ID と Kubernetes の
ClusterRole
aks:trustedaccessrole:defender-containers:microsoft-defender-operator の間にClusterRoleBinding
を作成して、AKS のバインド操作を実行します。ClusterRole
は、API を使って表示することができ、Defender for Cloud のデータ プレーンにクラスター内での読み取りアクセス許可を付与します。
Note
コピーされたスナップショットは、クラスターと同じリージョンに保持されます。
次のステップ
この概要では、Microsoft Defender for Cloud でのコンテナー セキュリティのアーキテクチャについて説明しました。 プランを有効にするには、以下を参照してください。