Безопасный доступ к Kubernetes Dashboard
В качестве младшего DevOps-инженера вы повысите безопасность своего кластера Kubernetes, создав read-only (только для чтения) учетную запись службы для Kubernetes Dashboard, тем самым продемонстрируя понимание концепции Role-Based Access Control (RBAC, доступ на основе ролей).
Задачи
- Создайте новую учетную запись службы с именем
read-only-user
в пространстве имен kubernetes-dashboard
, используя предоставленный YAML-файл.
- Создайте
ClusterRole
(кластерную роль) с разрешениями только для чтения для пространства имен по умолчанию, разрешив операции get
, list
и watch
для pods
, services
, nodes
, namespaces
и deployments
.
- Свяжите
ClusterRole
с новой учетной записью службы с именем read-only-user
.
- Сгенерируйте токен для учетной записи службы, который будет использоваться для входа в Dashboard.
Требования
- Работайте в директории
~/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...
Пример вида Dashboard после входа:
- Видимые элементы: Ресурсы пространства имен, Deployments, Pods.
- Невидимые элементы: Операции создания, редактирования и удаления.
Подсказки
- Запустите Minikube и примените файл
recommended.yaml
из официального репозитория Kubernetes Dashboard для развертывания Dashboard.
- Используйте команды
kubectl create
и kubectl apply
.
- Проверьте конфигурации ClusterRole и ClusterRoleBinding.
- Используйте команду
kubectl -n kubernetes-dashboard create token read-only-user
для генерации токена.