KubernetesCIS1.34 基準
網路安全中心( CIS CIS)發布的 KubernetesCIS 《基準》作為具體步驟的框架,旨在協助配置 Kubernetes 更安全的系統,並採用符合各類產業法規的標準。 本文件包含針對運行 Kubernetes 版本 的叢集所進行的版本 KubernetesCIS1.51.34 基準測試結果。 如需更多資訊或協助理解基準測試,請參閱 《使用基準測試》。
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 伺服器
| 區段 | 建議 | 得分了? | 層次 | 結果 | 責任 |
|---|---|---|---|---|---|
| 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 | 請確保參數 --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 | 請確保參數 --profiling 已設定為 false。 |
得分 | 1 | 通過 | IBM |
| 1.4.2 | 請確保參數 --bind-address 已設定為 127.0.0.1。 |
得分 | 1 | 失敗 | IBM |
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.2 伐木
| 區段 | 建議 | 得分了? | 層次 | 結果 | 責任 |
|---|---|---|---|---|---|
| 3.2.1 | 確保建立最低限度的稽核政策。 | 得分 | 1 | 失敗 | 共用 |
| 3.2.2 | 確保稽核政策涵蓋關鍵安全事項。 | 未計分 | 2 | 失敗 | 共用 |
4 工作節點安全設定
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.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.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.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.1 | 請確保所使用的 CNI 支援網路政策。 | 未計分 | 1 | 通過 | IBM |
| 5.3.2 | 確保所有命名空間皆已定義網路政策。 | 得分 | 2 | 失敗 | 共用 |
5.4 祕密管理
| 區段 | 建議 | 得分了? | 層次 | 結果 | 責任 |
|---|---|---|---|---|---|
| 5.4.1 | 建議採用以檔案形式儲存的機密,而非以環境變數形式儲存的機密。 | 未計分 | 1 | 通過 | 共用 |
| 5.4.2 | 考慮外部機密儲存方案。 | 未計分 | 2 | 失敗 | 共用 |
5.5 可擴展的准入控制
| 區段 | 建議 | 得分了? | 層次 | 結果 | 責任 |
|---|---|---|---|---|---|
| 5.5.1 | 使用 ImagePolicyWebhook 准入控制器設定影像來源。 |
未計分 | 2 | 失敗 | 共用 |
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 補救措施與解釋
| 區段 | 補救與解釋 |
|---|---|
| 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 資源部署至預設名稱。 |