介绍
在本次挑战中,你将通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性,以此展示你对基于角色的访问控制(RBAC)的理解。你需要创建一个新的服务账户、一个具有只读权限的集群角色(ClusterRole),并将该集群角色绑定到服务账户上。最后,你将为该服务账户生成一个用于登录 Dashboard 的令牌(Token)。
保障 Kubernetes Dashboard 访问安全
作为一名初级 DevOps 工程师,你将通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性,从而证明你对基于角色的访问控制(RBAC)的掌握。
任务
- 使用提供的 YAML 文件,在
kubernetes-dashboard命名空间中创建一个名为read-only-user的新服务账户。 - 创建一个对默认命名空间具有只读权限的
ClusterRole,允许对pods、services、nodes、namespaces和deployments执行get、list和watch操作。 - 将该
ClusterRole绑定到名为read-only-user的新服务账户上。 - 为该服务账户生成一个用于登录 Dashboard 的令牌。
要求
- 在
~/project目录下进行操作。 - 服务账户需使用
kubernetes-dashboard命名空间。 - 创建一个名为
read-only-dashboard-access.yaml的 YAML 文件。 - 该服务账户应仅具备只读权限。
- 将访问范围限制在
default命名空间。
提供 YAML 文件内容如下:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: read-only-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-only-dashboard-role
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes", "namespaces", "deployments"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-only-dashboard-access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-only-dashboard-role
subjects:
- kind: ServiceAccount
name: read-only-user
namespace: kubernetes-dashboard
示例
服务账户令牌输出示例:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
登录后的 Dashboard 视图示例:
- 可见内容:命名空间资源、部署(Deployments)、容器组(Pods)。
- 不可见内容:创建、编辑、删除等操作。
提示
- 启动 Minikube 并应用 Kubernetes Dashboard 官方仓库中的
recommended.yaml文件来部署 Dashboard。 - 使用
kubectl create和kubectl apply命令。 - 检查
ClusterRole和ClusterRoleBinding的配置。 - 使用
kubectl -n kubernetes-dashboard create token read-only-user来生成令牌。
总结
总而言之,本次挑战要求你通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性。你创建了一个新的服务账户、一个具有只读权限的集群角色,并将该角色绑定到了服务账户上。最后,你生成了用于 Dashboard 登录的令牌。


