RBAC (contrôle d’accès basé sur les rôles)
RBAC (Role-Based Access Control) est le mécanisme par lequel Kubernetes décide qui (un utilisateur, un ServiceAccount, un groupe) a le droit de faire quoi (lister, créer, modifier, supprimer) sur quelles ressources. Rien n’est autorisé par défaut : une action non explicitement permise par une règle RBAC est refusée par le serveur API, quelle que soit la ressource visée.
Quatre objets, deux niveaux
Un Role (ou ClusterRole pour une portée qui dépasse un namespace)
liste des permissions : quels verbes (get, list, create,
delete) sur quels types de ressources. Un RoleBinding (ou
ClusterRoleBinding) rattache ce rôle à une identité concrète. Les
deux paires existent séparément parce qu’un même rôle (« lecture
seule sur les Secrets », par exemple) se réutilise souvent pour
plusieurs identités différentes, sans le redéfinir à chaque fois.
Ce que RBAC protège réellement
Un Secret Kubernetes natif n’est protégé par aucun chiffrement par
défaut : son contenu est simplement encodé en base64, trivialement
réversible. Ce qui empêche réellement quelqu’un de le lire, c’est
RBAC : la permission get sur l’objet Secret. Restreindre cette
permission au strict nécessaire, et vérifier qu’aucun rôle trop large
ne traîne (un ClusterRole avec get sur tous les Secrets de tous
les namespaces, distribué par habitude), est le contrôle qui compte
réellement, pas la nature du chiffrement en base64.
L’erreur classique
Élargir une permission pour débloquer un incident, puis oublier de la
retirer une fois l’incident clos. Un audit RBAC régulier (kubectl auth can-i --list sur chaque ServiceAccount qui compte) rattrape ce
que personne ne remarque en fonctionnement normal : les permissions
en trop ne cassent jamais rien, elles se contentent d’exister.