Azure Kubernetes Service (AKS)展開をセキュリティで保護する

Azure Kubernetes Service (AKS)は、コンテナー化されたアプリケーションをデプロイおよび運用するためのマネージド Kubernetes 環境を提供します。 Microsoftは Kubernetes コントロール プレーンを管理しますが、クラスター内のワークロード、ノード構成、ネットワーク、ID、データをセキュリティで保護する責任があります。 AKS をデプロイするときは、セキュリティのベスト プラクティスに従って、クラスターのライフサイクル全体でこの共有サーフェスを保護することが重要です。

この記事では、AKS デプロイを保護するためのセキュリティに関する推奨事項を示します。 これらのコントロールの多くは、強化されたベースラインからクラスターを開始する AKS Automatic で事前に構成されており、AKS Standard で有効にして管理できます。 これらのコントロールの背後にある概念 (ビルドからランタイムへのパイプライン全体での AKS セキュリティのしくみなど) については、 AKS のアプリケーションとクラスターのセキュリティの概念に関するページを参照してください。

この記事のセキュリティに関する推奨事項では、ゼロ トラストの原則 ("明示的に確認する"、"最小限の特権アクセスを使用する"、"侵害を想定する") が実装されています。 包括的なゼロ トラスト ガイダンスについては、 ゼロ トラスト ガイダンス センターを参照してください。

サービス固有のセキュリティ

AKS は、Kubernetes セキュリティ プリミティブとAzure プラットフォーム コントロールを組み合わせたものです。 次の推奨事項では、ノードの整合性、イメージの実証、ワークロードの分離など、マネージド Kubernetes クラスターの実行に固有のセキュリティ強化の問題に対処します。

クラスターとノードのセキュリティ強化

  • クラスターの自動アップグレードを使用して、サポートされている Kubernetes バージョンにクラスターを保持する: 自動アップグレード チャネルにクラスターを登録して、コントロール プレーンとノード プールが、手動介入なしで既知の脆弱性を修正する Kubernetes パッチを受け取るようにします。 詳細については、「 AKS クラスターを自動的にアップグレードする」を参照してください。
  • ノード OS のセキュリティ更新プログラムを自動的に適用する: ノード OS の自動アップグレード チャネルを構成して、ノードが定義された間隔で Linux および Windows OS セキュリティ パッチを受け取るようにします。 詳細については、「 AKS クラスター ノードのオペレーティング システム イメージを自動的にアップグレードする」を参照してください。
  • ポッドセキュリティアドミッション標準を適用する:特権ポッド、ホスト名前空間共有、および安全でないボリュームマウントを防ぐために、名前空間レベルでベースラインまたは制限付きポッドセキュリティ標準を適用します。 詳細については、「 AKS でのポッドのセキュリティ保護」を参照してください。
  • 規制対象ワークロード用に FIPS 対応ノード プールをデプロイする: ワークロードが FedRAMP コンプライアンスなどの要件を満たす必要がある場合に、FIPS 140-3 検証済み暗号化モジュールを使用する FIPS 対応ノード プールを有効にします。 詳細については、 AKS ノード プールの Federal Information Process Standard (FIPS) を有効にするを参照してください。
  • 共有クラスターで敵対的なマルチテナント ワークロードを実行しないでください。セキュリティ ドメインは個々のノードではなくクラスター全体であるため、標準の Kubernetes クラスターは信頼されていないテナント間のハード セキュリティ境界ではありません。 強力な分離を必要とするワークロードの場合は、物理的に分離されたクラスター、分離された VM ノード サイズ、またはポッドのサンドボックスを使用します。 詳細については、「 AKS でのクラスター分離のベスト プラクティス」を参照してください。

コンテナー イメージとサプライ チェーンのセキュリティ

  • 信頼できるコンテナー レジストリへのデプロイを制限する: Azure Policy アドオンを使用して、ポッドがプライベート Azure Container Registryなどの承認済みレジストリからのみイメージをプルできるように、信頼されていないパブリック イメージをクラスターで実行できないようにします。 詳細については、「AKS クラスターを Azure Policyで保護する」を参照してください。
  • イメージ クリーナーを使用して未使用の脆弱な画像を削除する: イメージ クリーナーを有効にして、ノードから古いイメージを自動的に削除し、脆弱な画像によって残された攻撃対象領域を減らします。 詳細については、「 イメージ クリーナーを使用して AKS 上の脆弱な画像をクリーンアップする」を参照してください。
  • Microsoft Defender for Containers を使用してレジストリをスキャンし、ワークロードを実行する: デプロイの前後に、レジストリとクラスター全体で脆弱なイメージと構成の誤りを検出します。 詳細については、「 Microsoft Defender for Containers の概要」を参照してください。

