3. kube-bench CIS 基准测试
问题:
Context
针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时,发现了多个必须立即解决的问题。
Task
通过配置修复所有问题并重新启动受影响的组件以确保新设置生效。
修复针对 API服务器发现的所有以下违规行为: 新版考试这个可能已经删除了
这个题目这里我就不更新了,怕误导大家,下面答案中有相关实例,大家可以参考一下!!!
:::info
尽可能使用 Webhook 身份验证/授
:::
修复针对 etcd 发现的所有以下违规行为:
正确答案:
注注注大意了啊!这个模拟环境中没有这几个字段
1、如果有–insecure-bind-address 这个字段:
答:如果写了not set 不需要设置了,那么你就直接删除即可,不要去做修改哈,谢谢
2、–insecure-port参数设置为0:
答:这个你就去题目中找到这个字段,改为0就行。如果没有这个字段,那么你就添加上
- 修复针对 API服务器发现的所有以下违规行为:
注意:
在修改已有文件前,必须备份该文件,防止修改有问题。需要备份到/tmp下,别直接备份到相同路径下,防止有问题。
root@hk8s-master01:~# cp /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
做下一题之前,确保所有的 pod 都是 Running,特别是 kube-apiserver-master01 也正常。(考试时,也要确保这个 apiserver 是正常的)
root@hk8s-master01:~# cp /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
root@hk8s-master01:~# vim /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
apiVersion: v1
kind: Pod
metadata:
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --authorization-mode=Node,RBAC ##把AlwaysAllow改为Node和RBAC
- 修复针对 Kubelet 发现的所有以下违规行为
注意:
在修改文件之前一定要先备份,备份,备份。不要忘。。。千万不要在/etc/kubernetes/下备份,可能会导致异常,可以备份到/tmp 目录下。
如果你找不到这个kubelet的配置文件,你千万记住这个路径,会告诉你这个文件的路径:
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 中你也会看到 Environment=“KUBELET_CONFIG_ARGS=–config=/var/lib/kubelet/config.yaml”。
注大意了啊:master和node都需要改kubelet的配置
#注意:
webhook:
cacheTTL: 0s
enabled: true
这个字段可能默认没有,需要自己添加,考试的时候自己注意下
root@hk8s-master01:~# cp /var/lib/kubelet/config.yaml /tmp
root@hk8s-master01:~# cd /var/lib/kubelet/
root@hk8s-master01:/var/lib/kubelet# vim config.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous: #修改 anonymous 下的,将 true 改为 false
enabled: true #将 true 改为 false
webhook:
cacheTTL: 0s
enabled: true #注意:尽可能使用 Webhook 身份验证/授权。如果这里是false那你一定要修改为true,否则和题目不对应了
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization: #修改 authorization 下的
mode: Webhook #改为 Webhook
webhook:
- 修复针对 etcd 发现的所有以下违规行为
root@hk8s-master01:~# cp /etc/kubernetes/manifests/etcd.yaml /tmp
root@hk8s-master01:~# vim /etc/kubernetes/manifests/etcd.yaml
1 apiVersion: v1
2 kind: Pod
3 metadata:
7 labels:
8 component: etcd
9 tier: control-plane
10 name: etcd
11 namespace: kube-system
12 spec:
13 containers:
14 - command:
15 - etcd
18 - --client-cert-auth=true #修改为 true
- 编辑完后重新加载配置文件,并重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
查看状态,上面这个结果是不行的,必须等到下面查询结果出来之后才可以
然后ssh 到从节点, 修改kubelet, 修改⽅法⼀样(这一步骤待定,不确定是否需要修改)
vim /var/lib/kubelet/config.yaml
systemctl daemon-reload
systemctl restart kubelet