Niveaux d'accès dans GKE


Cette page décrit les niveaux d'accès par défaut accordés aux nœuds des clusters Google Kubernetes Engine (GKE).

Que sont les niveaux d'accès ?

Les niveaux d'accès représentent l'ancienne méthode utilisée pour accorder des autorisations aux nœuds et aux charges de travail s'exécutant sur les nœuds si celles-ci utilisent des identifiants par défaut d'application (ADC). Les niveaux d'accès définissent les champs d'application OAuth utilisés dans les appels d'API à partir de bibliothèques clientes ou de gcloud CLI.

Nous vous recommandons de ne pas spécifier vos propres niveaux d'accès. Utilisez plutôt des autorisations IAM ou le contrôle des accès basé sur les rôles (RBAC) Kubernetes pour accorder l'accès à des comptes de service IAM ou Kubernetes spécifiques.

Niveaux d'accès par défaut

Lorsque vous créez un cluster GKE, Google Cloud attribue aux nœuds un ensemble de niveaux d'accès par défaut en fonction du compte de service utilisé par les nœuds. Ces niveaux d'accès activent des fonctionnalités spécifiques pour GKE. Vous pouvez également définir des niveaux d'accès manuellement à l'aide de l'option --scopes lorsque vous créez des clusters standards, des clusters Autopilot ou des pools de nœuds. Vous ne pouvez pas modifier les niveaux d'accès sur des pools de nœuds existants. Pour y remédier, vous devez créer un pool de nœuds avec les nouveaux niveaux d'accès, puis migrer les charges de travail vers ce pool de nœuds.

Les sections suivantes décrivent les niveaux d'accès par défaut que GKE ajoute aux nœuds selon que vous spécifiez un compte de service personnalisé et que vous spécifiez manuellement les niveaux d'accès.

Clusters Autopilot

Compte de service Avez-vous spécifié manuellement des niveaux d'accès ? Niveaux d'accès ajoutés par GKE
Compte de service Compute Engine par défaut Non
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write : ajouté si Cloud Logging est activé
  • https://www.googleapis.com/auth/monitoring : ajouté si Cloud Monitoring est activé
Oui Niveaux d'accès spécifiés manuellement
Compte de service personnalisé Non https://www.googleapis.com/auth/cloud-platform
Oui Niveaux d'accès spécifiés manuellement

Clusters standards

Compte de service Niveaux d'accès spécifiés manuellement ? Niveaux d'accès GKE
Compte de service Compute Engine par défaut Non
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write : ajouté si Cloud Logging est activé
  • https://www.googleapis.com/auth/monitoring : ajouté si Cloud Monitoring est activé
Oui
  • Niveaux d'accès spécifiés manuellement
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write : ajouté si Cloud Logging est activé
  • https://www.googleapis.com/auth/monitoring : ajouté si Cloud Monitoring est activé
Compte de service personnalisé Non
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
Oui
  • Niveaux d'accès spécifiés manuellement
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write : ajouté si Cloud Logging est activé
  • https://www.googleapis.com/auth/monitoring : ajouté si Cloud Monitoring est activé

Configurer un compte de service personnalisé pour les charges de travail

IAM est le système de contrôle d'accès permettant d'accorder des rôles autorisés aux utilisateurs et aux comptes de service au sein de votre projet Google Cloud. Un compte de service est un compte Google spécial qui effectue des tâches, telles que le déploiement d'applications, en votre nom. Vous utilisez IAM pour créer un compte de service, puis des liaisons de stratégie IAM pour sécuriser le compte.

Si vos charges de travail nécessitent un accès à Compute Engine, accordez au compte de service le rôle d'administrateur Compute Engine. Si vos charges de travail doivent extraire des images privées d'Artifact Registry, consultez la section Configurer le contrôle des accès pour les dépôts Artifact Registry.

Créer un compte de service

Pour créer un compte de service personnalisé nommé kubernetes-engine-node-sa, exécutez les commandes suivantes :

export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
  --display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
  --filter='displayName:GKE Node Service Account'`

Accorder des rôles minimaux

Pour configurer le compte de service avec les autorisations et rôles minimaux nécessaires au fonctionnement de votre nœud GKE, exécutez les commandes suivantes, où $PROJECT est votre ID de projet :

export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/logging.logWriter

Accorder des rôles supplémentaires

Pour attribuer le rôle Administrateur Compute Engine au compte de service, exécutez la commande suivante :

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Pour savoir comment accorder aux comptes de service l'accès aux images privées stockées dans Artifact Registry, consultez la section Accorder l'accès aux clusters Google Kubernetes Engine.

Créer un cluster ou un pool de nœuds avec le compte de service personnalisé

Pour créer un cluster qui utilise le compte de service personnalisé, exécutez la commande suivante :

gcloud container clusters create --service-account=$NODE_SA_EMAIL

Pour créer un pool de nœuds dans un cluster existant, exécutez la commande ci-dessous :

gcloud container node-pools create --service-account=$NODE_SA_EMAIL