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.