CIS Kubernetes Benchmark

このドキュメントでは、CIS Kubernetes Benchmark の概要、ベンチマークでコンプライアンスを監査する方法について説明します。また、推奨事項を自分で実装できない場合に Anthos clusters on VMware(GKE On-Prem)の構成がどうなるかについても説明します。

CIS ベンチマークについて

Center for Internet Security(CIS)ではベスト プラクティスのセキュリティに関する推奨事項のベンチマークを公開しています。CIS Kubernetes Benchmark は、強固なセキュリティ状態を維持できるように Kubernetes を構成するための一連の推奨事項を提供します。ベンチマークは特定の Kubernetes リリースに関連付けられています。CIS Kubernetes Benchmark は、オープンソースの Kubernetes ディストリビューション用に記述されており、できる限り多くのディストリビューションに広く適用できるように構成されています。

バージョン

ベンチマークによって、バージョン番号が異なる場合があります。このドキュメントでは、以下のバージョンを参照しています。

Anthos のバージョン Kubernetes のバージョン CIS Kubernetes Benchmark のバージョン
1.8.0 1.20.5 1.6

CIS Kubernetes Benchmark を使用する

ベンチマークにアクセスする

CIS Kubernetes Benchmark は CIS ウェブサイトで入手できます。

推奨レベル

次の表に、CIS Kubernetes Benchmark の推奨レベルを示します。

レベル 説明
レベル 1