ネットワークのセキュリティ

既定では、AKS API サーバーはパブリック エンドポイント経由で到達可能であり、クラスターエグレスは無制限です。 コントロール プレーンへの受信アクセスとワークロードからの送信トラフィックの両方を制限することは、クラスターのネットワーク攻撃対象領域を減らすために行うことができる最も効果的な変更の 1 つです。

アイデンティティとアクセス管理

AKS は、Microsoft Entra IDを介してクラスターとワークロードの ID を認証し、Azure RBAC と Kubernetes RBAC を介してアクセスを承認します。 静的な資格情報またはスタンドアロンの Kubernetes アカウントではなく、マネージド ID と Entra に基づく承認を使用します。

  • クラスターのマネージド ID を使用する: マネージド ID を使用するようにクラスターを構成し、ローテーションする必要がある静的サービス プリンシパル資格情報なしで AKS がAzureリソースにアクセスできるようにします。 詳細については、「Azure Kubernetes Service (AKS)でマネージド ID を使用する」を参照してください。
  • Azure リソースへのポッド アクセスにワークロード ID を使用する: Microsoft Entraワークロード ID を持つ Kubernetes サービス アカウントをフェデレーションして、ポッドがシークレットを格納せずにAzureリソースのトークンを取得できるようにします。 詳細については、「AKS でMicrosoft Entra ワークロード ID を使用する」を参照してください。
  • クラスター認証を Microsoft Entra ID と統合する: Microsoft Entra統合を有効にして、ユーザーとグループが共有証明書ではなく Entra ID を使用してクラスターに対して認証されるようにします。 詳細については、AKS マネージド Microsoft Entra 統合に関する記事を参照してください。
  • Azure RBAC を使用して Kubernetes API アクセスを承認する: Kubernetes 承認に Azure RBAC を使用し、AKS 組み込みロール (Azure Kubernetes Service RBAC 閲覧者、Azure Kubernetes Service RBAC ライター、Azure Kubernetes ServiceRBAC 管理者、および Azure Kubernetes Service RBAC クラスター管理者) をクラスターまたは名前空間スコープに割り当て、最小限の特権アクセスを付与します。 詳細については、 クラスター承認の概念を参照してください。
  • ローカル Kubernetes アカウントを無効にする: ローカル アカウントをオフにして、すべてのクラスター アクセスがMicrosoft Entra ID経由で流れ、静的クラスター管理者資格情報で Entra に基づく承認をバイパスできないようにします。 詳細については、AKS で管理されるMicrosoft Entra統合を使用したローカル アカウントの管理に関するページを参照してください。
  • クラスター管理者に条件付きアクセスを適用する: AKS クラスターを作成、アップグレード、または削除し、ノード プール、ネットワーク、ロールの割り当てを管理できる Entra ID に対して、多要素認証と準拠デバイスを必要とする条件付きアクセス ポリシーを適用します。 詳細については、「Azure管理のためのMFA必須」をご覧ください。

データ保護

