ノード分離の概要

このドキュメントでは、Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタでのノード分離のメリットと制限事項について説明します。専用ノードプールによるノードの分離により、クラスタ内の特定の Pod の実行場所を正確に制御できるため、クラスタのセキュリティが強化されます。

ワークロードの分離には、次のようなメリットがあります。

  • Kubernetes クラスタでの権限昇格攻撃のリスクが軽減されます。
  • 追加のリソースを必要とする Pod をより細かく制御できます。

このような場合は、コンテナ ワークロードを専用ノードプールに分離して、制御と最適化を強化することを検討してください。ノードの分離に必要なメンテナンス コストの追加について、十分な情報に基づいて判断できるように、制限事項も必ず考慮してください。

このドキュメントは、Kubernetes クラスタのノードプールを管理するプラットフォーム管理者グループ内の IT 管理者や、コンテナ ワークロードを管理するアプリケーション オペレータ グループ内のアプリケーション デベロッパーなどのユーザーを対象としています。詳細については、GDC のエアギャップ環境のユーザー グループのドキュメントをご覧ください。

ワークロードを分離する理由

必須ではありませんが、ノードプールを特定のコンテナ ワークロード専用にすると、潜在的な問題を回避できます。ただし、このアプローチでは管理がより多く必要になり、多くの場合、必須ではありません。

Kubernetes クラスタは、特権付き GDC マネージド ワークロードを使用して、指標の収集などの特定のクラスタ機能と機能を有効にします。これらのワークロードには、クラスタ内で正しく実行するための特別な権限が付与されます。

ノードにデプロイするワークロードは、悪意のあるエンティティによって侵害されるおそれがあります。特権付き GDC マネージド ワークロードとともにこれらのワークロードを実行すると、侵害されたコンテナをブレイクアウトした攻撃者が、ノード上の特権付きワークロードの認証情報を使用して、クラスタ内の権限を昇格できるようになります。

専用ノードプールは、他より多くのリソース(メモリやローカル ディスク容量など)を必要とする Pod をスケジュールする必要がある場合にも役立ちます。

次のメカニズムを使用して、専用ノードプールでワークロードをスケジュールできます。

  • ノード taint: 対応する toleration のない特定のノードでワークロードのスケジューリングを回避するよう Kubernetes クラスタに通知します。
  • ノード アフィニティ: 特定の Pod を専用ノードでスケジュールするように Kubernetes クラスタに指示します。

ノード分離は高度な多層防御メカニズムであり、最小権限のコンテナやサービス アカウントなどの他の分離機能と併せて使用する必要があります。ノード分離がすべてのエスカレーション パスに対応しているとは限らないため、主要なセキュリティ境界としては使用しないでください。

ノード分離の仕組み

ワークロードにノード分離を実装するには、次のようにする必要があります。

  1. ワークロードのノードプールに taint とラベルを追加します。

  2. 対応する toleration とノード アフィニティ ルールでワークロードを更新します。

このガイドでは、クラスタ内の 1 つのノードプールから始めることを前提としています。ノード taint に加えてノード アフィニティを使用することは必須ではありませんが、スケジューリング全体をより詳細に管理できるようになるので、ノード アフィニティを使用することをおすすめします。

推奨事項とベスト プラクティス

ノード分離を設定したら、次の作業を行うことをおすすめします。

  • 新しいノードプールを作成する場合、独自の taint をこれらの新しいノードプールに追加して、ほとんどの GDC マネージド ワークロードがこれらのノードで実行されないようにします。

  • サードパーティ ツールをインストールする場合など、クラスタに新しいワークロードをデプロイする際は、常に Pod に必要な権限を監査してください。可能であれば、昇格権限を使用するワークロードを共有ノードにデプロイすることは避けてください。

制限事項

分離されたノードプールで実行されている Pod には、次の制限が適用されます。

  • 攻撃者は、侵害されたノードからサービス拒否攻撃(DoS)を開始できます。

  • 昇格した権限を持ち、あらゆる taint を許容できる DaemonSet リソースをデプロイすると、これらの Pod が、侵害されたノードからの権限昇格に利用される可能性があります。

  • 侵害されたノードは、クラスタ内のすべての Pod や Namespace など、引き続き多くのリソースを読み取ることができます。

  • 侵害されたノードは、そのノードで実行されているすべての Pod が使用する Secret と認証情報にアクセスできます。

  • 侵害されたノードは、下りネットワーク ポリシーを回避できます。

  • ワークロードを分離するために別のノードプールを使用すると、コスト効率、自動スケーリング、リソース使用率に影響を与える可能性があります。

  • 一部の GDC マネージド ワークロードは、クラスタ内のすべてのノードで実行される必要があり、すべての taint を許容するように構成されています。

次のステップ