security - Kubernetes 集群的 CIS 基准测试问题
问题描述
我正在主节点上运行CIS kube-bench 工具并尝试解决此错误
[FAIL] 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated).
我知道我需要使用指向正确 CA 文件--kubelet-certificate-authority的标志来更新 API 服务器清单 YAML 文件,但是,我不确定哪一个是 Kubelet 的正确 CA Certifface。
这些是我在 PKI 目录中的文件:-
apiserver-etcd-client.crt
apiserver-etcd-client.key
apiserver-kubelet-client.crt
apiserver-kubelet-client.key
apiserver.crt
apiserver.key
ca.crt
ca.key
etcd
front-proxy-ca.crt
front-proxy-ca.key
front-proxy-client.crt
front-proxy-client.key
sa.key
sa.pub
解决方案
3 非常相似的讨论关于同一主题。我不会为您提供所有步骤,因为它在文档和堆栈上的相关问题中写得很好。仅高级概述
- 如何正确设置 --kubelet-certificate-authority apiserver 参数?
- 使用 kubespray 的 Kubernetes kubelet-certificate-authority 会导致主节点的证书验证错误
- 使用 kubespray 的 Kubernetes kubelet-certificate-authority 会导致主节点的证书验证错误
你的行动:
- 按照 Kubernetes 文档设置apiserver 和 kubelets 之间的 TLS 连接。
这些连接终止于 kubelet 的 HTTPS 端点。默认情况下,apiserver 不验证 kubelet 的服务证书,这使得连接受到中间人攻击,并且在不受信任和/或公共网络上运行是不安全的。
然后,编辑主节点上的 API server pod 规范文件/etc/kubernetes/manifests/kube-apiserver.yaml
,并将--kubelet-certificate-authority
参数设置为证书颁发机构的 cert 文件的路径。
来自@Matt答案
- 用于
/etc/kubernetes/ssl/ca.crt
为具有有效 IP SAN 的 kubelet 签署新证书。 - 设置
--kubelet-certificate-authority=/etc/kubernetes/ssl/ca.crt
(有效的 CA)。 - 在
/var/lib/kubelet/config.yaml
(kubelet 配置文件)中设置tlsCertFile
并tlsPrivateKeyFile
指向新创建的 kubeletcrt
和key
文件。
并从澄清:
是的,您必须为 kubelet 生成证书并在 master 上提供的证书颁发机构对它们进行签名
/etc/kubernetes/ssl/ca.crt
推荐阅读
- python - 如何平均偏移数组
- javascript - Vue.js - 如何将事件处理程序添加到 Bootstrap 元素
- react-native - 如何设置 React Native Video 在每个请愿书上发送或不发送凭据,即 cookie?
- image - 2sxc 图库 - 无法加载请求的内容。请稍后再试
- php - 将组件信息传递给 livewire 中的另一个
- amazon-web-services - aws lambda 权限中的 SourceArn 是什么
- azure - 逻辑应用程序(从数据库中读取 EmailID 并发送电子邮件)
- python - 在检查当前时间是否为 T 时继续 WebSocket
- node.js - 在 Heroku 上托管我们的应用程序时,我们是否需要将 docs 文件夹添加到 .gitignore?
- python - 如何使用正则表达式根据开始和结束搜索字符串的一部分?