このページでは、Google Kubernetes Engine(GKE)が Kubernetes と GKE の Center for Internet Security(CIS)ベンチマークへの準拠を強化するために採用しているアプローチについて説明します。このページには、次の情報が含まれています。
- CIS Kubernetes Benchmark に準拠するために Google がどのようにマネージド GKE コントロール プレーンを構成しているか
- CIS Google Kubernetes Engine(GKE)Benchmark に準拠するためにお客様がどのように GKE ノードとワークロードを構成できるか
CIS ベンチマークについて
CIS から次のベンチマークがリリースされており、この中に Kubernetes の安全な構成のガイドラインが含まれています。
- CIS Kubernetes Benchmark: オープンソースの Kubernetes プロジェクトに適用されます。セルフマネージドとホステッドのさまざまな Kubernetes 実装のためのガイダンスを提供することを目的としています。
- CIS GKE Benchmark: GKE クラスタ内でユーザーが制御できるコンポーネントの、安全な構成に関するガイドラインを確立します。 Trusted Cloud by S3NS上の GKE に固有の推奨事項が含まれています。
Trusted Cloud上の GKE に固有である CIS GKE Benchmark を優先することをおすすめします。CIS Kubernetes Benchmark に含まれている推奨事項の多くは、その対象であるコントロールを GKE ではユーザーが見て変更することができません。クラスタ セキュリティに対する Google のアプローチに含まれている緩和策は、オープンソースの Kubernetes ベンチマークのスコープを超えており、前述の推奨事項と競合する可能性があります。
GKE に適用されるその他のベンチマーク
CIS GKE Benchmark と CIS Kubernetes Benchmark に加えて、GKE で使用可能なオペレーティング システムには次のベンチマークが適用されます。ある OS のベンチマークには Kubernetes の使用についての明示的な記述がないという場合でも、追加のセキュリティ ガイダンスを得るためにそのベンチマークを参照してください。
- Container-Optimized OS Benchmark: すべての GKE Linux ノードにインストールされるデフォルトのオペレーティング システム
デフォルトのコンテナ ランタイムである containerd のベンチマークはありません。
共有責任モデル
Google は、GKE の共有責任モデルに基づいて次のコンポーネントを管理します。
- コントロール プレーン。これには、コントロール プレーン VM、API サーバーが含まれ、さらにクラスタ状態データベース(etcd または Spanner ベース)、kube-controller-manager、kube-scheduler などのコンポーネントが含まれます。
- ノードのオペレーティング システム。
これらのコンポーネントは GKE が所有するプロジェクト内に存在するため、お客様がこれらのコンポーネントに変更を加えることや、対応する CIS Benchmark コントロールに照らして評価することはできません。ただし、お客様のワーカーノードとお客様のワークロードに適用される CIS Benchmark コントロールを評価して修復することはできます。GKE の共有責任モデルに基づき、これらのコンポーネントはお客様の責任で管理する必要があります。
CIS Benchmark に対応した GKE 保護のための Google のアプローチ
GKE は、オープンソースの Kubernetes をマネージド型で実装するものです。Google がコントロール プレーン全体を管理するとともに、コントロール プレーン コンポーネントの構成のセキュリティ保護について責任を負います。次の表に、Google による決定事項のうち CIS ベンチマークのスコアリングに影響する可能性があるものを示します。
GKE のセキュリティ アプローチ | |
---|---|
認証 |
|
アドミッション コントローラ | GKE では次のアドミッション コントローラが無効化されます。
|
監査ロギング | GKE では、GKE 監査ポリシーを使用して監査ログが記録されます。そのため、Kubernetes API サーバー監査ロギングのフラグの設定は一切必要ありません。 |
デバッグ | GKE はデバッグにプロファイリングを使用します。 |
暗号化 |
|
etcd | オープンソースの Kubernetes では、クラスタ状態データベースに etcd が使用されます。GKE では、次のいずれかのテクノロジーを使用したバックエンド データベースにクラスタの状態が保存されます。
すべての GKE クラスタのコントロール プレーン VM で etcd API のサービスが提供されます。Kubernetes API とのクライアントのやり取りは、オープンソースの Kubernetes の場合と同じです。クラスタの etcd API のバックエンドであるデータベース テクノロジーによっては、オープンソースの CIS Kubernetes Benchmark における etcd 関連のスコアリングに差異が生じることがあります。 |
kubelet |
|
CIS Benchmark で GKE を評価する
次のいずれかの方法を使用して、ベンチマークに照らしたクラスタの評価を自動化できます。
CIS GKE Benchmark:
- すべての GKE エディション:
kube-bench
を実行してワーカーノードを Benchmark に照らして評価します。詳細については、kube-bench GitHub リポジトリをご覧ください。- サードパーティ製ツール(たとえば Twistlock Defender)を使用してノードを Benchmark に照らして評価します。
CIS Kubernetes Benchmark:
kube-bench
を実行してワーカーノードを Benchmark に照らして評価します。マネージド コントロール プレーンを Benchmark 内の推奨事項に照らして評価することはできません。
次のステップ
- GKE セキュリティの概要を確認する。
- GKE セキュリティ強化ガイドのセキュリティのベスト プラクティスに従う。
- すべての GKE エディション: