Kubernetes Role-Based Access Control(RBAC)
Contrôle d'accès basé sur les rôles (RBAC)
Kubernetes dispose d'un module d'autorisation nommé Contrôle d'accès basé sur les rôles (RBAC) qui permet de définir les autorisations d'utilisation du serveur API.
Le modèle d'autorisation de RBAC est constitué de trois parties distinctes :
Rôle/ClusterRole - La permission réelle. Il contient des règles qui représentent un ensemble d'autorisations. Chaque règle contient des ressources et des verbes. Le verbe est l'action qui s'appliquera sur la ressource.
Sujet (utilisateur, groupe ou compte de service) - L'objet qui recevra les autorisations.
RoleBinding/ClusterRoleBinding - La connexion entre Rôle/ClusterRole et le sujet.
La différence entre les "Rôles" et les "ClusterRoles" réside simplement dans l'endroit où le rôle sera appliqué - un "Rôle" accordera l'accès à un seul espace de noms spécifique, tandis qu'un "ClusterRole" peut être utilisé dans tous les espaces de noms du cluster. De plus, les ClusterRoles peuvent également accorder l'accès à :
des ressources à portée de cluster (comme les nœuds).
des points de terminaison sans ressource (comme /healthz).
des ressources à portée de namespace (comme les Pods), dans tous les espaces de noms.
À partir de Kubernetes 1.6, les politiques RBAC sont activées par défaut. Mais pour activer RBAC, vous pouvez utiliser quelque chose comme :
Modèles
Dans le modèle d'un Rôle ou d'un ClusterRole, vous devrez indiquer le nom du rôle, l'espace de noms (dans les rôles) et ensuite les apiGroups, resources et verbs du rôle :
Les apiGroups sont un tableau qui contient les différentes espaces de noms API auxquels cette règle s'applique. Par exemple, une définition de Pod utilise apiVersion: v1. Il peut avoir des valeurs telles que rbac.authorization.k8s.io ou [*].
Les resources sont un tableau qui définit les ressources auxquelles cette règle s'applique. Vous pouvez trouver toutes les ressources avec :
kubectl api-resources --namespaced=true
Les verbs sont un tableau qui contient les verbes autorisés. Le verbe dans Kubernetes définit le type d'action que vous devez appliquer à la ressource. Par exemple, le verbe "list" est utilisé contre les collections tandis que "get" est utilisé contre une seule ressource.
Verbes de règles
(Ces informations ont été prises ici)
Verbe HTTP | Verbe de requête |
---|---|
POST | create |
GET, HEAD | get (pour les ressources individuelles), list (pour les collections, y compris le contenu complet de l'objet), watch (pour regarder une ressource individuelle ou une collection de ressources) |
PUT | update |
PATCH | patch |
DELETE | delete (pour les ressources individuelles), deletecollection (pour les collections) |
Kubernetes vérifie parfois l'autorisation pour des autorisations supplémentaires en utilisant des verbes spécialisés. Par exemple :
verbe
use
sur les ressourcespodsecuritypolicies
dans le groupe APIpolicy
.
verbes
bind
etescalate
sur les ressourcesroles
etclusterroles
dans le groupe APIrbac.authorization.k8s.io
.
verbe
impersonate
sur lesutilisateurs
,groupes
etcomptes de service
dans le groupe API de base, et lesuserextras
dans le groupe APIauthentication.k8s.io
.
Vous pouvez trouver **t
Dernière mise à jour