concept4 min de lecture

RBAC Kubernetes : introduction au contrôle d'accès

SFEIR Institute

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 :

QuestionTerme RBACExemple
Qui ?SubjectL'utilisateur "alice"
Peut faire quoi ?VerbsLire, créer, supprimer
Sur quoi ?ResourcesPods, 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écifique
  • list : lister toutes les ressources d'un type
  • watch : observer les changements en temps réel
  • create, 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 :

RisqueConséquenceSolution RBAC
Accès aux SecretsFuite de mots de passeRole sans accès aux secrets
Suppression de podsInterruption de serviceVerbs "get, list" uniquement
Accès inter-namespacesDonnées exposéesRoles 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 :

ConceptNiveauFormation
ClusterRoleCKAPermissions sur tout le cluster
ClusterRoleBindingCKAAttribution cluster-wide
ServiceAccountsCKAIdentités pour applications
Aggregated ClusterRolesCKSCombinaison 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 :

  1. Créez un namespace de test : kubectl create namespace rbac-test
  2. Appliquez les exemples de cette page
  3. Testez avec kubectl auth can-i pour 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.