4.18 CIS Kubernetes 基準

網際網路安全中心 ( CIS ) 發佈了 CIS Kubernetes Benchmark,作為具體步驟的架構,以更安全地配置 Kubernetes,並符合各種產業法規的標準。 本文件包含執行 Red Hat OpenShift on IBM Cloud 版本 4.18 的群集的 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 工作節點安全設定 ( RHEL_9_64 )

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-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 工作節點安全設定 (RHCOS)

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-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 利用 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 可選擇 啟用 API 伺服器稽核 Kubernetes
1.2.23 Red Hat OpenShift on IBM Cloud 可選擇 啟用 API 伺服器稽核 Kubernetes
1.2.24 Red Hat OpenShift on IBM Cloud 可選擇 啟用 API 伺服器稽核 Kubernetes
1.2.25 Red Hat OpenShift on IBM Cloud 可選擇 啟用 API 伺服器稽核 Kubernetes
1.2.33 Red Hat OpenShift on IBM Cloud 可選擇 啟用 金鑰管理服務(KMS)提供者 Kubernetes
1.2.34 Red Hat OpenShift on IBM Cloud 可選擇 啟用 金鑰管理服務(KMS)提供者 Kubernetes
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 可選擇 啟用 API 伺服器稽核 Kubernetes
3.2.2 Red Hat OpenShift on IBM Cloud 可選擇 啟用 API 伺服器稽核 Kubernetes
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 profile 註釋所有 pod。
5.7.3 Red Hat OpenShift on IBM Cloud 部署某些不設定 的系統元件。荚或容器 securityContext