IBM Cloud Docs
4.12 CIS Kubernetes 基准

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.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 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 Controller Manager 基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
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 Node 配置基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
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 认证和授权基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
3.1.1 不应将客户机证书认证用于用户 未评分 2 传递 共同承担

3.2 日志记录

部分 3.2 日志记录基准结果
部分 建议 已评分/未评分 级别 结果 勇于担责
3.2.1 确保创建最小审计策略 已评分 1 失败 共同承担
3.2.2 确保审计策略涵盖关键安全问题 未评分 2 失败 共同承担

4 工作程序节点安全性配置

查看 V 1.5 CIS Kubernetes 基准程序的工作程序 Node 安全性配置结果。

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.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 传递

5 Kubernetes 策略

查看 V 1.5 CIS Kubernetes 基准程序的 Kubernetes 策略结果。

5.1 RBAC 和服务帐户

部分 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 Pod 安全策略基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
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 网络策略和 CNI 基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
5.3.1 确保正在使用的 CNI 支持网络策略 未评分 1 传递 IBM
5.3.2 确保所有名称空间都定义了网络策略 已评分 2 失败 共同承担

5.4 私钥管理

部分 5.4 私钥管理基准测试结果
部分 建议 已评分/未评分 级别 结果 勇于担责
5.4.1 首选将私钥用作文件而不是将私钥用作环境变量 未评分 1 失败 共同承担
5.4.2 考虑外部私钥存储器 未评分 2 失败 共同承担

5.5 可扩展许可控制

部分 5.5 可扩展许可控制基准结果
部分 建议 已评分/未评分 级别 结果 勇于担责
5.5.1 使用ImagePolicyWebhook接入控制器配置图像验证 未评分 2 失败 共同承担

5.6 常规策略

部分 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的系统组件。