Безопасный доступ к панели управления Kubernetes

KubernetesBeginner
Практиковаться сейчас

Введение

В рамках этого испытания вы повысите безопасность своего кластера Kubernetes, создав сервисную учетную запись с правами только для чтения для панели управления (Dashboard). Это позволит вам продемонстрировать навыки работы с управлением доступом на основе ролей (RBAC). Вам предстоит создать новую сервисную учетную запись, роль кластера (ClusterRole) с правами на чтение и связать их между собой. В завершение вы сгенерируете токен, который будет использоваться для входа в панель управления.

Безопасный доступ к панели управления Kubernetes

В роли младшего DevOps-инженера вам необходимо усилить защиту кластера Kubernetes. Ваша задача — настроить безопасный доступ к Kubernetes Dashboard, создав учетную запись с минимально необходимыми привилегиями, используя механизмы RBAC.

Задачи

  • Создайте новую сервисную учетную запись с именем read-only-user в пространстве имен kubernetes-dashboard, используя предоставленный YAML-файл.
  • Создайте роль ClusterRole с правами только для чтения для пространства имен по умолчанию, разрешив операции get, list и watch для ресурсов pods, services, nodes, namespaces и deployments.
  • Привяжите созданную ClusterRole к новой сервисной учетной записи read-only-user.
  • Сгенерируйте токен для этой учетной записи, чтобы использовать его для авторизации в панели управления.

Требования

  • Работайте в директории ~/project.
  • Используйте пространство имен kubernetes-dashboard для сервисной учетной записи.
  • Создайте YAML-файл с именем read-only-dashboard-access.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...

Вид панели управления после входа:

  • Доступно для просмотра: ресурсы пространства имен, Deployments, Pods.
  • Недоступно: операции создания (Create), редактирования (Edit) и удаления (Delete).

Подсказки

  • Запустите Minikube и примените файл recommended.yaml из официального репозитория Kubernetes Dashboard для развертывания панели управления.
  • Используйте команды kubectl create и kubectl apply.
  • Проверьте конфигурации ClusterRole и ClusterRoleBinding.
  • Используйте команду kubectl -n kubernetes-dashboard create token read-only-user для генерации токена.
✨ Проверить решение и практиковаться

Резюме

В ходе этого испытания вы повысили безопасность кластера Kubernetes, настроив сервисную учетную запись с правами только для чтения. Вы научились создавать ServiceAccount, определять ClusterRole с ограниченными правами и связывать их через ClusterRoleBinding. В итоге вы получили токен для безопасной авторизации в Kubernetes Dashboard.