Kubernetes 安全检测Kube-bench 电脑版发表于:2022/3/27 21:30  >#Kubernetes 安全检测Kube-bench [TOC] ##简介 tn2>Kube-bench可以检查Kubernetes是否根据CIS Kubernetes基准中定义的安全最佳实践进行部署。 ##安装 tn2>运行如下命令安装Kube-bench ```bash docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install ./kube-bench ``` tn>更多安装方式请参考:https://github.com/aquasecurity/kube-bench/blob/main/docs/running.md  ##检查 tn2>检查对k8s控制节点进行压测 ```bash ./kube-bench master ```  tn2>检查完成后呢,我们发现它有10个问题。 ### 解决问题 tn2>我们以设置`--kubelet-certificate-authority`为例。  tn2>我们通过设置证书授权来改善kubernetes. ```bash # 修改kube-apiserver.yaml vim /etc/kubernetes/manifests/kube-apiserver.yaml # 添加证书授权 - --kubelet-certificate-authority=/etc/kubernetes/pki/ca.crt ```  tn2>随后重启kubelet,并再次检查,我们就会发现这个问题以及解决了。 ```bash systemctl daemon-reload systemctl restart kubelet.service ./kube-bench master ```  tn2>通过它的一些问题描述来一点点改善我们的集群环境。 ### 常见问题 >###问题一 tn2>授权模式不应设置为AlwaysAllow,而应包括Node和RBAC。 实例地址ip设置无效。 不安全端口失败参数应该设置为0。  tn2>解决方法 ```bash vim /etc/kubernetes/manifests/kube-apiserver.yaml # - --authorization-mode=AlwaysAllow - --authorization-mode=Node,RBAC # - --insecure-bind-address=0.0.0.0 - --insecure-port=0 ``` >### 问题二 tn2>确保`anonymous-auth`参数设置为false 确保`--authorization-mode`参数不能设置为AlwaysAllow 尽可能的使用webhook authn或authz  ```bash vim /var/lib/kubelet/config.yaml # master和node都需要改配置 anonymous: enabled: false authorization: mode: Webhook ``` ```bash systemctl daemon-reload systemctl restart kubelet.service ``` >### 问题三 tn2>确保etcd的`--client-cert-auth`失败设置为true  ```bash vim /etc/kubernetes/manifests/etcd.yaml - --client-cert-auth=true systemctl daemon-reload systemctl restart kubelet.service ```