Введение
В рамках этого испытания вы повысите безопасность своего кластера 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.


