CIS ベンチマーク


このページでは、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 クラスタ内でユーザーが制御できるコンポーネントの、安全な構成に関するガイドラインを確立します。 Google Cloud上の GKE に固有の推奨事項が含まれています。

Google Cloud上の GKE に固有である CIS GKE Benchmark を優先することをおすすめします。CIS Kubernetes Benchmark に含まれている推奨事項の多くは、その対象であるコントロールを GKE ではユーザーが見て変更することができません。クラスタ セキュリティに対する Google のアプローチに含まれている緩和策は、オープンソースの Kubernetes ベンチマークのスコープを超えており、前述の推奨事項と競合する可能性があります。

GKE に適用されるその他のベンチマーク

CIS GKE Benchmark と CIS Kubernetes Benchmark に加えて、GKE で使用可能なオペレーティング システムには次のベンチマークが適用されます。ある OS のベンチマークには Kubernetes の使用についての明示的な記述がないという場合でも、追加のセキュリティ ガイダンスを得るためにそのベンチマークを参照してください。

デフォルトのコンテナ ランタイムである 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 モニタリング コンポーネントは、匿名認証を使用して指標を取得します。
  • コントロール プレーン コンポーネントの中には静的トークンを使用してブートストラップされるものがあり、このトークンは API サーバーに対する認証に使用されます。これらのトークンは、VM の起動または再起動のたびに生成されます。
アドミッション コントローラ

GKE では次のアドミッション コントローラが無効化されます。

  • EventRateLimit: これは Kubernetes のアルファ機能の一つです。
  • AlwaysPullImages: このコントローラによって、非協調型マルチテナント クラスタの非公開レジストリ イメージがある程度保護されますが、その代償としてイメージ レジストリが単一障害点となり、クラスタ内で新しい Pod を作成できなくなることがあります。
  • SecurityContextDeny: Pod セキュリティ アドミッション コントローラのほうが優先され、すべての GKE エディションで使用可能です。 GKE Enterprise を使用している場合は、Policy Controller を使用して Pod セキュリティ標準の適用を有効にすることもできます。
  • ImagePolicyWebhook: GKE にはイメージ管理とセキュリティの独自のメカニズムがあるため、ImagePolicyWebhook がデフォルトでは無効化されます。その結果、GKE ではより厳格なコントロールが環境に対して維持されるとともに、セキュリティの実践事項が確実に一貫して適用されます。 ただし、Binary Authorization または Policy Controller をポリシー管理に使用することは可能です。
監査ロギング GKE では、GKE 監査ポリシーを使用して監査ログが記録されます。そのため、Kubernetes API サーバー監査ロギングのフラグの設定は一切必要ありません。
デバッグ GKE はデバッグにプロファイリングを使用します。
暗号化
etcd

オープンソースの Kubernetes では、クラスタ状態データベースに etcd が使用されます。GKE では、次のいずれかのテクノロジーを使用したバックエンド データベースにクラスタの状態が保存されます。

  • etcd: クラスタのコントロール プレーンで etcd インスタンスが実行されます。
  • Spanner: コントロール プレーン VM とは別の Spanner ベースのデータベースにクラスタの状態が保存されます。

すべての GKE クラスタのコントロール プレーン VM で etcd API のサービスが提供されます。Kubernetes API とのクライアントのやり取りは、オープンソースの Kubernetes の場合と同じです。クラスタの etcd API のバックエンドであるデータベース テクノロジーによっては、オープンソースの CIS Kubernetes Benchmark における etcd 関連のスコアリングに差異が生じることがあります。

kubelet
  • GKE では、未認証の kubelet 読み取り専用ポートが有効化されます。ポートを無効にするには、--no-autoprovisioning-enable-insecure-kubelet-readonly-port を設定します。読み取り専用ポートは、移行期間を経て、今後のリリースでデフォルトで無効になる予定です。
  • GKE Standard モードでは、必要に応じてワークロードがカーネルのデフォルトを変更できます。
  • GKE では、サービス拒否攻撃のリスクを縮小するために、kubelet 内の Kubernetes イベントの数が制限されます。
  • GKE では、kubelet と API サーバーの間のトラフィックを保護するために mTLS が使用されます。
  • GKE では、サーバー証明書のローテーションがデフォルトで行われ、クライアント証明書のローテーションは Shielded GKE Nodes が有効化されているときに行われます。
  • GKE では golang のデフォルトの許可暗号セットが使用されます。これは Kubernetes のデフォルトでもあります。

CIS Benchmark で GKE を評価する

次のいずれかの方法を使用して、ベンチマークに照らしたクラスタの評価を自動化できます。

  • CIS GKE Benchmark:

    • すべての GKE エディション:
      • kube-bench を実行してワーカーノードを Benchmark に照らして評価します。詳細については、kube-bench GitHub リポジトリをご覧ください。
      • サードパーティ製ツール(たとえば Twistlock Defender)を使用してノードを Benchmark に照らして評価します。
    • GKE Enterprise エディション: Compliance ダッシュボードを使用してすべてのクラスタの CIS GKE Benchmark への準拠状況を評価します。詳細については、GKE Compliance ダッシュボードについてをご覧ください。
  • CIS Kubernetes Benchmark: kube-bench を実行してワーカーノードを Benchmark に照らして評価します。マネージド コントロール プレーンを Benchmark 内の推奨事項に照らして評価することはできません。

次のステップ