IBM Cloud Docs
4.4.17 CIS Kubernetes基准

4.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.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 确保将etcdpod 规范文件权限设置为 "644 或更严格的权限。 得分 1 传递 IBM
1.1.8 确保将etcdpod 规范文件所有权设置为 "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 确保将KubernetesPKI 目录和文件所有权设置为 "root:root 得分 1 传递 IBM
1.1.20 确保将KubernetesPKI 证书文件权限设置为 "644 或更严格的权限。 得分 1 传递 IBM
1.1.21 确保将KubernetesPKI 密钥文件权限设置为 "600 得分 1 传递 IBM

1.1.2应用程序接口服务器

第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.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.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 节 EtcdNode配置基准测试结果
部分 建议 得分/未得分 级别 结果 职责
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.3.2记录

第3.2节 记录基准结果
部分 建议 得分/未得分 级别 结果 职责
3.2.1 确保制定最低限度的审计政策。 得分 1 失败 共同承担
3.2.2 确保审计政策涵盖主要的安全问题。 未得分 2 失败 共同承担

4 工作节点安全配置RHEL_9_64

4.4.1工作节点配置文件

第4.1节 工作Node配置基准结果
部分 建议 得分/未得分 级别 结果 职责
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.4.2Kubelet

第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.4.1工作节点配置文件

第4.1节 工作Node配置基准结果
部分 建议 得分/未得分 级别 结果 职责
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.4.2Kubelet

第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

5Kubernetes政策

5.5.1RBAC 和服务账户

第5.1节 RBAC 和服务账户基准结果
部分 建议 得分/未得分 级别 结果 职责
5.1.1 确保仅在需要时使用群集管理员角色。 未得分 1 传递 共同承担
5.1.2 尽量减少获取机密的机会。 未得分 1 失败 共同承担
5.1.3 尽量减少角色和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.5.3网络政策和 CNI

第5.3节 网络政策和 CNI 基准结果
部分 建议 得分/未得分 级别 结果 职责
5.3.1 确保使用的 CNI 支持网络策略。 未得分 1 传递 IBM
5.3.2 确保所有命名空间都定义了网络策略。 得分 2 失败 共同承担

5.5.4秘密管理

第5.4节 秘密管理基准结果
部分 建议 得分/未得分 级别 结果 职责
5.4.1 优先使用文件形式的秘密,而不是环境变量形式的秘密。 未得分 1 失败 共同承担
5.4.2 考虑外部秘密存储。 未得分 2 失败 共同承担

5.5.5可扩展的准入控制

第5.5节 可扩展准入控制基准结果
部分 建议 得分/未得分 级别 结果 职责
5.5.1 使用 "ImagePolicyWebhook 准入控制器配置映像证明。 未得分 2 失败 共同承担

5.5.7一般政策

第5.6节 一般政策基准结果
部分 建议 得分/未得分 级别 结果 职责
5.7.1 使用命名空间在资源之间创建管理边界。 未得分 1 传递 共同承担
5.7.2 确保在 pod 定义中将 seccomp 配置文件设置为 docker/default。 未得分 2 失败 共同承担
5.7.3 为 Pod 和容器应用安全上下文。 未得分 2 失败 共同承担
5.7.4 不应使用默认命名空间。 得分 2 传递 共同承担

IBM补救措施和解释

解释和补救
部分 补救/解释
1.2.1 Red Hat OpenShift on IBM Cloud利用 RBAC 进行集群保护,但允许匿名发现,CIS KubernetesBenchmark 认为这一点是合理的。
1.2.10 Red Hat OpenShift on IBM Cloud不会启用 "EventRateLimit入场控制器,因为它是Kubernetesalpha 功能。
1.2.12 Red Hat OpenShift on IBM Cloud不会启用“AlwaysPullImages入场控制器,因为它会覆盖容器的”imagePullPolicy,并可能影响性能。
1.2.13 Red Hat OpenShift on IBM Cloud支持 OpenShift安全上下文约束Kubernetespod 安全接纳,它们与已废弃的 Kubernetespod 安全策略类似。
1.2.16 Red Hat OpenShift on IBM Cloud支持 OpenShift安全上下文约束Kubernetespod 安全接纳,它们与已废弃的 Kubernetespod 安全策略类似。
1.2.22 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
1.2.23 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
1.2.24 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
1.2.25 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
1.2.33 Red Hat OpenShift on IBM Cloud可以选择 启用Kubernetes密钥管理服务(KMS)提供 程序。
1.2.34 Red Hat OpenShift on IBM Cloud可以选择 启用Kubernetes密钥管理服务(KMS)提供 程序。
3.2.1 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
3.2.2 Red Hat OpenShift on IBM Cloud可以选择 启用KubernetesAPI 服务器审计
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安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.2 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.3 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.4 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.5 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.6 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.7 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.8 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
5.2.9 Red Hat OpenShift on IBM Cloud可以选择性地配置 OpenShift安全上下文约束Kubernetespod 安全许可,它们与已废弃的 Kubernetespod 安全策略类似。
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没有为所有 pod 注释 "seccomp 配置文件
5.7.3 Red Hat OpenShift on IBM Cloud部署的某些系统组件没有设置“豆荚或容器”securityContext