1.35 CIS Kubernetes ベンチマーク

Center for Internet Security ( CIS ) は、 CIS Kubernetes Benchmarkを、 Kubernetes をより安全に、さまざまな業界規制に見合った基準で設定するための具体的な手順の枠組みとして公表している。 この文書には、 1.5 CIS Kubernetes Kubernetes バージョン 1.35 を実行するクラスタのベンチマークの結果が含まれています。 ベンチマークの詳細または理解については、 ベンチマークの使用を 参照してください。

1 マスター・ノードのセキュリティー構成

1.1 マスター・ノードの構成ファイル

セクション 1.1: マスター・ノード構成ファイルのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
1.1.1 API サーバーのポッド指定ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.2 API サーバーのポッド指定ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.3 コントローラー・マネージャーのポッド指定ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.4 コントローラー・マネージャーのポッド指定ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.5 スケジューラーのポッド指定ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.6 スケジューラーのポッド指定ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.7 etcd のポッド指定ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.8 etcd のポッド指定ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.9 コンテナー・ネットワーク・インターフェース・ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象外 1 合格 IBM
1.1.10 コンテナー・ネットワーク・インターフェース・ファイルの所有権が root:root に設定されていることを確認します。 スコア対象外 1 合格 IBM
1.1.11 etcd データ・ディレクトリーのアクセス権が 700 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.12 etcd データ・ディレクトリーの所有権が etcd:etcd に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.13 admin.conf ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.14 admin.conf ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.15 scheduler.conf ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.16 scheduler.conf ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.17 controller-manager.conf ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.18 controller-manager.conf ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.19 Kubernetes PKI ディレクトリーおよびファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.20 Kubernetes PKI 証明書ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.1.21 Kubernetes PKI 鍵ファイルのアクセス権が 600 に設定されていることを確認します。 スコア対象 1 合格 IBM

1.2 API サーバー

セクション 1.2: API サーバーのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
1.2.1 --anonymous-auth 引数が false に設定されていることを確認します。 スコア対象外 1 不合格 IBM
1.2.2 --basic-auth-file 引数が設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.3 --token-auth-file パラメーターが設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.4 --kubelet-https 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.5 --kubelet-client-certificate 引数と --kubelet-client-key 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.6 --kubelet-certificate-authority 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.7 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.8 --authorization-mode 引数に Node が含まれていることを確認してください。 スコア対象 1 合格 IBM
1.2.9 引数 --authorization-mode にRBACが含まれていることを確認する。 スコア対象 1 合格 IBM
1.2.10 アドミッション制御プラグインが EventRateLimit に設定されていることを確認します。 スコア対象外 1 不合格 IBM
1.2.11 アドミッション制御プラグインが AlwaysAdmit に設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.12 アドミッション制御プラグインが AlwaysPullImages に設定されていることを確認します。 スコア対象外 1 不合格 IBM
1.2.13 SecurityContextDeny が使用されていない場合は、アドミッション制御プラグイン PodSecurityPolicy が設定されていることを確認します。 スコア対象外 1 成功 IBM
1.2.14 アドミッション制御プラグインが ServiceAccount に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.15 アドミッション制御プラグインが NamespaceLifecycle に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.16 アドミッション制御プラグインが PodSecurityPolicy に設定されていることを確認します。 スコア対象 1 成功 IBM
1.2.17 アドミッション制御プラグインが NodeRestriction に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.18 --insecure-bind-address 引数が設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.19 --insecure-port 引数が 0 に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.20 --secure-port 引数が 0 に設定されていないことを確認します。 スコア対象 1 合格 IBM
1.2.21 --profiling 引数が false に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.22 --audit-log-path 引数が設定されていることを確認します。 スコア対象 1 不合格 共有
1.2.23 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認します。 スコア対象 1 不合格 共有
1.2.24 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認します。 スコア対象 1 不合格 共有
1.2.25 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認します。 スコア対象 1 不合格 共有
1.2.26 --request-timeout 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.27 --service-account-lookup 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.28 --service-account-key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.29 --etcd-certfile 引数と --etcd-keyfile 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.30 --tls-cert-file 引数と --tls-private-key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.31 --client-ca-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.32 --etcd-cafile 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.2.33 --encryption-provider-config 引数が適切な値に設定されていることを確認します。 スコア対象 1 不合格 共有
1.2.34 暗号化プロバイダーが適切に構成されていることを確認します。 スコア対象 1 不合格 共有
1.2.35 API サーバーで強力な暗号方式のみが使用されていることを確認します。 スコア対象外 1 合格 IBM

