【问题标题】:CIS benchmark issue for Kubernetes clusterKubernetes 集群的 CIS 基准测试问题
【发布时间】:2021-06-29 21:36:03
【问题描述】:

我正在主节点上运行 CIS kube-bench 工具并尝试解决此错误

[FAIL] 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated). 

我了解我需要更新 API 服务器清单 YAML 文件,并使用此标志指向正确的 CA 文件 --kubelet-certificate-authority 但是,我不确定哪个是Kubelet 的正确 CA 证书。

这些是我在 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

【问题讨论】:

    标签: security kubernetes


    【解决方案1】:

    3 非常相似的讨论关于同一主题。我不会为您提供所有步骤,因为它在文档和堆栈上的相关问题中写得很好。仅高级概述

    1. How Do I Properly Set --kubelet-certificate-authority apiserver parameter?
    2. Kubernetes kubelet-certificate-authority on premise with kubespray causes certificate validation error for master node
    3. Kubernetes kubelet-certificate-authority on premise with kubespray causes certificate validation error for master node

    你的行为:

    这些连接终止于 kubelet 的 HTTPS 端点。 由 默认情况下,apiserver 不验证 kubelet 的服务 证书,使连接受制于中间人 攻击并且在不受信任和/或公共网络上运行是不安全的。

    然后,在主节点上编辑 API server pod 规范文件/etc/kubernetes/manifests/kube-apiserver.yaml,并将--kubelet-certificate-authority 参数设置为证书颁发机构的证书文件路径。


    来自@Matt answer

    • 使用/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 指向新创建的kubelet crt 和key 文件。

    来自clarifications:

    是的,您必须为 kubelet 生成证书并签名 主服务器上提供的证书颁发机构 /etc/kubernetes/ssl/ca.crt

    【讨论】:

      【解决方案2】:

      在 Kubernetes 中默认有 3 个不同的 Parent CA(kubernetes-ca、etcd-ca、kubernetes-front-proxy-ca)。您正在寻找 kubernetes-ca,因为 kubelet 使用 kubernetes-ca,您可以查看 documentation。 kubernetes-ca 默认路径是 /etc/kubernetes/pki/ca.crt 但您也可以通过 kubelet configmap 使用以下命令验证它

      kubectl get configmap -n kube-system $(kubectl get configmaps -n kube-system | grep kubelet  | awk '{print $1}') -o yaml | grep -i clientca
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        • 1970-01-01
        • 2020-06-26
        • 1970-01-01
        相关资源
        最近更新 更多