IBM Cloud Docs
Kubernetes V 1.29 CIS Kubernetes Benchmark

Kubernetes V 1.29 CIS Kubernetes Benchmark

因特网安全中心 (CIS) 发布 CIS Kubernetes Benchmark 作为特定步骤的框架,以更安全地配置 Kubernetes 并使用与各种行业法规相称的标准。 本文档包含针对运行 Kubernetes V 1.29的集群的 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 节点配置

查看 V 1.5 CIS Kubernetes 基准程序的 Etcd Node 配置结果。

部分 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 控制平面配置

查看 V 1.5 CIS Kubernetes 基准程序的控制平面配置结果。

3.1 认证和授权

部分 3.1 认证和授权基准结果
部分 建议 得分? 级别 结果 职责
3.1.1 不应将客户机证书认证用于用户 未评分 2 传递 共同承担

3.2 日志记录

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

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

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

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

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.2 Pod 安全政策

部分 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 admission controller配置图像来源 未评分 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 补救措施和说明

查看 IBM 中有关 CIS Benchmark 结果的信息。

说明和补救
部分 补救和解释
1.2.1 IBM Cloud Kubernetes Service 利用 RBAC 进行集群保护,但允许匿名发现,每个 CIS Kubernetes Benchmark都认为这是合理的发现。
1.2.10 IBM Cloud Kubernetes Service 不会启用 EventRateLimit 许可控制器,因为它是 Kubernetes alpha 功能部件。
1.2.12 IBM Cloud Kubernetes Service 不会启用 AlwaysPullImages 许可控制器,因为它会覆盖容器的 imagePullPolicy 并可能影响性能。
1.2.13 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
1.2.16 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
1.2.22 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
1.2.23 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
1.2.24 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
1.2.25 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
1.2.33 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供程序
1.2.34 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供程序
1.3.6 IBM Cloud Kubernetes Service 在每个工作程序节点重新装入或更新时轮换证书。
3.2.1 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
3.2.2 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes API 服务器审计
4.2.6 IBM Cloud Kubernetes Service 不会保护内核缺省值,以允许客户 调整内核参数
4.2.8 IBM Cloud Kubernetes Service 确保主机名与基础结构发出的名称匹配。
4.2.11 IBM Cloud Kubernetes Service 在每个工作程序节点重新装入或更新时轮换证书。
4.2.12 IBM Cloud Kubernetes Service 在每个工作程序节点重新装入或更新时轮换证书。
5.1.2 IBM Cloud Kubernetes Service 会部署一些可能会进一步限制其 Kubernetes 私钥访问的系统组件。
5.1.3 IBM Cloud Kubernetes Service 将部署一些可能使其 Kubernetes 资源访问权进一步受限的系统组件。
5.1.5 IBM Cloud Kubernetes Service 没有为每个缺省服务帐户设置 automountServiceAccountToken: false
5.1.6 IBM Cloud Kubernetes Service 部署一些可以设置 automountServiceAccountToken: false的系统组件。
5.2.1 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.2 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.3 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.4 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.5 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.6 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.7 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.8 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.2.9 IBM Cloud Kubernetes Service 可以选择性地配置 pod 安全许可,这类似于不受支持的 Kubernetes pod 安全策略
5.3.2 IBM Cloud Kubernetes Service 具有一组 缺省 Calico 和 Kubernetes 定义的网络策略,并且可以选择添加 其他网络策略
5.4.2 IBM Cloud Kubernetes Service 可以选择 启用 Kubernetes 密钥管理服务(KMS)提供程序
5.5.1 IBM Cloud Kubernetes Service 可以选择 启用映像安全性实施
5.6.2 IBM Cloud Kubernetes Service 不会使用 seccomp 概要文件对所有 pod 进行注释。
5.6.3 IBM Cloud Kubernetes Service 部署一些未设置 pod 或容器 securityContext的系统组件。
5.6.4 IBM Cloud Kubernetes Service 将一些 Kubernetes 资源部署到缺省名称。