推奨事項は以下を目的としています:

  • 実用的かつ慎重
  • セキュリティ上の明確なメリットの提供
  • 許容可能な範囲を超えて技術の有用性を阻害しないこと
  • レベル 2

    レベル 1 のプロファイルを拡張します。

    推奨事項には、次の 1 つ以上の特徴があります。

  • セキュリティが最も重要な環境やユースケースを対象としている。
  • 多層防御として機能する。または、
  • テクノロジーの実用性やパフォーマンスを阻害する可能性がある。
  • 評価ステータス

    評価ステータスはすべての推奨事項に含まれます。評価ステータスは、提案された最適化案の実装が自動化できるか、または手動で手順を進める必要があるかを示します。どちらのステータスも重要であり、次のテーブルの定義のように決定、サポートされます。

    スコア付け 説明
    自動 技術制御の評価を完全に自動化でき、合否の状態を判定できる場合の推奨事項を表します。推奨事項には、自動化を実装するために必要な情報が含まれます。
    手動 技術制御の評価を完全に自動化できず、期待された構成状態になっていることを確認するために手動で全体または一部の手順を行う必要がある推奨事項を表します。期待される状態は環境によって異なります。

    Anthos clusters on VMware の評価

    次の値を使用して、Anthos clusters on VMware の Kubernetes 推奨事項のステータスを表します。

    ステータス 説明
    合格 ベンチマークの推奨事項に準拠している。
    不合格 ベンチマークの推奨事項に準拠していない。
    同等の統制 ベンチマークの推奨事項を厳密には準拠していないが、同等のセキュリティ コントロールを提供する別のメカニズムが Anthos clusters on VMware に存在する。
    環境に依存 Anthos clusters on VMware は、この推奨事項に関連する項目を構成していない。ユーザー側の構成により、環境がベンチマークの推奨事項を遵守しているかどうか決まる。

    Anthos clusters on VMware のアーキテクチャ

    VMware の Anthos クラスタは、管理クラスタを使用して 1 つ以上のユーザー クラスタを管理します。ユーザー クラスタは実際の Kubernetes ワークロードを実行します。このアーキテクチャの詳細については、Anthos clusters on VMware の概要をご覧ください。管理クラスタとユーザー クラスタの構成は、どちらも次のベンチマークを対象に評価されます。

    Anthos clusters on VMware のステータス

    指定されたバージョンの VMware の Anthos クラスタで新しいクラスタを作成すると、CIS Kubernetes Benchmark に対して以下のステータスを示します。

    Anthos clusters on VMware 管理クラスタのステータス:

    # 推奨 レベル ステータス
    1 マスターノードのセキュリティ構成
    1.1 マスターノード構成ファイル
    1.1.1 API サーバーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されている確認する(自動) L1 合格
    1.1.2 API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.3 コントローラ マネージャーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.4 コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.5 スケジューラの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.6 スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.7 etcd の Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.8 etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.9 Container Network Interface のファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    1.1.10 Container Network Interface のファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    1.1.11 etcd データ ディレクトリの権限が、700 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.12 etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) L1 同等の統制
    1.1.13 admin.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.14 admin.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.15 scheduler.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.16 scheduler.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.17 controller-manager.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    1.1.18 controller-manager.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.19 Kubernetes PKI ディレクトリとファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.20 Kubernetes PKI 証明書ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    1.1.21 Kubernetes PKI 鍵ファイルの権限が 600 に設定されていることを確認する(手動) L1 合格
    1.2 API サーバー
    1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) L1 不合格
    1.2.2 --basic-auth-file 引数が設定されていないことを確認する(自動) L1 合格
    1.2.3 --token-auth-file パラメータが設定されていないことを確認する(自動) L1 合格
    1.2.4 --kubelet-https 引数が true に設定されていることを確認する(自動) L1 合格
    1.2.5 --kubelet-client-certificate 引数と --kubelet-client-key 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.6 --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.7 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) L1 合格
    1.2.8 --authorization-mode 引数にノードが含まれていることを確認する(自動) L1 合格
    1.2.9 --authorization-mode 引数に RBAC が含まれていることを確認する(自動) L1 合格
    1.2.10 アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) L1 不合格
    1.2.11 アドミッション コントロール プラグインの AlwaysAdmit が設定されていないことを確認する(自動) L1 合格
    1.2.12 アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) L1 環境に依存
    1.2.13 PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) L1 同等の統制
    1.2.14 アドミッション コントロール プラグインの ServiceAccount が設定されていることを確認する(自動) L1 合格
    1.2.15 アドミッション コントロール プラグインの NamespaceLifecycle が設定されていることを確認する(自動) L1 合格
    1.2.16 アドミッション コントロール プラグインの PodSecurityPolicy が設定されていることを確認する(自動) L1 同等の統制
    1.2.17 アドミッション コントロール プラグインの NodeRestriction が設定されていることを確認する(自動) L1 合格
    1.2.18 --insecure-bind-address 引数が設定されていないことを確認する(自動) L1 合格
    1.2.19 --insecure-port 引数が 0 に設定されていることを確認する(自動) L1 合格
    1.2.20 --secure-port 引数が 0 に設定されていないことを確認する(自動) L1 合格
    1.2.21 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.2.22 --audit-log-path 引数が設定されていることを確認する(自動) L1 同等の統制
    1.2.23 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.24 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.25 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.26 --request-timeout 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.27 --service-account-lookup 引数が true に設定されていることを確認する(自動) L1 合格
    1.2.28 --service-account-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.29 --etcd-certfile 引数と --etcd-keyfile 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.30 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.31 --client-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.32 --etcd-cafile 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.33 --encryption-provider-config 引数が適切に設定されていることを確認する(手動) L1 不合格
    1.2.34 暗号化プロバイダが適切に構成されていることを確認する(手動) L1 不合格
    1.2.35 API サーバーが強力な暗号のみを使用していることを確認する(手動) L1 合格
    1.3 コントローラ マネージャー
    1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する(手動) L1 合格
    1.3.2 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認する(自動) L1 合格
    1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.3.5 --root-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認する(自動) L2 Pass
    1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) L1 合格
    1.4 スケジューラ
    1.4.1 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.4.2 --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) L1 合格
    2 Etcd ノードの構成
    2 Etcd ノードの構成ファイル
    2.1 --cert-file 引数と --key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    2.2 --client-cert-auth 引数が true に設定されていることを確認する(自動) L1 合格
    2.3 --auto-tls 引数が true に設定されていないことを確認する(自動) L1 合格
    2.4 --peer-cert-file 引数と --peer-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    2.5 --peer-client-cert-auth 引数が true に設定されていることを確認する(自動) L1 合格
    2.6 --peer-auto-tls 引数が true に設定されていないことを確認する(自動) L1 合格
    2.7 固有の認証局が etcd に使用されていることを確認する(手動) L2 合格
    3 コントロール プレーンの設定
    3.1 認証と認可
    3.1.1 クライアント証明書の認証をユーザーに使用していないことを確認する(手動) L2 合格
    3.2 ロギング
    3.2.1 最小限の監査ポリシーが作成されていることを確認する(手動) L1 合格
    3.2.2 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) L2 同等の統制
    4 ワーカーノードのセキュリティ構成
    4.1 ワーカーノード構成ファイル
    4.1.1 kubelet サービス ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    4.1.2 kubelet サービス ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    4.1.3 プロキシ kubeconfig ファイルが存在する場合は、権限が 644 またはそれより制限された値設定されていることを確認する(手動) L1 合格
    4.1.4 プロキシ kubeconfig ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    4.1.5 --kubeconfig kubelet.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    4.1.6 --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 同等の統制
    4.1.7 認証局ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    4.1.8 クライアント認証局ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    4.1.9 kubelet の --config 構成ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    4.1.10 kubelet の --config 構成ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    4.2 Kubelet
    4.2.1 anonymous-auth 引数が false に設定されていることを確認する(自動) L1 合格
    4.2.2 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) L1 合格
    4.2.3 --client-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    4.2.4 --read-only-port 引数が 0 に設定されていることを確認する(手動) L1 不合格
    4.2.5 --streaming-connection-idle-timeout 引数が 0 に設定されていないことを確認する(手動) L1 合格
    4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認する(自動) L1 不合格
    4.2.7 --make-iptables-util-chains 引数が true に設定されていることを確認する(自動) L1 合格
    4.2.8 --hostname-override 引数が設定されていないことを確認する(手動) L1 合格
    4.2.9 --event-qps 引数が 0 か、適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) L2 不合格
    4.2.10 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) L1 同等の統制
    4.2.11 --rotate-certificates 引数が false に設定されていないことを確認する(手動) L1 合格
    4.2.12 RotateKubeletServerCertificate 引数が true に設定されていることを確認する(手動) L1 Pass
    4.2.13 Kubelet が強力な暗号のみを使用していることを確認する(手動) L1 同等の統制

    Anthos clusters on VMware 管理クラスタの障害と同等の制御に関する説明

    # 推奨 レベル ステータス 理由
    1.1.11 etcd データ ディレクトリの権限が、700 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 755 etcd データ ディレクトリにはデフォルトで 755 権限が設定されていますが、サブディレクトリは 700 です。
    1.1.12 etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) L1 同等の統制 root:root etcd コンテナが root として実行され、etcd データ ディレクトリが root:root によって所有されています。
    1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) L1 不合格 未設定 一部の Anthos clusters on VMware モニタリング コンポーネントは、匿名認証を使用してヘルスチェックを行います。
    1.2.10 アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。
    1.2.12 アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) L1 環境に依存 未設定 AlwaysPullImages アドミッション コントローラは、非協調型のマルチテナント クラスタの非公開レジストリ イメージを保護しますが、クラスタ全体で新しい Pod を作成する際にコンテナ レジストリが単一障害点となります。Anthos clusters on VMware では AlwaysPullImages アドミッション コントローラは有効になりません。クラスタ管理者がこのトレードオフを判断し、アドミッション ポリシーを実装するか判断します。
    1.2.13 PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) L1 同等の統制 未設定 Pod のセキュリティ設定に関するポリシーは、Policy Controller と Anthos Config Management を使用して管理します。
    1.2.16 アドミッション コントロール プラグインの PodSecurityPolicy が設定されていることを確認する(自動) L1 同等の統制 未設定 Pod のセキュリティ設定に関するポリシーは、Policy Controller と Anthos Config Management を使用して管理します。
    1.2.22 --audit-log-path 引数が設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.23 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.24 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.25 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.33 --encryption-provider-config 引数が適切に設定されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Secret のアプリケーション レイヤの暗号化をまだサポートしていません。
    1.2.34 暗号化プロバイダが適切に構成されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Secret のアプリケーション レイヤの暗号化をまだサポートしていません。
    3.2.2 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) L2 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    4.1.5 --kubeconfig kubelet.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    4.1.6 --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    4.2.4 --read-only-port 引数が 0 に設定されていることを確認する(手動) L1 不合格 10255 一部の Anthos clusters on VMware モニタリング コンポーネントは、kubelet 読み取り専用ポートを使用して指標を取得します。
    4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認する(自動) L1 不合格 false Anthos clusters on VMware では、kubelet に必要なカーネル設定が可能です。
    4.2.9 --event-qps 引数が 0 か、適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) L2 不合格 未設定 イベントは、etcd に格納されている Kubernetes オブジェクトです。過大な etcd を避けるために、これらは 1 時間だけ保持されますが、これは適切なセキュリティ監査メカニズムではありません。このコントロールで提案されている無制限のイベントを許可すると、クラスタは不要な DoS のリスクにさらされることになり、アドミッション EventRateLimits の使用に関する推奨事項に矛盾します。永続ストレージを必要とするセキュリティ関連のイベントは、ログに送信する必要があります。
    4.2.10 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) L1 同等の統制 未設定 Anthos clusters on VMware は、--rotate-server-certificates フラグを使用して kubelet サーバー TLS を管理します。
    4.2.13 Kubelet が強力な暗号のみを使用していることを確認する(手動) L1 同等の統制 Kubelet はデフォルトの暗号を使用します。

    Anthos clusters on VMware ユーザー クラスタのステータス

    # 推奨 レベル ステータス
    1 マスターノードのセキュリティ構成
    1.1 マスターノード構成ファイル
    1.1.1 API サーバーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されている確認する(自動) L1 同等の統制
    1.1.2 API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.3 コントローラ マネージャーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.4 コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.5 スケジューラの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.6 スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.7 etcd の Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.8 etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.9 Container Network Interface のファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    1.1.10 Container Network Interface のファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    1.1.11 etcd データ ディレクトリの権限が、700 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.12 etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) L1 同等の統制
    1.1.13 admin.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.14 admin.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.15 scheduler.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.16 scheduler.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.17 controller-manager.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    1.1.18 controller-manager.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制
    1.1.19 Kubernetes PKI ディレクトリとファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    1.1.20 Kubernetes PKI 証明書ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    1.1.21 Kubernetes PKI 鍵ファイルの権限が 600 に設定されていることを確認する(手動) L1 合格
    1.2 API サーバー
    1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) L1 不合格
    1.2.2 --basic-auth-file 引数が設定されていないことを確認する(自動) L1 合格
    1.2.3 --token-auth-file パラメータが設定されていないことを確認する(自動) L1 合格
    1.2.4 --kubelet-https 引数が true に設定されていることを確認する(自動) L1 合格
    1.2.5 --kubelet-client-certificate 引数と --kubelet-client-key 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.6 --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.7 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) L1 合格
    1.2.8 --authorization-mode 引数にノードが含まれていることを確認する(自動) L1 合格
    1.2.9 --authorization-mode 引数に RBAC が含まれていることを確認する(自動) L1 合格
    1.2.10 アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) L1 不合格
    1.2.11 アドミッション コントロール プラグインの AlwaysAdmit が設定されていないことを確認する(自動) L1 合格
    1.2.12 アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) L1 環境に依存
    1.2.13 PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) L1 同等の統制
    1.2.14 アドミッション コントロール プラグインの ServiceAccount が設定されていることを確認する(自動) L1 合格
    1.2.15 アドミッション コントロール プラグインの NamespaceLifecycle が設定されていることを確認する(自動) L1 合格
    1.2.16 アドミッション コントロール プラグインの PodSecurityPolicy が設定されていることを確認する(自動) L1 同等の統制
    1.2.17 アドミッション コントロール プラグインの NodeRestriction が設定されていることを確認する(自動) L1 合格
    1.2.18 --insecure-bind-address 引数が設定されていないことを確認する(自動) L1 合格
    1.2.19 --insecure-port 引数が 0 に設定されていることを確認する(自動) L1 合格
    1.2.20 --secure-port 引数が 0 に設定されていないことを確認する(自動) L1 合格
    1.2.21 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.2.22 --audit-log-path 引数が設定されていることを確認する(自動) L1 同等の統制
    1.2.23 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.24 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.25 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) L1 同等の統制
    1.2.26 --request-timeout 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.27 --service-account-lookup 引数が true に設定されていることを確認する(自動) L1 合格
    1.2.28 --service-account-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.29 --etcd-certfile 引数と --etcd-keyfile 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.30 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.31 --client-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.32 --etcd-cafile 引数が適切に設定されていることを確認する(自動) L1 合格
    1.2.33 --encryption-provider-config 引数が適切に設定されていることを確認する(手動) L1 不合格
    1.2.34 暗号化プロバイダが適切に構成されていることを確認する(手動) L1 不合格
    1.2.35 API サーバーが強力な暗号のみを使用していることを確認する(手動) L1 合格
    1.3 コントローラ マネージャー
    1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する(手動) L1 合格
    1.3.2 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認する(自動) L1 合格
    1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.3.5 --root-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認する(自動) L2 Pass
    1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) L1 合格
    1.4 スケジューラ
    1.4.1 --profiling 引数が false に設定されていることを確認する(自動) L1 合格
    1.4.2 --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) L1 合格
    2 Etcd ノードの構成
    2 Etcd ノードの構成ファイル
    2.1 --cert-file 引数と --key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    2.2 --client-cert-auth 引数が true に設定されていることを確認する(自動) L1 合格
    2.3 --auto-tls 引数が true に設定されていないことを確認する(自動) L1 合格
    2.4 --peer-cert-file 引数と --peer-key-file 引数が適切に設定されていることを確認する(自動) L1 合格
    2.5 --peer-client-cert-auth 引数が true に設定されていることを確認する(自動) L1 合格
    2.6 --peer-auto-tls 引数が true に設定されていないことを確認する(自動) L1 合格
    2.7 固有の認証局が etcd に使用されていることを確認する(手動) L2 合格
    3 コントロール プレーンの設定
    3.1 認証と認可
    3.1.1 クライアント証明書の認証をユーザーに使用していないことを確認する(手動) L2 合格
    3.2 ロギング
    3.2.1 最小限の監査ポリシーが作成されていることを確認する(手動) L1 合格
    3.2.2 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) L2 同等の統制
    4 ワーカーノードのセキュリティ構成
    4.1 ワーカーノード構成ファイル
    4.1.1 kubelet サービス ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    4.1.2 kubelet サービス ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    4.1.3 プロキシ kubeconfig ファイルが存在する場合は、権限が 644 またはそれより制限された値設定されていることを確認する(手動) L1 合格
    4.1.4 プロキシ kubeconfig ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    4.1.5 --kubeconfig kubelet.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制
    4.1.6 --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 同等の統制
    4.1.7 認証局ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(手動) L1 合格
    4.1.8 クライアント認証局ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 合格
    4.1.9 kubelet の --config 構成ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 合格
    4.1.10 kubelet の --config 構成ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 合格
    4.2 Kubelet
    4.2.1 anonymous-auth 引数が false に設定されていることを確認する(自動) L1 合格
    4.2.2 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) L1 合格
    4.2.3 --client-ca-file 引数が適切に設定されていることを確認する(自動) L1 合格
    4.2.4 --read-only-port 引数が 0 に設定されていることを確認する(手動) L1 不合格
    4.2.5 --streaming-connection-idle-timeout 引数が 0 に設定されていないことを確認する(手動) L1 合格
    4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認する(自動) L1 不合格
    4.2.7 --make-iptables-util-chains 引数が true に設定されていることを確認する(自動) L1 合格
    4.2.8 --hostname-override 引数が設定されていないことを確認する(手動) L1 合格
    4.2.9 --event-qps 引数が 0 か、適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) L2 不合格
    4.2.10 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) L1 同等の統制
    4.2.11 --rotate-certificates 引数が false に設定されていないことを確認する(手動) L1 合格
    4.2.12 RotateKubeletServerCertificate 引数が true に設定されていることを確認する(手動) L1 Pass
    4.2.13 Kubelet が強力な暗号のみを使用していることを確認する(手動) L1 同等の統制

    Anthos clusters on VMware ユーザー クラスタの障害と同等の制御に関する説明

    # 推奨 レベル ステータス 理由
    1.1.1 API サーバーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されている確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.2 API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.3 コントローラ マネージャーの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.4 コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.5 スケジューラの Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.6 スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.7 etcd の Pod 仕様ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.8 etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.11 etcd データ ディレクトリの権限が、700 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 755 etcd データ ディレクトリにはデフォルトで 755 権限が設定されていますが、サブディレクトリは 700 です。
    1.1.12 etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) L1 同等の統制 root:root etcd コンテナが root として実行され、etcd データ ディレクトリが root:root によって所有されています。
    1.1.13 admin.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.14 admin.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.15 scheduler.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.16 scheduler.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.17 controller-manager.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.1.18 controller-manager.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) L1 不合格 未設定 一部の Anthos clusters on VMware モニタリング コンポーネントは、匿名認証を使用してヘルスチェックを行います。
    1.2.10 アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。
    1.2.12 アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) L1 環境に依存 未設定 AlwaysPullImages アドミッション コントローラは、非協調型のマルチテナント クラスタの非公開レジストリ イメージを保護しますが、クラスタ全体で新しい Pod を作成する際にコンテナ レジストリが単一障害点となります。Anthos clusters on VMware では AlwaysPullImages アドミッション コントローラは有効になりません。クラスタ管理者がこのトレードオフを判断し、アドミッション ポリシーを実装するか判断します。
    1.2.13 PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) L1 同等の統制 未設定 Pod のセキュリティ設定に関するポリシーは、Policy Controller と Anthos Config Management を使用して管理します。
    1.2.16 アドミッション コントロール プラグインの PodSecurityPolicy が設定されていることを確認する(自動) L1 同等の統制 未設定 Pod のセキュリティ設定に関するポリシーは、Policy Controller と Anthos Config Management を使用して管理します。
    1.2.22 --audit-log-path 引数が設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.23 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.24 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.25 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) L1 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    1.2.33 --encryption-provider-config 引数が適切に設定されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Secret のアプリケーション レイヤの暗号化をまだサポートしていません。
    1.2.34 暗号化プロバイダが適切に構成されていることを確認する(手動) L1 不合格 未設定 Anthos clusters on VMware は、Secret のアプリケーション レイヤの暗号化をまだサポートしていません。
    3.2.2 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) L2 同等の統制 未設定 Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。
    4.1.5 --kubeconfig kubelet.conf ファイルの権限が、644 またはそれより制限された値に設定されていることを確認する(自動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    4.1.6 --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(手動) L1 同等の統制 コントロール プレーンの Pod 仕様が管理クラスタ内の同等の RBAC 認証ポリシーで保護されていますが、ディスク上のファイルとしては存在しません。
    4.2.4 --read-only-port 引数が 0 に設定されていることを確認する(手動) L1 不合格 10255 一部の Anthos clusters on VMware モニタリング コンポーネントは、kubelet 読み取り専用ポートを使用して指標を取得します。
    4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認する(自動) L1 不合格 false Anthos clusters on VMware では、kubelet に必要なカーネル設定が可能です。
    4.2.9 --event-qps 引数が 0 か、適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) L2 不合格 未設定 イベントは、etcd に格納されている Kubernetes オブジェクトです。過大な etcd を避けるために、これらは 1 時間だけ保持されますが、これは適切なセキュリティ監査メカニズムではありません。このコントロールで提案されている無制限のイベントを許可すると、クラスタは不要な DoS のリスクにさらされることになり、アドミッション EventRateLimits の使用に関する推奨事項に矛盾します。永続ストレージを必要とするセキュリティ関連のイベントは、ログに送信する必要があります。
    4.2.10 --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) L1 同等の統制 未設定 Anthos clusters on VMware は、--rotate-server-certificates フラグを使用して kubelet サーバー TLS を管理します。
    4.2.13 Kubelet が強力な暗号のみを使用していることを確認する(手動) L1 同等の統制 Kubelet はデフォルトの暗号を使用します。

    監査ベンチマーク

    各推奨事項を監査するための具体的な手順は、関連する CIS ベンチマークの一環として利用できます。ただし、これらのチェックの一部を自動化して、お客様の環境でのこれらのコントロールの検証を簡素化することもできます。これには次のツールが役立ちます。

    CIS Kubernetes Benchmark の自動監査

    オープンソース ツール kube-bench を使用して、CIS Kubernetes Benchmark に対してクラスタ構成をテストできます。

    適切なバージョンを指定してください。たとえば、

    kube-bench node --benchmark cis-1.6