1.3 コントローラー・マネージャー

セクション 1.3: コントローラー・マネージャーのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
1.3.1 --terminated-pod-gc-threshold 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.3.2 --profiling 引数が false に設定されていることを確認します。 スコア対象 1 合格 IBM
1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
1.3.4 --service-account-private-key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.3.5 --root-ca-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認します。 スコア対象 2 不合格 IBM
1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認します。 スコア対象 1 不合格 IBM

1.4 スケジューラー

セクション 1.4: スケジューラーのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
1.4.1 --profiling 引数が false に設定されていることを確認します。 スコア対象 1 合格 IBM
1.4.2 --bind-address 引数が 127.0.0.1 に設定されていることを確認します。 スコア対象 1 不合格 IBM

2 Etcd ノードの構成

セクション 2 etcd ノード構成のベンチマーク結果

推薦する。 得点は? レベル 結果 責任
2.1 --cert-file 引数と --key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
2.2 --client-cert-auth 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
2.3 --auto-tls 引数が true に設定されていないことを確認します。 スコア対象 1 合格 IBM
2.4 --peer-cert-file 引数と --peer-key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
2.5 --peer-client-cert-auth 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
2.6 --peer-auto-tls 引数が true に設定されていないことを確認します。 スコア対象 1 合格 IBM
2.7 etcd に対して固有の認証局が使用されていることを確認します。 スコア対象外 2 合格 IBM

3 コントロール・プレーンの構成

3.1 認証および許可

セクション 3.1: 認証と許可のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
3.1.1 クライアント証明書認証をユーザーに使用してはいけません。 スコア対象外 2 合格 共有

3.2 ロギング

セクション 3.2: ロギングのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
3.2.1 最小限の監査ポリシーが作成されていることを確認します。 スコア対象 1 不合格 共有
3.2.2 監査ポリシーが主要なセキュリティー上の問題をカバーしていることを確認します。 スコア対象外 2 不合格 共有

4 ワーカー・ノードのセキュリティー構成

4.1 ワーカー・ノードの構成ファイル

セクション 4.1: ワーカー・ノード構成ファイルのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
4.1.1 kubelet サービス・ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.2 kubelet サービス・ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.3 プロキシーの kubeconfig ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.4 プロキシーの kubeconfig ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.5 kubelet.conf ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.6 kubelet.conf ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.7 認証局ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.8 クライアント認証局ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.9 kubelet 構成ファイルのアクセス権が 644 またはこれより制限が厳しい値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.1.10 kubelet 構成ファイルの所有権が root:root に設定されていることを確認します。 スコア対象 1 合格 IBM

4.2 Kubelet

セクション 4.2: Kubelet のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
4.2.1 --anonymous-auth 引数が false に設定されていることを確認します。 スコア対象 1 合格 IBM
4.2.2 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認します。 スコア対象 1 合格 IBM
4.2.3 --client-ca-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.2.4 --read-only-port 引数が 0 に設定されていることを確認します。 スコア対象 1 合格 IBM
4.2.5 --streaming-connection-idle-timeout 引数が 0 に設定されていないことを確認します。 スコア対象 1 合格 IBM
4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認します。 スコア対象 1 不合格 IBM
4.2.7 --make-iptables-util-chains 引数が true に設定されていることを確認します。 スコア対象 1 合格 IBM
4.2.8 --hostname-override 引数が設定されていないことを確認します。 スコア対象外 1 不合格 IBM
4.2.9 --event-qps0 に設定されているか、適切なイベント・キャプチャーが実現されるレベルに設定されていることを確認します。 スコア対象外 2 合格 IBM
4.2.10 --tls-cert-file 引数と --tls-private-key-file 引数が適切な値に設定されていることを確認します。 スコア対象 1 合格 IBM
4.2.11 --rotate-certificates 引数が false に設定されていないことを確認します。 スコア対象 1 成功 IBM
4.2.12 RotateKubeletServerCertificate 引数が true に設定されていることを確認します。 スコア対象 1 不合格 IBM
4.2.13 Kubelet で強力な暗号方式のみが使用されていることを確認します。 スコア対象外 1 合格 IBM

