4.16 CIS Kubernetes 基準

網路安全中心 ( CIS ) 發布了 CIS Kubernetes基準,作為更安全地配置Kubernetes的具體步驟框架,並採用與各種行業法規相稱的標準。 本文檔包含執行Red Hat OpenShift on IBM Cloud版本4.16的叢集的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 確保將 scheduler pod specification 檔案的所有權設定為 root:root 得分 1 通過 IBM
1.1.7 確保 etcd pod 規格檔案權限設定為 644 或更嚴格的權限。 得分 1 通過 IBM
1.1.8 確保 etcd pod 規格檔案的所有權設定為 root:root 得分 1 通過 IBM
1.1.9 確保 Container Network Interface 檔案權限設定為 644 或更具限制性。 未得分 1 通過 IBM
1.1.10 確保 Container Network Interface 檔案擁有權設為 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節點安全配置( REDHAT_8_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 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-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 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-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 確保僅在需要時使用群集管理員角色。 未得分 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 utilizes RBAC for cluster protection, but allows anonymous discovery, which is considered reasonable per CIS Kubernetes 基準.
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 supports OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
1.2.16 Red Hat OpenShift on IBM Cloud supports OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
1.2.22 Red Hat OpenShift on IBM Cloud can optionally 啟用 Kubernetes API 伺服器稽核.
1.2.23 Red Hat OpenShift on IBM Cloud can optionally 啟用 Kubernetes API 伺服器稽核.
1.2.24 Red Hat OpenShift on IBM Cloud can optionally 啟用 Kubernetes API 伺服器稽核.
1.2.25 Red Hat OpenShift on IBM Cloud can optionally 啟用 Kubernetes API 伺服器稽核.
1.2.33 Red Hat OpenShift on IBM Cloud can optionally 啟用 Kubernetes 金鑰管理服務(KMS)提供者.
1.2.34 Red Hat OpenShift on IBM Cloud can optionally 啟用 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 can optionally 啟用 Kubernetes API 伺服器稽核.
3.2.2 Red Hat OpenShift on IBM Cloud can optionally 啟用 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 can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.2 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.3 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.4 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.5 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.6 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.7 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.8 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.2.9 Red Hat OpenShift on IBM Cloud can optionally configure OpenShift 安全上下文限制 and Kubernetes pod 安全認證 which are similar to the deprecated Kubernetes pod 安全政策.
5.3.2 Red Hat OpenShift on IBM Cloud has a set of 已定義的預設 Calico 網路政策 and 可選擇新增額外的網路政策.
5.4.1 Red Hat OpenShift on IBM Cloud 部署某些系統元件,這些元件可能會偏好使用秘密作為檔案,而非秘密作為環境變數。
5.4.2 Red Hat OpenShift on IBM Cloud can optionally 啟用 Secrets Manager 服務.
5.5.1 Red Hat OpenShift on IBM Cloud can optionally 啟用影像安全強制執行.
5.7.2 Red Hat OpenShift on IBM Cloud 不會用 seccomp profile 註釋所有 pod。
5.7.3 Red Hat OpenShift on IBM Cloud 部署某些不設定 的系統元件。荚或容器 securityContext