Sécuriser l'accès au tableau de bord Kubernetes
En tant que jeune ingénieur DevOps, vous allez améliorer la sécurité de votre cluster Kubernetes en créant un compte de service en lecture seule pour le tableau de bord Kubernetes, démontrant ainsi votre compréhension du contrôle d'accès basé sur les rôles (Role-Based Access Control - RBAC).
Tâches
- Créer un nouveau compte de service nommé
read-only-user
dans l'espace de noms kubernetes-dashboard
, en utilisant le fichier YAML fourni
- Créer un
ClusterRole
avec des autorisations en lecture seule pour l'espace de noms par défaut, permettant les opérations get
, list
et watch
sur les pods
, services
, nodes
, namespaces
et deployments
- Lier le
ClusterRole
au nouveau compte de service nommé read-only-user
- Générer un jeton pour le compte de service à utiliser pour la connexion au tableau de bord
Exigences
- Travailler dans le répertoire
~/project
- Utiliser l'espace de noms
kubernetes-dashboard
pour le compte de service
- Créer un fichier YAML nommé
read-only-dashboard-access.yaml
- Le compte de service ne devrait avoir que des autorisations de lecture
- Limiter la portée de l'accès à l'espace de noms
default
Fournissez le contenu du fichier 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
Exemples
Exemple de sortie du jeton du compte de service :
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
Exemple de vue du tableau de bord après connexion :
- Visible : Ressources d'espace de noms, Déploiements, Pods
- Non visible : Opérations de création, édition, suppression
Indices
- Démarrez Minikube et appliquez le fichier
recommended.yaml
du dépôt officiel du tableau de bord Kubernetes pour déployer le tableau de bord
- Utilisez les commandes
kubectl create
et kubectl apply
- Vérifiez les configurations de ClusterRole et ClusterRoleBinding
- Utilisez
kubectl -n kubernetes-dashboard create token read-only-user
pour générer le jeton