Kubernetes 版本 基准 1.32 CIS Kubernetes
互联网安全中心( CIS )发布的 CIS Kubernetes Benchmark 是一个特定步骤框架,用于按照符合各种行业法规的标准,更安全地配置 Kubernetes。 本文件包含运行 Kubernetes 版本的 1.32 集群的 1.5 CIS Kubernetes 基准测试结果。 如需了解更多信息或帮助理解基准,请参阅 使用基准。
1 主节点安全配置
查看版本 1.5 CIS Kubernetes 基准测试的 Master 节点安全配置结果。
1.1 主节点配置文件
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
1.1.1 | 确保将API服务器pod规格文件的权限设置为644或更严格的权限。 | 得分 | 1 | 传递 | IBM |
1.1.2 | 确保将API服务器Pod规格文件的所有权设置为root:root。 | 得分 | 1 | 传递 | IBM |
1.1.3 | 确保控制器管理器舱规格文件的权限设置为644或更严格的权限。 | 得分 | 1 | 传递 | IBM |
1.1.4 | 确保控制器管理器舱规格文件的所有权设置为root:root。 | 得分 | 1 | 传递 | IBM |
1.1.5 | 确保调度程序pod规格文件的权限设置为644或更严格的权限。 | 得分 | 1 | 传递 | IBM |
1.1.6 | 确保调度程序容器规格文件的所有权设置为root:root。 | 得分 | 1 | 传递 | IBM |
1.1.7 | 确保将 etcd pod规格文件的权限设置为644或更严格的权限。 | 得分 | 1 | 传递 | IBM |
1.1.8 | 确保将 etcd pod规格文件的所有权设置为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 | 确保将 Kubernetes PKI目录和文件所有权设置为root:root。 | 得分 | 1 | 传递 | IBM |
1.1.20 | 确保将 Kubernetes PKI证书文件的权限设置为644或更严格的权限。 | 得分 | 1 | 传递 | IBM |
1.1.21 | 确保将 Kubernetes PKI密钥文件的权限设置为600。 | 得分 | 1 | 传递 | IBM |
1.2 应用程序接口服务器
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
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 | 确保应用程序接口服务器仅使用强加密算法。 | 未得分 | 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节点配置
查看Etcd Node 配置结果 版本 1.5 CIS Kubernetes 基准。
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
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 控制平面配置
查看版本 1.5 CIS Kubernetes 的对照平面配置结果。
3.1 认证和授权
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
3.1.1 | 用户不应使用客户证书认证。 | 未得分 | 2 | 传递 | 共同承担 |
3.2 记录
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
3.2.1 | 确保制定最低限度的审计政策。 | 得分 | 1 | 失败 | 共同承担 |
3.2.2 | 确保审计政策涵盖关键的安全问题。 | 未得分 | 2 | 失败 | 共同承担 |
4 工人节点安全配置
查看版本 1.5 CIS Kubernetes 的 Worker Node 安全配置结果。
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.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 政策
查看 Kubernetes 政策结果版本 1.5 CIS Kubernetes 基准。
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.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.1 | 确保正在使用的CNI支持网络策略。 | 未得分 | 1 | 传递 | IBM |
5.3.2 | 确保所有命名空间都定义了网络策略。 | 得分 | 2 | 失败 | 共同承担 |
5.4 秘密管理
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
5.4.1 | 更喜欢将秘密作为文件而不是环境变量。 | 未得分 | 1 | 传递 | 共同承担 |
5.4.2 | 考虑外部秘密存储。 | 未得分 | 2 | 失败 | 共同承担 |
5.5 可扩展的准入控制
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
5.5.1 | 使用 ImagePolicyWebhook admission controller配置图像来源。 | 未得分 | 2 | 失败 | 共同承担 |
5.7 一般政策
部分 | 建议 | 得分? | 级别 | 结果 | 职责 |
---|---|---|---|---|---|
5.7.1 | 使用命名空间在资源之间创建管理边界。 | 未得分 | 1 | 传递 | 共同承担 |
5.7.2 | 确保在您的容器定义中将 seccomp 配置文件设置为docker/default。 |
未得分 | 2 | 失败 | 共同承担 |
5.7.3 | 将安全上下文应用于您的 Pod 和容器。 | 未得分 | 2 | 失败 | 共同承担 |
5.7.4 | 不应使用默认命名空间。 | 得分 | 2 | 失败 | 共同承担 |
IBM 补救措施和解释
查看来自 IBM 的 CIS Benchmark 结果信息。
部分 | 补救和解释 |
---|---|
1.2.1 | IBM 使用RBAC进行集群保护,但允许匿名发现,这 在 Benchmark CIS Kubernetes 看来是合理的。 |
1.2.10 | IBM 无法启用 EventRateLimit 访问控制,因为这是 Kubernetes 的字母功能。 |
1.2.12 | IBM 无法启用 AlwaysPullImages,因为它会覆盖容器的 imagePullPolicy,可能会影响性能。 |
1.2.13 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
1.2.16 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
1.2.22 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
1.2.23 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
1.2.24 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
1.2.25 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
1.2.33 | IBM 可以选择 启用 密钥管理服务(KMS)提供商 Kubernetes。 |
1.2.34 | IBM 可以选择 启用 密钥管理服务(KMS)提供商 Kubernetes。 |
1.3.6 | IBM 在每个工作节点上旋转证书,进行重新加载或更新。 |
3.2.1 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
3.2.2 | IBM 可以选择 启用 API服务器审计 Kubernetes。 |
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: 为假。 |
5.1.6 | IBM 部署了一些可能会将 automountServiceAccountToken: 设置为错误的系统组件。 |
5.2.1 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.2 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.3 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.4 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.5 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.6 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.7 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.8 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.2.9 | IBM 可以选择配置 安全准入,这与不受支持 的 安全策略 Kubernetes 类似。 |
5.3.2 | IBM定义了一组默认的 Calico 和 Kubernetes 网络策略,并且 可以选择添加其他网络策略。 |
5.4.2 | IBM 可以选择 启用 服务 Secrets Manager。 |
5.5.1 | IBM 可选择 启用图像安全强制。 |
5.7.2 | IBM 不会为所有豆荚添加 seccomp 个人资料。 |
5.7.3 | IBM 部署了一些不设置 的系统组件。荚或容器 securityContext |
5.7.4 | IBM 将一些 资源部署到默认名称。Kubernetes |