Points clés
- ✓RBAC fonctionne en 2 étapes : Role (permissions) + RoleBinding (attribution).
- ✓'Principe fondamental: accorder le minimum de privilèges nécessaires.'
RBAC (Role-Based Access Control) est le mécanisme natif de Kubernetes pour gérer qui peut faire quoi dans votre cluster. En tant que débutant, comprendre les bases de RBAC vous permet de sécuriser vos premiers déploiements et de préparer les concepts avancés abordés dans les certifications CKA et CKS.
TL;DR : RBAC fonctionne en deux étapes : (1) créez un Role qui liste les permissions, (2) créez un RoleBinding qui attribue ce Role à un utilisateur. Principe fondamental : accordez toujours le minimum de privilèges nécessaires.
Ce sujet est couvert dans la formation Kubernetes, les fondamentaux.
Qu'est-ce que RBAC en termes simples ?
RBAC signifie "Role-Based Access Control" (contrôle d'accès basé sur les rôles). C'est comme un système de badges dans une entreprise : chaque badge donne accès à certaines salles, pas à toutes.
Dans Kubernetes, RBAC répond à trois questions :
| Question | Terme RBAC | Exemple |
|---|---|---|
| Qui ? | Subject | L'utilisateur "alice" |
| Peut faire quoi ? | Verbs | Lire, créer, supprimer |
| Sur quoi ? | Resources | Pods, Services, ConfigMaps |
À retenir : RBAC est activé par défaut depuis Kubernetes 1.8. Vérifiez avec kubectl api-versions | grep rbac.
Les deux objets essentiels : Role et RoleBinding
Pour débuter, concentrez-vous sur deux objets seulement :
1. Le Role : définir les permissions
Un Role liste ce qui est autorisé dans un namespace spécifique :
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev # Ce Role s'applique uniquement au namespace "dev"
name: lecteur-pods # Nom du Role
rules:
- apiGroups: [""] # "" = core API (pods, services, etc.)
resources: ["pods"] # Ressources concernées
verbs: ["get", "list", "watch"] # Actions autorisées
Verbes courants :
get: lire une ressource spécifiquelist: lister toutes les ressources d'un typewatch: observer les changements en temps réelcreate,update,delete: modifier les ressources
2. Le RoleBinding : attribuer les permissions
Un RoleBinding associe un Role à un utilisateur ou un groupe :
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: alice-lecteur-pods
namespace: dev
subjects:
- kind: User
name: alice # L'utilisateur qui reçoit les permissions
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: lecteur-pods # Le Role à appliquer
apiGroup: rbac.authorization.k8s.io
À retenir : Un RoleBinding lie UN Role à UN ou plusieurs utilisateurs dans UN namespace.
Exemple pratique : restreindre l'accès aux pods
Voici comment créer un accès en lecture seule aux pods du namespace "dev" :
# Étape 1 : Créer le Role
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev
name: lecteur-pods
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
EOF
# Étape 2 : Créer le RoleBinding
kubectl create rolebinding alice-lecteur \
--role=lecteur-pods \
--user=alice \
--namespace=dev
# Étape 3 : Vérifier les permissions
kubectl auth can-i list pods --namespace=dev --as=alice
# Résultat attendu : yes
kubectl auth can-i delete pods --namespace=dev --as=alice
# Résultat attendu : no
Pourquoi RBAC est important pour la sécurité ?
Sans RBAC, tous les utilisateurs auraient accès à tout. Voici les risques :
| Risque | Conséquence | Solution RBAC |
|---|---|---|
| Accès aux Secrets | Fuite de mots de passe | Role sans accès aux secrets |
| Suppression de pods | Interruption de service | Verbs "get, list" uniquement |
| Accès inter-namespaces | Données exposées | Roles limités par namespace |
Selon Cloud Native Now, les équipes IT passent 34 jours par an à résoudre des problèmes Kubernetes. Une bonne configuration RBAC évite de nombreux incidents.
Et pour aller plus loin ?
Cette page couvre les bases de RBAC pour la formation d'une journée. Pour les cas avancés :
| Concept | Niveau | Formation |
|---|---|---|
| ClusterRole | CKA | Permissions sur tout le cluster |
| ClusterRoleBinding | CKA | Attribution cluster-wide |
| ServiceAccounts | CKA | Identités pour applications |
| Aggregated ClusterRoles | CKS | Combinaison de rôles |
Consultez la formation LFS458 Administration Kubernetes (4 jours) pour approfondir ces concepts et préparer la certification CKA.
Commandes kubectl essentielles pour RBAC
# Lister les Roles d'un namespace
kubectl get roles -n dev
# Lister les RoleBindings
kubectl get rolebindings -n dev
# Voir les détails d'un Role
kubectl describe role lecteur-pods -n dev
# Tester les permissions d'un utilisateur
kubectl auth can-i create pods --as=alice -n dev
# Lister TOUTES les permissions d'un utilisateur
kubectl auth can-i --list --as=alice -n dev
Passez à l'action
Vous avez découvert les bases de RBAC. Pour mettre en pratique :
- Créez un namespace de test :
kubectl create namespace rbac-test - Appliquez les exemples de cette page
- Testez avec
kubectl auth can-ipour vérifier vos configurations
La formation Kubernetes, les fondamentaux inclut un lab pratique sur RBAC où vous restreignez l'accès aux données sensibles sous la guidance d'un formateur expert.
Contactez nos conseillers pour planifier votre formation.