Configurer le contrôle d'accès basé sur les rôles (RBAC)
L'authentification est souvent combinée avec le contrôle des accès basé sur les rôles (RBAC) de Kubernetes afin de fournir un contrôle d'accès plus précis aux clusters pour les utilisateurs authentifiés et les comptes de service. Il est recommandé de créer des stratégies RBAC qui utilisent des noms de groupe plutôt que des identifiants d'utilisateur. En associant explicitement vos stratégies RBAC à des groupes, vous pouvez gérer entièrement les droits d'accès des utilisateurs avec votre fournisseur d'identité. Ainsi, le cluster n'a pas besoin d'être mis à jour chaque fois que les privilèges utilisateur sont modifiés. Notez que pour configurer le contrôle des accès basé sur l'appartenance à des groupes de sécurité, vous devez vous assurer que GKE Identity Service est configuré de manière à obtenir les informations d'appartenance aux groupes auprès de votre fournisseur d'identité.
Exemple
Si vous souhaitez que certains utilisateurs authentifiés aient accès aux pods du cluster, créez un ClusterRole
accordant l'accès à ces ressources, comme dans l'exemple suivant :
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pod-reader rules: - apiGroups: [""] # The resource type for which access is granted resources: ["pods"] # The permissions granted by the ClusterRole verbs: ["get", "watch", "list"]
Vous créez ensuite un ClusterRoleBinding
correspondant pour accorder les autorisations dans le ClusterRole
aux utilisateurs concernés (dans ce cas, les membres du groupe de sécurité us-east1-cluster-admins
et l'utilisateur ayant l'ID u98523-4509823
) :
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-pods-admins subjects: # Grants anyone in the "us-east1-cluster-admins" group # read access to Pods in any namespace within this cluster. - kind: Group name: gid-us-east1-cluster-admins # Name is case-sensitive apiGroup: rbac.authorization.k8s.io # Grants this specific user read access to Pods in any # namespace within this cluster - kind: User name: uid-u98523-4509823 apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Dans l'exemple suivant, ce ClusterRoleBinding
accorde les autorisations du ClusterRole
au groupe concerné associé à l'ID 12345678-BBBb-cCCCC-0000-123456789012
. Notez que ce paramètre n'est pertinent que pour les fournisseurs Azure AD et qu'il est disponible pour les clusters Google Distributed Cloud.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pod-reader-binding subjects: # Retrieves group information for the group ID mentioned - kind: Group name: 12345678-BBBb-cCCCC-0000-123456789012 apiGroup: rbac.authorization.k8s.io
Pour en savoir plus sur l'utilisation de l'autorisation RBAC, consultez les pages Configurer le contrôle des accès basé sur les rôles et Utiliser l'autorisation RBAC.
Créer un rôle RBAC pour l'accès à la console Google Cloud
Les utilisateurs authentifiés à l'aide de fournisseurs OIDC peuvent se connecter aux clusters depuis la console Google Cloud ainsi qu'à partir de la ligne de commande.
Les utilisateurs authentifiés qui souhaitent accéder aux ressources d'un cluster dans la console Google Cloud doivent disposer des autorisations Kubernetes appropriées. Si vous ne souhaitez pas accorder à ces utilisateurs des autorisations plus étendues, telles que celles d'un administrateur de cluster, vous pouvez créer un rôle RBAC personnalisé qui inclut les autorisations minimales requises pour afficher les nœuds, les volumes persistants, les pods et les classes de stockage du cluster. Vous pouvez définir cet ensemble d'autorisations en créant une ressource ClusterRole
RBAC (cloud-console-reader
) dans le cluster.
cloud-console-reader
accorde à ses utilisateurs les autorisations get
, list
et watch
sur les nœuds, les volumes persistants, les pods et les classes de stockage du cluster, ce qui leur permet d'afficher des informations détaillées sur ces ressources.
kubectl
Pour créer le ClusterRole
cloud-console-reader
et l'appliquer au cluster, exécutez la commande suivante :
cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cloud-console-reader
rules:
- apiGroups: [""]
resources: ["nodes", "persistentvolumes", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml
Vous pouvez ensuite accorder ce rôle ClusterRole
aux utilisateurs lors de la configuration de vos stratégies d'autorisation, comme décrit dans la section précédente. Notez que les utilisateurs ont également besoin d'autorisations IAM pour afficher les clusters dans la console Google Cloud.