このドキュメントでは、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.15.0 | 1.27.1 | 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 推奨事項のステータスを表します。
ステータス | 説明 |
---|---|
Pass | ベンチマークの推奨事項に準拠している。 |
失敗 | ベンチマークの推奨事項に準拠していない。 |
同等の統制 | ベンチマークの推奨事項を厳密には準拠していないが、同等のセキュリティ コントロールを提供する別のメカニズムが 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 仕様ファイルの権限が、600 またはそれより制限された値に設定されている確認する(自動) |
L1 | 同等の統制 |
1.1.2 | API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.3 | コントローラ マネージャーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.4 | コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.5 | スケジューラの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.6 | スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.7 | etcd の Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.8 | etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.9 | Container Network Interface のファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
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 ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.14 | admin.conf ファイルの所有者が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.15 | scheduler.conf ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.16 | Scheduler.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.17 | controller-manager.conf ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.18 | controller-manager.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.19 | Kubernetes PKI ディレクトリとファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.20 | Kubernetes PKI 証明書ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
L1 | 合格 |
1.1.21 | Kubernetes PKI 鍵ファイルの権限が 600 に設定されていることを確認する(手動) |
L1 | 合格 |
1.2 | API サーバー | ||
1.2.1 | --anonymous-auth 引数が false に設定されていることを確認する(手動) |
L1 | Pass |
1.2.2 | --token-auth-file パラメータが設定されていないことを確認する(自動) |
L1 | 合格 |
1.2.3 | --DenyServiceExternalIPs が設定されていることを確認する(手動) |
L1 | 警告 |
1.2.4 | --kubelet-client-certificate 引数と --kubelet-client-key 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.5 | --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.6 | --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) |
L1 | 合格 |
1.2.7 | --authorization-mode 引数にノードが含まれていることを確認する(自動) |
L1 | 合格 |
1.2.8 | --authorization-mode 引数に RBAC が含まれていることを確認する(自動) |
L1 | 合格 |
1.2.9 | アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) | L1 | 警告 |
1.2.10 | アドミッション コントロール プラグインの AlwaysAdmit が設定されていないことを確認する(自動) | L1 | Pass |
1.2.11 | アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) | L1 | 環境に依存 |
1.2.12 | PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) | L1 | 同等の統制 |
1.2.13 | アドミッション コントロール プラグインの ServiceAccount が設定されていることを確認する(自動) | L1 | Pass |
1.2.14 | アドミッション コントロール プラグインの NamespaceLifecycle が設定されていることを確認する(自動) | L1 | 合格 |
1.2.15 | アドミッション コントロール プラグインの NodeRestriction が設定されていることを確認する(自動) | L1 | 合格 |
1.2.16 | --secure-port 引数が 0 に設定されていないことを確認する - この推奨事項は廃止されており、コンセンサス プロセスに沿って削除されます(手動) |
L1 | Pass |
1.2.17 | --profiling 引数が false に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.18 | --audit-log-path 引数が設定されていることを確認する(自動) |
L1 | 合格 |
1.2.19 | --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.2.20 | --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.21 | --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) |
L1 | Pass |
1.2.22 | --request-timeout 引数が適切に設定されていることを確認する(手動) |
L1 | Pass |
1.2.23 | --service-account-lookup 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
1.2.24 | --service-account-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
1.2.25 | --etcd-certfile 引数と --etcd-keyfile 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
1.2.26 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.27 | --client-ca-file 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.28 | --etcd-cafile 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.29 | --encryption-provider-config 引数が適切に設定されていることを確認する(手動) |
L1 | Pass |
1.2.30 | 暗号化プロバイダが適切に構成されていることを確認する(手動) | L1 | 合格 |
1.2.31 | API サーバーが強力な暗号のみを使用していることを確認する(手動) | L1 | 合格 |
1.3 | コントローラ マネージャー | ||
1.3.1 | --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する(手動) |
L1 | 合格 |
1.3.2 | --profiling 引数が false に設定されていることを確認する(自動) |
L1 | Pass |
1.3.3 | --use-service-account-credentials 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
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 | Pass |
1.4.2 | --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) |
L1 | 合格 |
2 | Etcd ノードの構成 | ||
2 | Etcd ノードの構成 | ||
2.1 | --cert-file 引数と --key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
2.2 | --client-cert-auth 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
2.3 | --auto-tls 引数が true に設定されていないことを確認する(自動) |
L1 | 合格 |
2.4 | --peer-cert-file 引数と --peer-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
2.5 | --peer-client-cert-auth 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
2.6 | --peer-auto-tls 引数が true に設定されていないことを確認する(自動) |
L1 | Pass |
2.7 | 固有の認証局が etcd に使用されていることを確認する(手動) | L2 | 合格 |
3 | コントロール プレーンの設定 | ||
3.1 | 認証と認可 | ||
3.1.1 | クライアント証明書の認証をユーザーに使用していないことを確認する(手動) | L2 | 合格 |
3.1.2 | サービス アカウント トークン認証をユーザーに使用しない(手動) | L1 | 警告 |
3.1.3 | ブートストラップ トークン認証をユーザーに使用しない(手動) | L1 | 警告 |
3.2 | ロギング | ||
3.2.1 | 最小限の監査ポリシーが作成されていることを確認する(手動) | L1 | 合格 |
3.2.2 | 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) | L2 | 同等の統制 |
4 | ワーカーノードのセキュリティ構成 | ||
4.1 | ワーカーノード構成ファイル | ||
4.1.1 | kubelet サービス ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 不合格 |
4.1.2 | kubelet サービス ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.3 | プロキシ kubeconfig ファイルが存在する場合は、権限が 600 またはそれより制限された値設定されていることを確認する(手動) |
L1 | 合格 |
4.1.4 | プロキシの kubeconfig ファイルが存在する場合、所有権が root:root に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.5 | --kubeconfig kubelet.conf ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.6 | --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.7 | 認証局ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.8 | クライアント認証局ファイルのオーナー権限が root:root に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.9 | kubelet 構成の . yaml 構成ファイルが使用されている場合は、600 またはそれより制限された権限に設定されていることを検証する(手動) |
L1 | 警告 |
4.1.10 | kubelet 構成の . yaml 構成ファイルが使用されている場合、ファイルの所有権が 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 | --make-iptables-util-chains 引数が true に設定されていることを確認する(自動) |
L1 | 合格 |
4.2.7 | --hostname-override 引数が設定されていないことを確認する(手動) |
L1 | 合格 |
4.2.8 | eventRecordQPS 引数が適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) | L1 | 合格 |
4.2.9 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) |
L2 | 同等の統制 |
4.2.10 | --rotate-certificates 引数が false に設定されていないことを確認する(自動) |
L1 | 合格 |
4.2.11 | RotateKubeletServerCertificate 引数が true に設定されていることを確認する(手動) | L1 | Pass |
4.2.12 | Kubelet が強力な暗号のみを使用していることを確認する(手動) | L1 | Pass |
4.2.13 | Pod PID に上限が設定されていることを確認する(手動) | L1 | 警告 |
Anthos clusters on VMware 管理クラスタの障害と同等の制御に関する説明
# | 推奨 | レベル | ステータス | 値 | 理由 |
---|---|---|---|---|---|
1.1.1 | API サーバーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されている確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの API サーバー Pod 仕様が etcd に保存されます。 |
1.1.3 | コントローラ マネージャーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのコントローラ マネージャー Pod 仕様が etcd に保存されます。 |
1.1.5 | スケジューラの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのスケジューラ Pod 仕様が etcd に保存されます。 |
1.1.7 | etcd の Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの etcd 仕様は管理クラスタの etcd に保存されます。 |
1.1.12 | etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2001:2001 |
etcd コンテナが 2001 として実行され、etcd データ ディレクトリが 2001:2001 によって所有されています。 |
1.1.16 | Scheduler.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2000:2000 |
kube-scheduler コンテナは 2000 として実行され、このファイルは 2000:2000 によって所有されます。 |
1.1.18 | controller-manager.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2002:2002 |
controller-manager コンテナは 2002 として実行され、このファイルは 2002:2002 によって所有されます。 |
1.2.3 | -- DenyServiceExternalIPs が設定されていることを確認する(手動) |
L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
1.2.9 | アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
1.2.11 | アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) | L1 | 環境に依存 | 未設定 | AlwaysPullImages アドミッション コントローラは、非協調型のマルチテナント クラスタの非公開レジストリ イメージを保護しますが、クラスタ全体で新しい Pod を作成する際にコンテナ レジストリが単一障害点となります。Anthos clusters on VMware では AlwaysPullImages アドミッション コントローラは有効になりません。クラスタ管理者がこのトレードオフを判断し、アドミッション ポリシーを実装するか判断します。 |
1.2.12 | PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) | L1 | 同等の統制 | 未設定 | PodSecurityPolicy は、1.25 の Kubernetes から削除されます。代わりに、Pod セキュリティ アドミッションが 1.23 以降、デフォルトで有効になります。 |
1.2.19 | --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 未設定 | Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。 |
3.1.2 | サービス アカウント トークン認証をユーザーに使用しない(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
3.1.3 | ブートストラップ トークン認証をユーザーに使用しない(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
3.2.2 | 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) | L2 | 同等の統制 | 未設定 | Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。 |
4.1.1 | kubelet サービス ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 失敗 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
4.1.9 | kubelet 構成の . yaml 構成ファイルが使用されている場合は、600 またはそれより制限された権限に設定されていることを検証する(手動) |
L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
4.2.4 | --read-only-port 引数が 0 に設定されていることを確認する(手動) |
L1 | 失敗 | 10255 |
一部の Anthos clusters on VMware モニタリング コンポーネントは、kubelet 読み取り専用ポートを使用して指標を取得します。 |
4.2.9 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) |
L2 | 同等の統制 | 未設定 | Anthos clusters on VMware は、--rotate-server-certificates フラグを使用して kubelet サーバー TLS を管理します。 |
4.2.13 | Pod PID に上限が設定されていることを確認する(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
Anthos clusters on VMware ユーザー クラスタのステータス
# | 推奨 | レベル | ステータス |
---|---|---|---|
1 | コントロール プレーンのセキュリティ構成 | ||
1.1 | コントロール プレーンノード構成ファイル | ||
1.1.1 | API サーバーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されている確認する(自動) |
L1 | 同等の統制 |
1.1.2 | API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.3 | コントローラ マネージャーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.4 | コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.5 | スケジューラの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.6 | スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.7 | etcd の Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.8 | etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.9 | Container Network Interface のファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
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 ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.14 | admin.conf ファイルの所有者が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.15 | scheduler.conf ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.16 | Scheduler.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.17 | controller-manager.conf ファイルの権限が、600 またはより制限されたマスク値に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.18 | controller-manager.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.1.19 | Kubernetes PKI ディレクトリとファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
1.1.20 | Kubernetes PKI 証明書ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
L1 | 合格 |
1.1.21 | Kubernetes PKI 鍵ファイルの権限が 600 に設定されていることを確認する(手動) |
L1 | 合格 |
1.2 | API サーバー | ||
1.2.1 | --anonymous-auth 引数が false に設定されていることを確認する(手動) |
L1 | Pass |
1.2.2 | --token-auth-file パラメータが設定されていないことを確認する(自動) |
L1 | 合格 |
1.2.3 | --DenyServiceExternalIPs が設定されていることを確認する(手動) |
L1 | 警告 |
1.2.4 | --kubelet-client-certificate 引数と --kubelet-client-key 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.5 | --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.6 | --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動) |
L1 | 合格 |
1.2.7 | --authorization-mode 引数にノードが含まれていることを確認する(自動) |
L1 | 合格 |
1.2.8 | --authorization-mode 引数に RBAC が含まれていることを確認する(自動) |
L1 | 合格 |
1.2.9 | アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) | L1 | 警告 |
1.2.10 | アドミッション コントロール プラグインの AlwaysAdmit が設定されていないことを確認する(自動) | L1 | Pass |
1.2.11 | アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) | L1 | 環境に依存 |
1.2.12 | PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) | L1 | 同等の統制 |
1.2.13 | アドミッション コントロール プラグインの ServiceAccount が設定されていることを確認する(自動) | L1 | Pass |
1.2.14 | アドミッション コントロール プラグインの NamespaceLifecycle が設定されていることを確認する(自動) | L1 | 合格 |
1.2.15 | アドミッション コントロール プラグインの NodeRestriction が設定されていることを確認する(自動) | L1 | 合格 |
1.2.16 | --secure-port 引数が 0 に設定されていないことを確認する - この推奨事項は廃止されており、コンセンサス プロセスに沿って削除されます(手動) |
L1 | Pass |
1.2.17 | --profiling 引数が false に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.18 | --audit-log-path 引数が設定されていることを確認する(自動) |
L1 | 合格 |
1.2.19 | --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) |
L1 | 同等の統制 |
1.2.20 | --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.21 | --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する(自動) |
L1 | Pass |
1.2.22 | --request-timeout 引数が適切に設定されていることを確認する(手動) |
L1 | Pass |
1.2.23 | --service-account-lookup 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
1.2.24 | --service-account-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
1.2.25 | --etcd-certfile 引数と --etcd-keyfile 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
1.2.26 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.27 | --client-ca-file 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.28 | --etcd-cafile 引数が適切に設定されていることを確認する(自動) |
L1 | 合格 |
1.2.29 | --encryption-provider-config 引数が適切に設定されていることを確認する(手動) |
L1 | Pass |
1.2.30 | 暗号化プロバイダが適切に構成されていることを確認する(手動) | L1 | 合格 |
1.2.31 | API サーバーが強力な暗号のみを使用していることを確認する(手動) | L1 | 合格 |
1.3 | コントローラ マネージャー | ||
1.3.1 | --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する(手動) |
L1 | 合格 |
1.3.2 | --profiling 引数が false に設定されていることを確認する(自動) |
L1 | Pass |
1.3.3 | --use-service-account-credentials 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
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 | Pass |
1.4.2 | --bind-address 引数が 127.0.0.1 に設定されていることを確認する(自動) |
L1 | 合格 |
2 | Etcd ノードの構成 | ||
2 | Etcd ノードの構成 | ||
2.1 | --cert-file 引数と --key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
2.2 | --client-cert-auth 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
2.3 | --auto-tls 引数が true に設定されていないことを確認する(自動) |
L1 | 合格 |
2.4 | --peer-cert-file 引数と --peer-key-file 引数が適切に設定されていることを確認する(自動) |
L1 | Pass |
2.5 | --peer-client-cert-auth 引数が true に設定されていることを確認する(自動) |
L1 | Pass |
2.6 | --peer-auto-tls 引数が true に設定されていないことを確認する(自動) |
L1 | Pass |
2.7 | 固有の認証局が etcd に使用されていることを確認する(手動) | L2 | 合格 |
3 | コントロール プレーンの設定 | ||
3.1 | 認証と認可 | ||
3.1.1 | クライアント証明書の認証をユーザーに使用していないことを確認する(手動) | L2 | 合格 |
3.1.2 | サービス アカウント トークン認証をユーザーに使用しない(手動) | L1 | 警告 |
3.1.3 | ブートストラップ トークン認証をユーザーに使用しない(手動) | L1 | 警告 |
3.2 | ロギング | ||
3.2.1 | 最小限の監査ポリシーが作成されていることを確認する(手動) | L1 | 合格 |
3.2.2 | 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) | L2 | 同等の統制 |
4 | ワーカーノードのセキュリティ構成 | ||
4.1 | ワーカーノード構成ファイル | ||
4.1.1 | kubelet サービス ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 不合格 |
4.1.2 | kubelet サービス ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.3 | プロキシ kubeconfig ファイルが存在する場合は、権限が 600 またはそれより制限された値設定されていることを確認する(手動) |
L1 | 合格 |
4.1.4 | プロキシの kubeconfig ファイルが存在する場合、所有権が root:root に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.5 | --kubeconfig kubelet.conf ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.6 | --kubeconfig kubelet.conf ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 合格 |
4.1.7 | 認証局ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.8 | クライアント認証局ファイルのオーナー権限が root:root に設定されていることを確認する(手動) |
L1 | 合格 |
4.1.9 | kubelet 構成の . yaml 構成ファイルが使用されている場合は、600 またはそれより制限された権限に設定されていることを検証する(手動) |
L1 | 警告 |
4.1.10 | kubelet 構成の . yaml 構成ファイルが使用されている場合、ファイルの所有権が 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 | --make-iptables-util-chains 引数が true に設定されていることを確認する(自動) |
L1 | 合格 |
4.2.7 | --hostname-override 引数が設定されていないことを確認する(手動) |
L1 | 合格 |
4.2.8 | eventRecordQPS 引数が適切なイベント キャプチャを維持するレベルに設定されていることを確認する(手動) | L1 | 合格 |
4.2.9 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) |
L2 | 同等の統制 |
4.2.10 | --rotate-certificates 引数が false に設定されていないことを確認する(自動) |
L1 | 合格 |
4.2.11 | RotateKubeletServerCertificate 引数が true に設定されていることを確認する(手動) | L1 | Pass |
4.2.12 | Kubelet が強力な暗号のみを使用していることを確認する(手動) | L1 | Pass |
4.2.13 | Pod PID に上限が設定されていることを確認する(手動) | L1 | 警告 |
Anthos clusters on VMware ユーザー クラスタの障害と同等の制御に関する説明
# | 推奨 | レベル | ステータス | 値 | 理由 |
---|---|---|---|---|---|
1.1.1 | API サーバーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されている確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの API サーバー Pod 仕様が etcd に保存されます。 |
1.1.2 | API サーバーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの API サーバー Pod 仕様が etcd に保存されます。 |
1.1.3 | コントローラ マネージャーの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのコントローラ マネージャー Pod 仕様が etcd に保存されます。 |
1.1.4 | コントローラ マネージャーの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのコントローラ マネージャー Pod 仕様が etcd に保存されます。 |
1.1.5 | スケジューラの Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのスケジューラ Pod 仕様が etcd に保存されます。 |
1.1.6 | スケジューラの Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタのスケジューラ Pod 仕様が etcd に保存されます。 |
1.1.7 | etcd の Pod 仕様ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの etcd 仕様は管理クラスタの etcd に保存されます。 |
1.1.8 | etcd の Pod 仕様ファイルのオーナー権限が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 該当なし | kubeception モードでは、ユーザー クラスタの etcd 仕様は管理クラスタの etcd に保存されます。 |
1.1.11 | etcd データ ディレクトリの権限が、700 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 777 |
etcd データ ディレクトリは、vshpere 外部ストレージを介してマウントされます。 |
1.1.12 | etcd データ ディレクトリのオーナー権限が etcd:etcd に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2001:2001 |
etcd コンテナが 2001 として実行され、etcd データ ディレクトリが 2001:2001 によって所有されています。 |
1.1.16 | Scheduler.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2000:2000 |
kube-scheduler コンテナは 2000 として実行され、このファイルは 2000:2000 によって所有されます。 |
1.1.18 | controller-manager.conf ファイルの所有権が root:root に設定されていることを確認する(自動) |
L1 | 同等の統制 | 2002:2002 |
controller-manager コンテナは 2002 として実行され、このファイルは 2002:2002 によって所有されます。 |
1.2.3 | -- DenyServiceExternalIPs が設定されていることを確認する(手動) |
L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
1.2.9 | アドミッション コントロール プラグインの EventRateLimit が設定されていることを確認する(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
1.2.11 | アドミッション コントロール プラグインの AlwaysPullImages が設定されていることを確認する(手動) | L1 | 環境に依存 | 未設定 | AlwaysPullImages アドミッション コントローラは、非協調型のマルチテナント クラスタの非公開レジストリ イメージを保護しますが、クラスタ全体で新しい Pod を作成する際にコンテナ レジストリが単一障害点となります。Anthos clusters on VMware では AlwaysPullImages アドミッション コントローラは有効になりません。クラスタ管理者がこのトレードオフを判断し、アドミッション ポリシーを実装するか判断します。 |
1.2.12 | PodSecurityPolicy が使用されていない場合は、アドミッション コントロール プラグインの SecurityContextDeny が設定されていることを確認する(手動) | L1 | 同等の統制 | 未設定 | PodSecurityPolicy は、1.25 の Kubernetes から削除されます。代わりに、Pod セキュリティ アドミッションが 1.23 以降、デフォルトで有効になります。 |
1.2.19 | --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する(自動) |
L1 | 同等の統制 | 未設定 | Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。 |
3.1.2 | サービス アカウント トークン認証をユーザーに使用しない(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
3.1.3 | ブートストラップ トークン認証をユーザーに使用しない(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
3.2.2 | 監査ポリシーの対象に重要なセキュリティ問題が含まれていることを確認する(手動) | L2 | 同等の統制 | 未設定 | Anthos clusters on VMware は監査ログをキャプチャしますが、監査にはこれらのフラグを使用しません。詳細については、Anthos clusters on VMware 監査ポリシーをご覧ください。 |
4.1.1 | kubelet サービス ファイルの権限が、600 またはそれより制限された値に設定されていることを確認する(自動) |
L1 | 失敗 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
4.1.9 | kubelet 構成の . yaml 構成ファイルが使用されている場合は、600 またはそれより制限された権限に設定されていることを検証する(手動) |
L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
4.2.4 | --read-only-port 引数が 0 に設定されていることを確認する(手動) |
L1 | 失敗 | 10255 |
一部の Anthos clusters on VMware モニタリング コンポーネントは、kubelet 読み取り専用ポートを使用して指標を取得します。 |
4.2.9 | --tls-cert-file 引数と --tls-private-key-file 引数が適切に設定されていることを確認する(手動) |
L2 | 同等の統制 | 未設定 | Anthos clusters on VMware は、--rotate-server-certificates フラグを使用して kubelet サーバー TLS を管理します。 |
4.2.13 | Pod PID に上限が設定されていることを確認する(手動) | L1 | 警告 | 未設定 | Anthos clusters on VMware は、Kubernetes のアルファ版機能である Event Rate Limit アドミッション コントローラをサポートしていません。 |
監査ベンチマーク
各推奨事項を監査するための具体的な手順は、関連する CIS ベンチマークの一環として利用できます。ただし、これらのチェックの一部を自動化して、お客様の環境でのこれらのコントロールの検証を簡素化することもできます。これには次のツールが役立ちます。
CIS Kubernetes Benchmark の自動監査
オープンソース ツール kube-bench
を使用して、CIS Kubernetes Benchmark に対してクラスタ構成をテストできます。
適切なバージョンを指定してください。たとえば、
kube-bench node --benchmark cis-1.6