RBAC et Securite 25 min de lecture

RBAC : Roles et RoleBindings

Role-Based Access Control (RBAC)

RBAC controle qui peut faire quoi dans le cluster Kubernetes.

Concepts cles

  • ServiceAccount : Identite pour les Pods
  • Role : Ensemble de permissions dans un namespace
  • ClusterRole : Ensemble de permissions cluster-wide
  • RoleBinding : Lie un Role a un utilisateur/ServiceAccount
  • ClusterRoleBinding : Lie un ClusterRole cluster-wide

ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: app-sa
  namespace: default

Role

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

RoleBinding

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

ClusterRole (cluster-wide)

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

Utiliser un ServiceAccount dans un Pod

spec:
  serviceAccountName: app-sa
  containers:
  - name: app
    image: myapp

Verbes RBAC

  • get : Lire une ressource
  • list : Lister des ressources
  • watch : Surveiller les changements
  • create : Creer des ressources
  • update : Modifier des ressources
  • patch : Patcher des ressources
  • delete : Supprimer des ressources
Principe du moindre privilege : Donnez uniquement les permissions necessaires, jamais plus.