IBM Cloud Docs
Red Hat OpenShift on IBM Cloud 版本 基准 4.18 CIS Kubernetes

Red Hat OpenShift on IBM Cloud 版本 基准 4.18 CIS Kubernetes

互联网安全中心 ( CIS ) 发布了 CIS Kubernetes 基准,作为更安全地配置 Kubernetes 的具体步骤框架,并符合各种行业法规的标准。 本文件包含运行 Red Hat OpenShift on IBM Cloud 4.18 版本的集群的 1.5 CIS Kubernetes 基准测试结果。 有关了解基准的更多信息或帮助,请参阅 使用基准

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.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 控制器管理人基准结果
部分 建议 得分/未得分 级别 结果 职责
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 工作节点安全配置 ( RHEL_9_64 )

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.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 政策

5.1 RBAC 和服务账户

第 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.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.7 一般政策

5.7 一般政策基准结果
部分 建议 得分/未得分 级别 结果 职责
5.7.1 使用命名空间在资源之间创建管理边界。 未得分 1 传递 共同承担
5.7.2 确保在 pod 定义中将 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 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 可选择 启用 API 服务器审计 Kubernetes
1.2.23 Red Hat OpenShift on IBM Cloud 可选择 启用 API 服务器审计 Kubernetes
1.2.24 Red Hat OpenShift on IBM Cloud 可选择 启用 API 服务器审计 Kubernetes
1.2.25 Red Hat OpenShift on IBM Cloud 可选择 启用 API 服务器审计 Kubernetes
1.2.33 Red Hat OpenShift on IBM Cloud 可选择 启用 密钥管理服务(KMS)提供商 Kubernetes
1.2.34 Red Hat OpenShift on IBM Cloud 可选择 启用 密钥管理服务(KMS)提供商 Kubernetes
3.2.1 Red Hat OpenShift on IBM Cloud 可选择 启用 API 服务器审计 Kubernetes
3.2.2 Red Hat OpenShift on IBM Cloud 可选择 启用 API 服务器审计 Kubernetes
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 配置文件注释所有 pod。
5.7.3 Red Hat OpenShift on IBM Cloud 部署某些不设置 的系统组件。securityContext