KubernetesCIS1.34 基準

網路安全中心( CIS CIS)發布的 KubernetesCIS 《基準》作為具體步驟的框架,旨在協助配置 Kubernetes 更安全的系統,並採用符合各類產業法規的標準。 本文件包含針對運行 Kubernetes 版本 的叢集所進行的版本 KubernetesCIS1.51.34 基準測試結果。 如需更多資訊或協助理解基準測試,請參閱 《使用基準測試》

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 請確保 pod 規格 etcd 檔的權限設定為 505 644 或更嚴格的設定。 得分 1 通過 IBM
1.1.8 請確保 pod 規格 etcd 檔的所有權設定為 root:root 得分 1 通過 IBM
1.1.9 請確保容器網路介面檔案的權限設定為 644 或更嚴格的設定。 未計分 1 通過 IBM
1.1.10 請確保容器網路介面檔案的所有權設定為 root:root 未計分 1 通過 IBM
1.1.11 請確保資料 etcd 目錄的權限設定為 505 700 或更嚴格的設定。 得分 1 通過 IBM
1.1.12 請確保資料 etcd 目錄的所有權設定為 etcd:etcd 得分 1 通過 IBM
1.1.13 請確保檔案 admin.conf 權限設定為 555 644 或更嚴格的權限。 得分 1 通過 IBM
1.1.14 請確保檔案 admin.conf 擁有權設定為 root:root 得分 1 通過 IBM
1.1.15 請確保檔案 scheduler.conf 權限設定為 555 644 或更嚴格的權限。 得分 1 通過 IBM
1.1.16 請確保檔案 scheduler.conf 擁有權設定為 root:root 得分 1 通過 IBM
1.1.17 請確保檔案 controller-manager.conf 權限設定為 555 644 或更嚴格的權限。 得分 1 通過 IBM
1.1.18 請確保檔案 controller-manager.conf 擁有權設定為 root:root 得分 1 通過 IBM
1.1.19 請確保 PKI 目錄與檔案 Kubernetes 的所有權設定為 root:root 得分 1 通過 IBM
1.1.20 請確保公鑰基礎架構 Kubernetes (PKI) 憑證檔案的權限設定為 2777 644 或更嚴格的設定。 得分 1 通過 IBM
1.1.21 請確保 PKI 金鑰 Kubernetes 檔案的權限設定為 600 得分 1 通過 IBM

1.2 API 伺服器

第 X 節 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-key --kubelet-client-certificate 參數已設定為適當值。 得分 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-keyfile --etcd-certfile 參數已設定為適當值。 得分 1 通過 IBM
1.2.30 請確保 和 --tls-private-key-file --tls-cert-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 請確保 和 --key-file --cert-file 參數已設定為適當值。 得分 1 通過 IBM
2.2 請確保參數 --client-cert-auth 已設定為 true 得分 1 通過 IBM
2.3 請確保參數 --auto-tls 未設定為空值 true 得分 1 通過 IBM
2.4 請確保 和 --peer-key-file --peer-cert-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 檔案權限設定為 555 644 或更嚴格的權限。 得分 1 通過 IBM
4.1.4 請確保代理伺服器 kubeconfig 檔案的所有權設定為 root:root 得分 1 通過 IBM
4.1.5 請確保檔案 kubelet.conf 權限設定為 555 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-private-key-file --tls-cert-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 基於角色的存取控制與服務帳戶

5.1 RBAC 與服務帳戶基準測試結果
區段 建議 得分了? 層次 結果 責任
5.1.1 請確保僅在必要時使用 cluster-admin 角色。 未計分 1 通過 共用
5.1.2 最小化對機密資訊的存取。 未計分 1 失敗 共用
5.1.3 盡量減少在 Roles 和 中的 ClusterRoles 通配符使用。 未計分 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 網路政策與核心網路介面

節點 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 請確保在您的 Pod 定義中,將 seccomp profile 設定為 docker/default。 未計分 2 失敗 共用
5.7.3 將安全性上下文套用至您的 Pod 和容器。 未計分 2 失敗 共用
5.7.4 不應使用預設命名空間。 得分 2 失敗 共用

IBM 補救措施與解釋

章節 IBM 補救措施與說明基準結果
區段 補救與解釋
1.2.1 IBM 採用基於角色的存取控制(RBAC)來保護叢集,但允許匿名偵測,根據 KubernetesCIS 基準測試,此做法被視為合理。
1.2.10 IBM 由於此為 alpha Kubernetes 功能,故不會啟用接納 EventRateLimit 控制器。
1.2.12 IBM 不會啟用存取 AlwaysPullImages 控制器,因為它會覆寫容器的設定 imagePullPolicy,並可能影響效能。
1.2.13 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
1.2.16 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
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 控制器管理器的 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 帳戶設定。
5.1.6 IBM 部署某些系統元件,這些元件可能設定 automountServiceAccountToken: false.
5.2.1 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.2 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.3 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.4 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.5 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.6 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.7 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.8 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.2.9 IBM 可選擇性地設定 Pod 安全准入機制,其功能類似於未受支援的 Kubernetes Pod 安全策略。
5.3.2 IBM 已定義 一組預設的 Calico 和 Kubernetes 網路政策,並可選擇性地新增其他網路政策
5.4.2 IBM 可選擇性 啟用 Secrets Manager 服務
5.5.1 IBM 可選擇性地 啟用影像安全性強制執行
5.7.2 IBM 不會為所有 Pod 附加 seccomp 配置檔
5.7.3 IBM 部署某些系統元件,這些元件不會設定 Pod 或容器 securityContext
5.7.4 IBM 將部分 Kubernetes 資源部署至預設名稱。