保障 Kubernetes Dashboard 访问安全

KubernetesBeginner
立即练习

介绍

在本次挑战中,你将通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性,以此展示你对基于角色的访问控制(RBAC)的理解。你需要创建一个新的服务账户、一个具有只读权限的集群角色(ClusterRole),并将该集群角色绑定到服务账户上。最后,你将为该服务账户生成一个用于登录 Dashboard 的令牌(Token)。

这是一个「挑战」项目,它与「引导实验」不同,你需要尝试独立完成挑战任务,而不是按照实验步骤逐步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个 初学者 级别的挑战,通过率为 98%。它在学习者中获得了 90% 的好评率。

保障 Kubernetes Dashboard 访问安全

作为一名初级 DevOps 工程师,你将通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性,从而证明你对基于角色的访问控制(RBAC)的掌握。

任务

  • 使用提供的 YAML 文件,在 kubernetes-dashboard 命名空间中创建一个名为 read-only-user 的新服务账户。
  • 创建一个对默认命名空间具有只读权限的 ClusterRole,允许对 podsservicesnodesnamespacesdeployments 执行 getlistwatch 操作。
  • 将该 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 createkubectl apply 命令。
  • 检查 ClusterRoleClusterRoleBinding 的配置。
  • 使用 kubectl -n kubernetes-dashboard create token read-only-user 来生成令牌。
✨ 查看解决方案并练习

总结

总而言之,本次挑战要求你通过为 Kubernetes Dashboard 创建一个只读服务账户来增强 Kubernetes 集群的安全性。你创建了一个新的服务账户、一个具有只读权限的集群角色,并将该角色绑定到了服务账户上。最后,你生成了用于 Dashboard 登录的令牌。