5 Kubernetes ポリシー

5.1 RBAC およびサービス・アカウント

セクション 5.1: RBAC およびサービス・アカウントのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.1.1 cluster-adminロールは必要な場合にのみ使用するようにしてください。 スコア対象外 1 合格 共有
5.1.2 シークレットへのアクセスを最小限に抑えます。 スコア対象外 1 不合格 共有
5.1.3 Roles および ClusterRoles でワイルドカードの使用を最小限に抑えます。 スコア対象外 1 不合格 共有
5.1.4 ポッドを作成するためのアクセスを最小限に抑えます。 スコア対象外 1 合格 共有
5.1.5 デフォルトのサービス・アカウントが積極的に使用されないようにします。 スコア対象 1 不合格 共有
5.1.6 サービス・アカウント・トークンが必要な場所のみにマウントされていることを確認します。 スコア対象外 1 不合格 共有

5.2 ポッド・セキュリティー・ポリシー

セクション 5.2: ポッド・セキュリティー・ポリシーのベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.2.1 特権コンテナーのアドミッションを最小限に抑えます。 スコア対象外 1 成功 共有
5.2.2 ホスト・プロセス ID の名前空間を共有することを希望しているコンテナーのアドミッションを最小限に抑えます。 スコア対象 1 成功 共有
5.2.3 ホスト IPC の名前空間を共有することを希望しているコンテナーのアドミッションを最小限に抑えます。 スコア対象 1 成功 共有
5.2.4 ホスト・ネットワークの名前空間を共有することを希望しているコンテナーのアドミッションを最小限に抑えます。 スコア対象 1 成功 共有
5.2.5 allowPrivilegeEscalation が設定されたコンテナーのアドミッションを最小限に抑えます。 スコア対象 1 成功 共有
5.2.6 ルート・コンテナーのアドミッションを最小限に抑えます。 スコア対象外 2 成功 共有
5.2.7 NET_RAW機能でコンテナの入場を最小限に抑える。 スコア対象外 1 成功 共有
5.2.8 追加機能を持つコンテナーのアドミッションを最小限に抑えます。 スコア対象外 1 成功 共有
5.2.9 機能が割り当てられたコンテナーのアドミッションを最小限に抑えます。 スコア対象外 2 成功 共有

5.3 ネットワーク・ポリシーおよび CNI

セクション 5.3: ネットワーク・ポリシーと CNI のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.3.1 使用中の CNI がネットワーク・ポリシーをサポートしていることを確認します。 スコア対象外 1 合格 IBM
5.3.2 すべての名前空間にネットワーク・ポリシーが設定されていることを確認します。 スコア対象 2 不合格 共有

5.4 シークレット管理

セクション 5.4: シークレット管理のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.4.1 シークレットを環境変数として使用する代わりに、シークレットをファイルとして使用します。 スコア対象外 1 合格 共有
5.4.2 外部シークレット・ストレージを検討します。 スコア対象外 2 不合格 共有

5.5 拡張可能アドミッション制御

セクション 5.5: 拡張可能なアドミッション制御のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.5.1 ImagePolicyWebhook アドミッション・コントローラーを使用して Image Provenance を構成します。 スコア対象外 2 不合格 共有

5.7 一般方針

