concept7 min de lecture

RBAC Kubernetes : comprendre et configurer la gestion des accès sur un cluster

SFEIR Institute

Points clés

  • RBAC repose sur 4 objets : Role, ClusterRole, RoleBinding, ClusterRoleBinding.
  • Role définit les permissions, RoleBinding les attribue aux utilisateurs.
  • Maîtriser RBAC est requis pour la certification CKA.
TL;DR : RBAC (Role-Based Access Control) est le mécanisme natif de Kubernetes pour contrôler qui peut faire quoi sur un cluster. Il repose sur quatre objets : Role, ClusterRole, RoleBinding et ClusterRoleBinding. Maîtriser RBAC est indispensable pour sécuriser vos environnements de production et constitue une compétence clé pour la certification CKA.

La formation LFS458 Administration Kubernetes couvre en détail la configuration RBAC sur clusters multi-nœuds.

Qu'est-ce que RBAC dans Kubernetes ?

RBAC (Role-Based Access Control) est un système d'autorisation qui régule l'accès aux ressources Kubernetes en fonction des rôles attribués aux utilisateurs ou aux comptes de service. RBAC définit des permissions granulaires sur les opérations (verbs) applicables aux ressources (pods, services, secrets).

RBAC répond à une question simple : qui peut exécuter quelle action sur quelle ressource, dans quel namespace ?

Les quatre objets RBAC fonctionnent en paires :

ObjetPortéeRôle
RoleNamespaceDéfinit des permissions dans un namespace
ClusterRoleClusterDéfinit des permissions à l'échelle du cluster
RoleBindingNamespaceLie un Role/ClusterRole à des sujets dans un namespace
ClusterRoleBindingClusterLie un ClusterRole à des sujets sur tout le cluster
À retenir : RBAC = Roles (permissions) + Bindings (attribution). Aucune permission n'existe sans un binding explicite.

Pourquoi RBAC est essentiel pour sécuriser un cluster Kubernetes ?

Avec 82% des utilisateurs de conteneurs qui exécutent Kubernetes en production, la sécurité des clusters devient critique. Sans RBAC, tout utilisateur authentifié peut potentiellement accéder à l'ensemble des ressources.

Les équipes IT passent en moyenne 34 jours de travail par an à résoudre des problèmes Kubernetes. Une mauvaise configuration RBAC génère des incidents de sécurité coûteux.

RBAC adresse trois risques majeurs :

  1. Principe du moindre privilège : chaque utilisateur n'accède qu'aux ressources nécessaires à son travail
  2. Isolation des namespaces : les équipes de développement ne peuvent pas impacter les workloads de production
  3. Auditabilité : les bindings documentent explicitement qui possède quelles permissions

L'administration d'un cluster Kubernetes moderne exige une stratégie RBAC dès le premier jour. RBAC constitue la première ligne de défense avant les mécanismes réseau avancés.

Comment fonctionne RBAC dans l'architecture Kubernetes ?

L'architecture du control plane Kubernetes intègre RBAC au niveau de l'API Server. Chaque requête passe par trois étapes :

Requête → Authentication → Authorization (RBAC) → Admission Control → Exécution

L'API Server évalue les règles RBAC pour chaque requête API. Vérifiez que RBAC est activé sur votre cluster :

kubectl api-versions | grep rbac.authorization.k8s.io
# Résultat attendu : rbac.authorization.k8s.io/v1

Les sujets RBAC peuvent être :

  • User : utilisateur humain (géré hors Kubernetes)
  • Group : groupe d'utilisateurs
  • ServiceAccount : compte de service pour les pods
À retenir : Kubernetes ne gère pas les utilisateurs directement. L'authentification est déléguée à des systèmes externes (certificats, OIDC, tokens). RBAC ne gère que l'autorisation.

Quels sont les composants clés de RBAC ?

Roles et ClusterRoles : définir les permissions

Un Role définit des permissions dans un namespace spécifique. Voici un exemple autorisant la lecture des pods :

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: production
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

Un ClusterRole fonctionne à l'échelle du cluster. Utilisez-le pour les ressources non-namespacées (nodes, persistentvolumes) ou pour créer des permissions réutilisables :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

Les verbs correspondent aux opérations HTTP :

VerbOpération HTTPDescription
getGET (unitaire)Lire une ressource
listGET (collection)Lister des ressources
watchGET (streaming)Observer les changements
createPOSTCréer une ressource
updatePUTModifier une ressource
patchPATCHModifier partiellement
deleteDELETESupprimer une ressource

RoleBindings et ClusterRoleBindings : attribuer les permissions

Un RoleBinding lie un Role ou ClusterRole à des sujets dans un namespace :

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: production
subjects:
- kind: User
  name: alice
  apiGroup: rbac.authorization.k8s.io
- kind: ServiceAccount
  name: monitoring-sa
  namespace: monitoring
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Un ClusterRoleBinding attribue des permissions cluster-wide. Utilisez-le avec précaution :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-admin-binding
subjects:
- kind: User
  name: admin@example.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
