Context

由 kubeadm 创建的 cluster 的 Kubernetes API 服务器,出于测试目的, 临时配置允许未经身份验证和未经授权的访问,授予匿名用户 cluster-admin 的访问权限.

Task

重新配置 cluster 的 Kubernetes APl 服务器,以确保只允许经过身份验证和授权的 REST 请求。 使用授权模式 Node , RBAC 和准入控制器 NodeRestriction 。 删除用户 system:anonymous 的 ClusterRoleBinding 来进行清理。

注意:所有 kubectl 配置环境/文件也被配置使用未经身份验证和未经授权的访问。 你不必更改它,但请注意,一旦完成 cluster 的安全加固, kubectl 的配置将无法工作。 您可以使用位于 cluster 的 master 节点上,cluster 原本的 kubectl 配置文件 /etc/kubernetes/admin.conf ,以确保经过身份验证的授权的请求仍然被允许。

解: kubernetes.io 搜索kube-apiserver image.png image.png image.png 根据题干找到相关配置 image.png image.png

# 按照题目要求,先登录到master节点
ssh master01
# 修改kube-apiserver配置文件
vim /etc/kubernetes/mainfests/kube-apiserver.yaml

image.png 修改成题干要求 image.png

# 重启相关服务
systemctl daemon-reload
systemctl restart kubelet
# 查看pod状态,等待3分钟,如果5分钟后还未起来则修改失败
kubectl	get pod -A

image.png

# 查看clusterrolebinding
kubectl get clusterrolebinding system:anonymous
# 删除clusterrolebinding
kubectl delete clusterrolebinding system:anonymous
# 查看clusterrolebinding是否删除
kubectl get clusterrolebinding system:anonymous

image.png

# 如果上面kubectl命令不能用则要加上 --kubeconfig=/etc/kubernetes/admin.conf
# 查看clusterrolebinding
kubectl get clusterrolebinding system:anonymous --kubeconfig=/etc/kubernetes/admin.conf
# 删除clusterrolebinding
kubectl delete clusterrolebinding system:anonymous --kubeconfig=/etc/kubernetes/admin.conf
# 查看clusterrolebinding是否删除
kubectl get clusterrolebinding system:anonymous --kubeconfig=/etc/kubernetes/admin.conf