セクション 5.7 一般政策のベンチマーク結果
セクション 推薦する。 得点は? レベル 結果 責任
5.7.1 名前空間を使用してリソース間の管理境界を作成します。 スコア対象外 1 合格 共有
5.7.2 ポッドの定義で、 seccomp プロファイルが docker/default に設定されていることを確認してください。 スコア対象外 2 不合格 共有
5.7.3 ポッドとコンテナーにセキュリティー・コンテキストを適用します。 スコア対象外 2 不合格 共有
5.7.4 デフォルトの名前空間は使用しないでください。 スコア対象 2 不合格 共有

IBM 修正処置と説明

セクション IBM 改善策と説明 ベンチマーク結果
セクション 改善と説明
1.2.1 IBM はクラスタ保護にRBACを利用しているが、匿名でのディスカバリを可能にしており、 CIS Kubernetes Benchmark あたりでは妥当と考えられている。
1.2.10 IBM を有効にしない。 EventRateLimit アドミッションコントローラーは、 Kubernetes アルファ機能なので、有効にしない。
1.2.12 IBM を有効にしない。 AlwaysPullImages コンテナの _imagePullPolicy_ を上書きし、パフォーマンスに影響を与える可能性があるためである。
1.2.13 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
1.2.16 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
1.2.22 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
1.2.23 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
1.2.24 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
1.2.25 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
1.2.33 IBM オプションで、 Kubernetes 鍵管理サービス(KMS)プロバイダーを有効にする ことができる。
1.2.34 IBM オプションで、 Kubernetes 鍵管理サービス(KMS)プロバイダーを有効にする ことができる。
1.3.6 IBM はワーカーノードのリロードや更新ごとに証明書をローテーションします。
1.3.7 Controller Manager の IP アドレスを 127.0.0.1 に制限することはできません。 IBM コンフィギュレーションは、それに対してヘルスチェックを実行するために必要である。 顧客には公開も非公開もされない。
1.4.2 スケジューラのIPアドレスは、 127.0.0.1 に制限することはできません。 IBM コンフィギュレーションは、それに対してヘルスチェックを実行するために必要である。 顧客には公開も非公開もされない。
3.2.1 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
3.2.2 IBM オプションで、 Kubernetes APIサーバーの監査を有効に できる。
4.2.6 IBM は、顧客が カーネル・パラメータを調整 できるように、カーネルのデフォルトを保護しない。
4.2.8 IBM は、ホスト名がインフラストラクチャによって発行された名前と一致することを保証する。
4.2.11 IBM はワーカーノードのリロードや更新ごとに証明書をローテーションします。
4.2.12 IBM はワーカーノードのリロードや更新ごとに証明書をローテーションします。
5.1.2 IBM は、 Kubernetes シークレットアクセスがさらに制限される可能性のあるシステムコンポーネントをいくつか配備している。
5.1.3 IBM は、 Kubernetes リソースアクセスがさらに制限される可能性のあるシステムコンポーネントをいくつか配備している。
5.1.5 IBM [_automountServiceAccountToken: false_]() を各デフォルト・サービス・https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server{: external} アカウント設定しない。
5.1.6 IBM [_automountServiceAccountToken: false_]()。https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
5.2.1 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.2 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.3 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.4 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.5 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.6 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.7 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.8 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.2.9 IBM は、オプションで ポッドセキュリティ入学 を設定できる。これは、サポートされていない Kubernetes ポッドセキュリティポリシー に似ている。
5.3.2 IBM には、 デフォルトの Calico と Kubernetes のネットワーク・ポリシーが定義されて おり、 オプションでネットワーク・ポリシーを追加することができる
5.4.2 IBM オプションで Secrets Manager
5.5.1 IBM オプションで 画像セキュリティの強制を有効に できる。
5.7.2 IBM は、 seccomp プロファイルですべてのポッドに注釈をつけない。
5.7.3 IBM は、 ポッドやコンテナ securityContext を設定しないいくつかのシステムコンポーネントをデプロイする。
5.7.4 IBM は、 Kubernetes のリソースをデフォルトの名前に配備する。