AKS では、既定でマネージド ディスク上の保存データが暗号化されます。 次のコントロールを構成して、Kubernetes シークレットを保護し、コンプライアンス要件で必要な場所に独自のキーを持ち込みます。

  • キー管理サービスを使用して etcd で Kubernetes シークレットを暗号化する: KMS データ暗号化を有効にして、kubernetes シークレット オブジェクトが etcd に書き込まれる前にアプリケーション レイヤーで暗号化されるようにします。そのためには、Azure Key Vaultでプラットフォームマネージド キーまたは独自のカスタマー マネージド キーを使用します。 詳細については、 AKS の保存時のデータ暗号化の概念に関する説明を参照してください。
  • Azure Key Vaultにアプリケーション シークレットを格納する: シークレット ストア CSI ドライバーのAzure Key Vault プロバイダーを使用して、シークレット、キー、証明書をプレーンテキスト Kubernetes シークレットとして格納するのではなく、Key Vaultからマウントします。 詳細については、「AKS のシークレット ストア CSI ドライバーにAzure Key Vault プロバイダーを使用する」を参照してください。
  • ノード ディスクとデータ ディスクにカスタマー マネージド キーを使用する: 暗号化キーのライフサイクルを制御する必要がある場合は、Key Vaultで独自のキーを使用して OS ディスクとデータ ディスクを暗号化します。 詳細については、AKS の Azure ディスクを使用した Bring Your Own Keys (BYOK) に関する説明を参照してください。
  • ホストベースの暗号化を有効にする: ホストベースの暗号化を有効にして、ノード VM 上の一時ディスクと OS/データ ディスク キャッシュがホスト上の保存時に暗号化されるようにします。 詳細については、 AKS でのホストベースの暗号化に関するページを参照してください。

ログ記録と監視

クラスター、コントロール プレーン、ワークロード テレメトリを収集して、AKS クラスターに対する脅威を検出して調査できるようにします。

  • Container insights を使用してクラスターを監視する: Container Insights を有効にして、クラスターのノードとコンテナーのメトリックとログをLog Analytics ワークスペースに収集します。 詳細については、「Azure Kubernetes Service (AKS)の監視」を参照してください。
  • 診断設定を使用してコントロール プレーンの監査ログを収集する: 診断設定を構成して、Kubernetes API サーバーおよび監査ログのカテゴリ (kube-audit、kube-audit-admin、および guard) をセキュリティ調査のために Log Analytics に送信します。 詳細については、 AKS データの監視に関するリファレンスを参照してください。
  • Microsoft Defender for Containers を使用して脅威検出を有効にする: コンテナーのDefenderを有効にして、クラスター ノード、ワークロード、および Kubernetes コントロール プレーンの実行時の脅威検出アラートを受信します。 詳細については、「 Microsoft Defender for Containers の概要」を参照してください。

コンプライアンスとガバナンス

Azure Policyを使用して、AKS クラスター全体でセキュリティ構成を一貫して適用し、準拠していないワークロードがデプロイされないようにします。

  • AKS のAzure Policyを使用してクラスターとワークロードの構成を適用する: Azure Policy アドオンを有効にし、AKS 組み込みポリシー イニシアチブを割り当てて、承認されたレジストリ、リソース制限、ブロックされた特権コンテナーなどの制御を監査および適用します。 詳細については、「AKS クラスターを Azure Policyで保護する」を参照してください。
  • Kubernetes のベスト プラクティスにデプロイセーフガードを適用する: デプロイセーフガードを有効にして、警告モードまたは強制モードで AKS のベスト プラクティスに照らしてクラスター リソースを検証します。 詳細については、「 デプロイセーフガードを使用して AKS のベスト プラクティスを適用する」を参照してください。
  • AKS 組み込みのポリシー定義を割り当てて特定のコントロールを適用する: AKS に組み込みのAzure Policy定義を割り当てて、承認された IP 範囲またはプライベート クラスターの要求、特権コンテナーの無効化、内部ロード バランサーの適用など、個々のコントロールを適用します。 詳細については、AKS の組み込み定義Azure Policy参照してください。

バックアップと回復

誤って削除、破損、またはアップグレードの失敗から回復できるように、クラスターの状態とアプリケーション データを保護します。

  • AKS バックアップを使用してクラスターの状態と永続ボリュームをバックアップする: AKS バックアップと Backup コンテナーを使用して、Azure Disk and Azure Files (SMB) によってバックアップされるクラスター リソースと永続ボリュームのバックアップをスケジュールし、名前空間またはクラスター全体を復元します。 詳細については、「Azure Kubernetes Service (AKS) バックアップとは」を参照してください。
  • 広範なアクセス許可ではなく、信頼されたアクセスを使用してバックアップ アクセスを許可する: 信頼されたアクセスを有効にして、Backup コンテナーが永続的な管理アクセスを必要とするのではなく、スコープ付きアクセス許可を持つクラスターに到達できるようにします。 詳細については、「信頼されたアクセスを使用して Azure リソースを有効にして AKS クラスターにアクセスできるようにする」を参照してください。

次のステップ