4.16 CIS Kubernetes 基准

互联网安全中心(CIS)发布的“CIS'Kubernetes基准是一个具体步骤框架,用于更安全地配置”Kubernetes,并符合各种行业法规的标准。 本文档包含针对运行Red Hat OpenShift on IBM Cloud版本4.16 的集群的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 确保 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.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.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 工作节点安全配置REDHAT_8_64

4.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.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

5Kubernetes策略

5.5.1RBAC 和服务账户

第 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.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.7 一般政策基准结果
部分 建议 得分? 级别 结果 职责
5.7.1 使用命名空间在资源之间创建管理边界。 未得分 1 传递 共同承担
5.7.2 确保在您的容器定义中将 seccomp 配置文件设置为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 基准中被认为是合理的。
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 安全上下文约束Kubernetespod 安全接纳,它们类似于已废弃的 Kubernetes pod 安全策略
1.2.16 Red Hat OpenShift on IBM Cloud 支持 OpenShift 安全上下文约束Kubernetespod 安全接纳,它们类似于已废弃的 Kubernetes pod 安全策略
1.2.22 Red Hat OpenShift on IBM Cloud 可选择 启用 Kubernetes API 服务器审计
1.2.23 Red Hat OpenShift on IBM Cloud 可选择 启用 Kubernetes API 服务器审计
1.2.24 Red Hat OpenShift on IBM Cloud 可选择 启用 Kubernetes API 服务器审计
1.2.25 Red Hat OpenShift on IBM Cloud 可选择 启用 Kubernetes API 服务器审计
1.2.33 Red Hat OpenShift on IBM Cloud 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供商
1.2.34 Red Hat OpenShift on IBM Cloud 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供商
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 可选择 启用 Kubernetes API 服务器审计
3.2.2 Red Hat OpenShift on IBM Cloud 可选择 启用 Kubernetes API 服务器审计
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 个人资料
5.7.3 Red Hat OpenShift on IBM Cloud 部署了一些不设置 的系统组件。荚或容器 securityContext