4.17 CIS Kubernetes 基準

網路安全中心 ( CIS ) 發布了 CIS Kubernetes基準,作為更安全地配置Kubernetes的具體步驟框架,並採用與各種行業法規相稱的標準。 本文檔包含執行Red Hat OpenShift on IBM Cloud版本4.17的叢集的1.5版CIS Kubernetes基準測試結果。 如需更多資訊或協助理解基準,請參閱 使用基準

1 主節點安全配置

1.1主節點設定檔

1.1 主節點組態檔案基準結果
區段 建議 得分? 層次 結果 責任
1.1.1 確保 API 伺服器 Pod 規範檔案權限設定為 644 或更具限制性。 得分 1 通過 IBM
1.1.2 確保 API 伺服器 pod 規範檔案所有權設定為 root:root 得分 1 通過 IBM
1.1.3 確保控制器管理員 Pod 規範檔案權限設定為 644 或更具限制性。 得分 1 通過 IBM
1.1.4 確保控制器管理器 pod 規範文件所有權設定為 root:root 得分 1 通過 IBM
1.1.5 確保調度程序 Pod 規範檔案權限設定為 644 或更具限制性。 得分 1 通過 IBM
1.1.6 確保調度程序 Pod 規範文件所有權設定為 root:root 得分 1 通過 IBM
1.1.7 確保將etcd pod 規範檔案權限設定為 644 或更具限制性。 得分 1 通過 IBM
1.1.8 確保 etcd pod 規格檔案的所有權設定為 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 如果不使用 PodSecurityPolicy,請確認已設定存取控制外掛程式 SecurityContextDeny 未得分 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 Worker節點安全配置( RHEL_9_64 )

4.1 Worker節點設定檔

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庫貝萊特

第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-qps 參數設定為 0 或確保適當事件捕獲的等級。 未得分 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

4 Worker節點安全配置(RHCOS)

4.1 Worker節點設定檔

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庫貝萊特

第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-qps 參數設定為 0 或確保適當事件捕獲的等級。 未得分 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 RolesClusterRoles 中盡量減少通配符的使用。 未得分 1 失敗 共用
5.1.4 最小化創建 Pod 的存取。 未得分 1 通過 共用
5.1.5 確保預設服務帳戶未被主動使用。 得分 1 失敗 共用
5.1.6 確保僅在必要時安裝服務帳戶令牌。 未得分 1 失敗 共用

5.2 Pod 安全政策

5.2 Pod 安全政策基準結果
區段 建議 得分? 層次 結果 責任
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 准入控制器配置影像來源。 未得分 2 失敗 共用

5.7一般政策

5.7 一般政策基準結果
區段 建議 得分? 層次 結果 責任
5.7.1 使用命名空間在資源之間建立管理邊界。 未得分 1 通過 共用
5.7.2 確保 seccomp 設定檔在 Pod 定義中設定為 docker/default。 未得分 2 失敗 共用
5.7.3 將安全性上下文套用到您的 Pod 和容器。 未得分 2 失敗 共用
5.7.4 不應使用預設名稱空間。 得分 2 通過 共用

IBM補救措施與解釋

IBM 修正和解釋基準結果
區段 補救與說明
1.2.1 Red Hat OpenShift on IBM Cloud利用 RBAC 進行叢集保護,但允許匿名發現,根據 CIS Kubernetes Benchmark認為這是合理的。
1.2.10 Red Hat OpenShift on IBM Cloud不會啟用 EventRateLimit准入控制器,因為它是Kubernetes alpha 功能。
1.2.12 Red Hat OpenShift on IBM Cloud不會啟用 AlwaysPullImages准入控制器,因為它會覆蓋容器的 imagePullPolicy 並可能影響效能。
1.2.13 Red Hat OpenShift on IBM Cloud支援 OpenShift安全上下文約束Kubernetes pod 安全准入,這與已棄用的 Kubernetes pod 安全性原則類似。
1.2.16 Red Hat OpenShift on IBM Cloud支援 OpenShift安全上下文約束Kubernetes pod 安全准入,這與已棄用的 Kubernetes pod 安全性原則類似。
1.2.22 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
1.2.23 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
1.2.24 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
1.2.25 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
1.2.33 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes金鑰管理服務(KMS)提供者
1.2.34 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes金鑰管理服務(KMS)提供者
1.3.7 控制器管理器 IP 位址不能限制為 127.0.0.1。 需要 IBM 設定,以便針對它執行健康檢查。 它不會公開或私下暴露給客戶。
1.4.2 排程器 IP 位址不能限制為 127.0.0.1。 需要 IBM 設定,以便針對它執行健康檢查。 它不會公開或私下暴露給客戶。
3.2.1 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
3.2.2 Red Hat OpenShift on IBM Cloud可以選擇 啟用Kubernetes API 伺服器審核
4.2.6 Red Hat OpenShift on IBM Cloud不保護核心預設值以允許客戶調整核心參數。
4.2.8 Red Hat OpenShift on IBM Cloud確保主機名稱與基礎設施發布的名稱相符。
5.1.2 Red Hat OpenShift on IBM Cloud部署了一些系統元件,這些元件的Kubernetes秘密存取可能會受到進一步限制。
5.1.3 Red Hat OpenShift on IBM Cloud部署了一些可能進一步限制其Kubernetes資源存取的系統元件。
5.1.5 Red Hat OpenShift on IBM Cloud 不為每個預設服務帳戶設定 automountServiceAccountToken: false 為每個預設服務帳戶。
5.1.6 Red Hat OpenShift on IBM Cloud 部署一些系統元件,這些元件可能會設定 automountServiceAccountToken: false.
5.2.1 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.2 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.3 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.4 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.5 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.6 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.7 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.8 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.2.9 Red Hat OpenShift on IBM Cloud可以選擇設定 OpenShift安全性情境約束Kubernetes pod 安全性存取,這與已棄用的 Kubernetes pod 安全性原則類似。
5.3.2 Red Hat OpenShift on IBM Cloud定義了一組預設的Calico網路策略,並且 可以選擇新增其他網路策略
5.4.1 Red Hat OpenShift on IBM Cloud部署了一些系統元件,這些元件可能更喜歡將機密用作文件而不是將機密用作環境變數。
5.4.2 Red Hat OpenShift on IBM Cloud可以選擇 啟用Secrets Manager服務
5.5.1 Red Hat OpenShift on IBM Cloud可以選擇 啟用影像安全強制
5.7.2 Red Hat OpenShift on IBM Cloud不會使用 seccomp 設定檔註解所有 pod。
5.7.3 Red Hat OpenShift on IBM Cloud部署一些未設定 pod 或容器 securityContext系統元件。