4.12 CIS Kubernetes 基准
该版本已废弃。 尽快将群集更新到 支持的版本。
因特网安全中心 (CIS) 发布 CIS Kubernetes Benchmark 作为特定步骤的框架,以更安全地配置 Kubernetes,并使用与各种行业法规相称的标准。 本文档包含运行 Red Hat OpenShift on IBM Cloud V 4.12的集群的 V 1.5 CIS Kubernetes 基准测试的结果。 有关更多信息或帮助了解基准,请参阅 使用基准。
1 主节点安全性配置
查看 V 1.5 CIS Kubernetes 基准程序的主节点安全性配置结果。
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.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.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 | 确保根据需要设置 --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.3.1验证和授权
部分 | 建议 | 已评分/未评分 | 级别 | 结果 | 勇于担责 |
---|---|---|---|---|---|
3.1.1 | 不应将客户机证书认证用于用户 | 未评分 | 2 | 传递 | 共同承担 |
3.2 日志记录
部分 | 建议 | 已评分/未评分 | 级别 | 结果 | 勇于担责 |
---|---|---|---|---|---|
3.2.1 | 确保创建最小审计策略 | 已评分 | 1 | 失败 | 共同承担 |
3.2.2 | 确保审计策略涵盖关键安全问题 | 未评分 | 2 | 失败 | 共同承担 |
4 工作程序节点安全性配置
查看 V 1.5 CIS Kubernetes 基准程序的工作程序 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 | 传递 |
5 Kubernetes 策略
查看 V 1.5 CIS Kubernetes 基准程序的 Kubernetes 策略结果。
5.1 RBAC 和服务帐户
部分 | 建议 | 已评分/未评分 | 级别 | 结果 | 勇于担责 |
---|---|---|---|---|---|
5.1.1 | 确保仅在需要时使用 cluster-admin 角色 | 未评分 | 1 | 传递 | 共同承担 |
5.1.2 | 最小化对私钥的访问 | 未评分 | 1 | 失败 | 共同承担 |
5.1.3 | 最小化角色和 ClusterRoles 中的通配符使用 | 未评分 | 1 | 失败 | 共同承担 |
5.1.4 | 最大限度减少创建 pod 的访问权 | 未评分 | 1 | 传递 | 共同承担 |
5.1.5 | 确保未主动使用缺省服务帐户。 | 已评分 | 1 | 失败 | 共同承担 |
5.1.6 | 确保仅在需要时安装服务帐户令牌 | 未评分 | 1 | 失败 | 共同承担 |
5.5.2吊舱安全政策
部分 | 建议 | 已评分/未评分 | 级别 | 结果 | 勇于担责 |
---|---|---|---|---|---|
5.2.1 | 最大限度减少特权容器的许可 | 未评分 | 1 | 传递 | 共同承担 |
5.2.2 | 最大限度减少希望共享主机进程标识名称空间的容器的许可 | 已评分 | 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接入控制器配置图像验证 | 未评分 | 2 | 失败 | 共同承担 |
5.6 常规策略
部分 | 建议 | 已评分/未评分 | 级别 | 结果 | 勇于担责 |
---|---|---|---|---|---|
5.6.1 | 使用名称空间在资源之间创建管理边界 | 未评分 | 1 | 传递 | 共同承担 |
5.6.2 | 确保 seccomp 概要文件在 pod 定义中设置为 docker/default |
未评分 | 2 | 失败 | 共同承担 |
5.6.3 | 将安全上下文应用于 Pod 和容器 | 未评分 | 2 | 失败 | 共同承担 |
5.6.4 | 不应使用缺省名称空间 | 已评分 | 2 | 传递 | 共同承担 |
IBM 补救措施和说明
部分 | 补救/说明 |
---|---|
1.2.1 | Red Hat OpenShift on IBM Cloud 利用 RBAC 进行集群保护,但允许匿名发现,根据 CIS Kubernetes Benchmark,这被认为是合理的。 |
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 安全上下文约束 和 Kubernetes pod 安全许可,这类似于不推荐使用的 Kubernetes pod 安全策略。 |
1.2.16 | Red Hat OpenShift on IBM Cloud 支持 OpenShift 安全上下文约束 和 Kubernetes pod 安全许可,这类似于不推荐使用的 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)提供程序。 |
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 安全策略](https://kubernetes.io/docs/concepts/security/pod-security-policy/{: external})。 |
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 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供程序。 |
5.5.1 | Red Hat OpenShift on IBM Cloud 可以选择 启用映像安全实施。 |
5.6.2 | Red Hat OpenShift on IBM Cloud 不会使用 seccomp 概要文件对所有 pod 进行注释。 |
5.6.3 | Red Hat OpenShift on IBM Cloud 部署一些未设置 pod 或容器 securityContext 的系统组件。 |