À retenir : Un ClusterRole lié par un RoleBinding n'accorde des permissions que dans le namespace du binding. Combinez ClusterRoles réutilisables avec des RoleBindings par namespace.

Comment configurer RBAC étape par étape ?

Pour configurer le réseau et les accès sur votre cluster, suivez cette procédure RBAC :

Étape 1 : Créer un ServiceAccount

kubectl create serviceaccount deployer -n staging

Étape 2 : Définir un Role avec les permissions nécessaires

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: staging
  name: deployer-role
rules:
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch", "create", "update", "patch"]

Étape 3 : Créer le RoleBinding

kubectl create rolebinding deployer-binding \
  --role=deployer-role \
  --serviceaccount=staging:deployer \
  -n staging

Étape 4 : Vérifier les permissions

kubectl auth can-i create deployments --as=system:serviceaccount:staging:deployer -n staging
# Résultat : yes

kubectl auth can-i delete secrets --as=system:serviceaccount:staging:deployer -n staging
# Résultat : no

La commande kubectl auth can-i est indispensable pour déboguer RBAC. Testez systématiquement avant de déployer en production.

Quelles sont les bonnes pratiques RBAC en production ?

Les organisations qui gèrent en moyenne 20+ clusters doivent standardiser leur approche RBAC. Selon un CTO interviewé dans le rapport Spectro Cloud 2025 : « Just given the capabilities that exist with Kubernetes, and the company's desire to consume more AI tools, we will use Kubernetes more in future. »

Appliquez ces principes :

  1. Principe du moindre privilège : commencez sans permission et ajoutez uniquement le nécessaire
  2. Namespaces comme frontières : isolez les environnements (dev, staging, prod) par namespace
  3. ClusterRoles réutilisables : créez des rôles standards (viewer, editor, admin) liés par RoleBindings
  4. Évitez cluster-admin : ne distribuez jamais le ClusterRole cluster-admin aux développeurs
  5. Auditez régulièrement : listez les bindings avec kubectl get rolebindings,clusterrolebindings -A

Pour déployer un cluster multi-nœuds, prévoyez dès l'installation une stratégie RBAC cohérente.

Exemple de ClusterRole "viewer" réutilisable :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: namespace-viewer
rules:
- apiGroups: ["", "apps", "batch"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]

Ce ClusterRole peut ensuite être lié dans chaque namespace via des RoleBindings distincts, évitant la duplication.

La formation LFS460 Sécurité Kubernetes approfondit les stratégies RBAC avancées comme l'agrégation de ClusterRoles.

Quand utiliser RBAC vs d'autres mécanismes d'autorisation ?

RBAC n'est pas le seul mode d'autorisation Kubernetes. Comparez les options :

ModeCas d'usageLimites
RBACProduction multi-tenant, équipes multiplesComplexité croissante avec le nombre de rôles
ABACRègles basées sur attributsConfiguration statique (fichier), peu flexible
WebhookAutorisation externe (OPA, custom)Latence réseau, point de défaillance
NodeKubelet uniquementAutomatique, pas configurable

RBAC convient à 90% des cas. Combinez-le avec des Admission Controllers (OPA Gatekeeper) pour des politiques avancées.

La FAQ administration de cluster Kubernetes répond aux questions fréquentes sur RBAC.

Comment déboguer les problèmes RBAC ?

Les erreurs RBAC se manifestent par des messages "Forbidden". Diagnostiquez avec ces commandes :

# Vérifier les permissions d'un utilisateur
kubectl auth can-i --list --as=alice -n production

# Identifier les RoleBindings d'un namespace
kubectl get rolebindings -n production -o wide

# Inspecter un RoleBinding
kubectl describe rolebinding read-pods -n production

# Vérifier les permissions d'un ServiceAccount
kubectl auth can-i --list --as=system:serviceaccount:production:app-sa -n production

Pour déployer votre premier cluster en 30 minutes, testez RBAC dès l'installation avec un utilisateur non-admin.

Comme le recommande TealHQ : « Don't let your knowledge remain theoretical - set up a real Kubernetes environment to solidify your skills. » La pratique sur un cluster de test est essentielle pour maîtriser RBAC.

À retenir : Activez les audit logs de l'API Server pour tracer les décisions RBAC en production. Les logs révèlent quelle règle a autorisé ou refusé chaque requête.

Passez à l'action : formez-vous à l'administration Kubernetes

La maîtrise de RBAC est évaluée dans la certification CKA. Selon un retour d'expérience TechiesCamp : « The CKA exam tested practical, useful skills. It wasn't just theory - it matched real-world situations you'd actually run into when working with Kubernetes. »

Pour approfondir la gestion des accès et l'administration de cluster, SFEIR Institute propose :

Consultez le guide complet Formation Kubernetes pour identifier le parcours adapté à votre profil. Contactez nos conseillers pour planifier votre montée en compétences.