IBM Cloud Docs
4.16 CIS Kubernetes 基准

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.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 节 EtcdNode配置基准测试结果
部分 建议 得分/未得分 级别 结果 职责
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节 工作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 传递 IBM

4 工作节点安全配置(RHCOS)

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

5Kubernetes策略

5.5.1RBAC 和服务账户

第5.1节 RBAC 和服务账户基准结果
部分 建议 得分/未得分 级别 结果 职责
5.1.1 确保仅在需要时使用群集管理员角色。 未得分 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 尽量减少希望共享主机进程 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.6节 一般政策基准结果
部分 建议 得分/未得分 级别 结果 职责
5.7.1 使用命名空间在资源之间创建管理边界。 未得分 1 传递 共同承担
5.7.2 确保在您的容器定义中将 seccomp 配置文件设置为docker/default。 未得分 2 失败 共同承担
5.7.3 为 Pod 和容器应用安全上下文。 未得分 2 失败 共同承担
5.7.4 不应使用默认命名空间。 得分 2 传递 共同承担

IBM补救措施和说明

解释和补救
部分 补救/解释
1.2.1 Red Hat OpenShift on IBM Cloud 使用 RBAC 进行群集保护,但允许匿名发现,这在 CIS Kubernetes 基准中被认为是合理的。
1.2.10 Red Hat OpenShift on IBM Cloud 不会启用 EventRateLimit 入场控制器,因为它是 Kubernetes 的阿尔法功能。
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)提供商
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