Contrôle des accès avec IAM

AI Platform Pipelines dépend des rôles Identity and Access Management (IAM) pour autoriser les utilisateurs, les groupes et les services lorsque les pipelines de machine learning (ML) accèdent aux ressources Google Cloud.

Ce document décrit les rôles requis pour :

Obtenez plus d'informations sur les concepts d'IAM et le fonctionnement d'IAM.

Rôles requis pour configurer AI Platform Pipelines

Pour déployer AI Platform Pipelines, vous devez disposer des rôles Lecteur (roles/viewer) et Administrateur Kubernetes Engine (roles/container.admin) sur le projet. Le rôle Lecteur fournit un accès en lecture à toutes les ressources d'un projet. Le rôle Administrateur Kubernetes Engine fournit un accès complet aux clusters Kubernetes et aux objets d'API Kubernetes.

Pour suivre le principe du moindre privilège, configurez votre cluster AI Platform Pipelines pour bénéficier d'un accès précis. Pour configurer votre cluster avec un accès précis, vous devez également disposer du rôle Administrateur de compte de service (roles/iam.serviceAccountAdmin) sur le projet. Le rôle d'administrateur de compte de service permet de créer et de configurer des comptes de service IAM.

Découvrez comment accorder l'accès aux rôles IAM.

Rôle Autorisations
Lecteur (roles/viewer) Autorisations permettant de réaliser des actions en lecture seule qui n'affectent pas l'état du projet, comme consulter (mais pas modifier) des ressources ou des données existantes.

(roles/container.admin)

Permet la gestion complète des clusters et de leurs objets API Kubernetes.

Pour définir un compte de service sur des nœuds, vous devez également disposer du rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service géré par l'utilisateur que vos nœuds utiliseront.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet

container.*

  • container.apiServices.create
  • container.apiServices.delete
  • container.apiServices.get
  • container.apiServices.getStatus
  • container.apiServices.list
  • container.apiServices.update
  • container.apiServices.updateStatus
  • container.auditSinks.create
  • container.auditSinks.delete
  • container.auditSinks.get
  • container.auditSinks.list
  • container.auditSinks.update
  • container.backendConfigs.create
  • container.backendConfigs.delete
  • container.backendConfigs.get
  • container.backendConfigs.list
  • container.backendConfigs.update
  • container.bindings.create
  • container.bindings.delete
  • container.bindings.get
  • container.bindings.list
  • container.bindings.update
  • container.certificateSigningRequests.approve
  • container.certificateSigningRequests.create
  • container.certificateSigningRequests.delete
  • container.certificateSigningRequests.get
  • container.certificateSigningRequests.getStatus
  • container.certificateSigningRequests.list
  • container.certificateSigningRequests.update
  • container.certificateSigningRequests.updateStatus
  • container.clusterRoleBindings.create
  • container.clusterRoleBindings.delete
  • container.clusterRoleBindings.get
  • container.clusterRoleBindings.list
  • container.clusterRoleBindings.update
  • container.clusterRoles.bind
  • container.clusterRoles.create
  • container.clusterRoles.delete
  • container.clusterRoles.escalate
  • container.clusterRoles.get
  • container.clusterRoles.list
  • container.clusterRoles.update
  • container.clusters.connect
  • container.clusters.create
  • container.clusters.createTagBinding
  • container.clusters.delete
  • container.clusters.deleteTagBinding
  • container.clusters.get
  • container.clusters.getCredentials
  • container.clusters.impersonate
  • container.clusters.list
  • container.clusters.listEffectiveTags
  • container.clusters.listTagBindings
  • container.clusters.update
  • container.componentStatuses.get
  • container.componentStatuses.list
  • container.configMaps.create
  • container.configMaps.delete
  • container.configMaps.get
  • container.configMaps.list
  • container.configMaps.update
  • container.controllerRevisions.create
  • container.controllerRevisions.delete
  • container.controllerRevisions.get
  • container.controllerRevisions.list
  • container.controllerRevisions.update
  • container.cronJobs.create
  • container.cronJobs.delete
  • container.cronJobs.get
  • container.cronJobs.getStatus
  • container.cronJobs.list
  • container.cronJobs.update
  • container.cronJobs.updateStatus
  • container.csiDrivers.create
  • container.csiDrivers.delete
  • container.csiDrivers.get
  • container.csiDrivers.list
  • container.csiDrivers.update
  • container.csiNodeInfos.create
  • container.csiNodeInfos.delete
  • container.csiNodeInfos.get
  • container.csiNodeInfos.list
  • container.csiNodeInfos.update
  • container.csiNodes.create
  • container.csiNodes.delete
  • container.csiNodes.get
  • container.csiNodes.list
  • container.csiNodes.update
  • container.customResourceDefinitions.create
  • container.customResourceDefinitions.delete
  • container.customResourceDefinitions.get
  • container.customResourceDefinitions.getStatus
  • container.customResourceDefinitions.list
  • container.customResourceDefinitions.update
  • container.customResourceDefinitions.updateStatus
  • container.daemonSets.create
  • container.daemonSets.delete
  • container.daemonSets.get
  • container.daemonSets.getStatus
  • container.daemonSets.list
  • container.daemonSets.update
  • container.daemonSets.updateStatus
  • container.deployments.create
  • container.deployments.delete
  • container.deployments.get
  • container.deployments.getScale
  • container.deployments.getStatus
  • container.deployments.list
  • container.deployments.rollback
  • container.deployments.update
  • container.deployments.updateScale
  • container.deployments.updateStatus
  • container.endpointSlices.create
  • container.endpointSlices.delete
  • container.endpointSlices.get
  • container.endpointSlices.list
  • container.endpointSlices.update
  • container.endpoints.create
  • container.endpoints.delete
  • container.endpoints.get
  • container.endpoints.list
  • container.endpoints.update
  • container.events.create
  • container.events.delete
  • container.events.get
  • container.events.list
  • container.events.update
  • container.frontendConfigs.create
  • container.frontendConfigs.delete
  • container.frontendConfigs.get
  • container.frontendConfigs.list
  • container.frontendConfigs.update
  • container.horizontalPodAutoscalers.create
  • container.horizontalPodAutoscalers.delete
  • container.horizontalPodAutoscalers.get
  • container.horizontalPodAutoscalers.getStatus
  • container.horizontalPodAutoscalers.list
  • container.horizontalPodAutoscalers.update
  • container.horizontalPodAutoscalers.updateStatus
  • container.hostServiceAgent.use
  • container.ingresses.create
  • container.ingresses.delete
  • container.ingresses.get
  • container.ingresses.getStatus
  • container.ingresses.list
  • container.ingresses.update
  • container.ingresses.updateStatus
  • container.initializerConfigurations.create
  • container.initializerConfigurations.delete
  • container.initializerConfigurations.get
  • container.initializerConfigurations.list
  • container.initializerConfigurations.update
  • container.jobs.create
  • container.jobs.delete
  • container.jobs.get
  • container.jobs.getStatus
  • container.jobs.list
  • container.jobs.update
  • container.jobs.updateStatus
  • container.leases.create
  • container.leases.delete
  • container.leases.get
  • container.leases.list
  • container.leases.update
  • container.limitRanges.create
  • container.limitRanges.delete
  • container.limitRanges.get
  • container.limitRanges.list
  • container.limitRanges.update
  • container.localSubjectAccessReviews.create
  • container.localSubjectAccessReviews.list
  • container.managedCertificates.create
  • container.managedCertificates.delete
  • container.managedCertificates.get
  • container.managedCertificates.list
  • container.managedCertificates.update
  • container.mutatingWebhookConfigurations.create
  • container.mutatingWebhookConfigurations.delete
  • container.mutatingWebhookConfigurations.get
  • container.mutatingWebhookConfigurations.list
  • container.mutatingWebhookConfigurations.update
  • container.namespaces.create
  • container.namespaces.delete
  • container.namespaces.finalize
  • container.namespaces.get
  • container.namespaces.getStatus
  • container.namespaces.list
  • container.namespaces.update
  • container.namespaces.updateStatus
  • container.networkPolicies.create
  • container.networkPolicies.delete
  • container.networkPolicies.get
  • container.networkPolicies.list
  • container.networkPolicies.update
  • container.nodes.create
  • container.nodes.delete
  • container.nodes.get
  • container.nodes.getStatus
  • container.nodes.list
  • container.nodes.proxy
  • container.nodes.update
  • container.nodes.updateStatus
  • container.operations.get
  • container.operations.list
  • container.persistentVolumeClaims.create
  • container.persistentVolumeClaims.delete
  • container.persistentVolumeClaims.get
  • container.persistentVolumeClaims.getStatus
  • container.persistentVolumeClaims.list
  • container.persistentVolumeClaims.update
  • container.persistentVolumeClaims.updateStatus
  • container.persistentVolumes.create
  • container.persistentVolumes.delete
  • container.persistentVolumes.get
  • container.persistentVolumes.getStatus
  • container.persistentVolumes.list
  • container.persistentVolumes.update
  • container.persistentVolumes.updateStatus
  • container.petSets.create
  • container.petSets.delete
  • container.petSets.get
  • container.petSets.list
  • container.petSets.update
  • container.petSets.updateStatus
  • container.podDisruptionBudgets.create
  • container.podDisruptionBudgets.delete
  • container.podDisruptionBudgets.get
  • container.podDisruptionBudgets.getStatus
  • container.podDisruptionBudgets.list
  • container.podDisruptionBudgets.update
  • container.podDisruptionBudgets.updateStatus
  • container.podPresets.create
  • container.podPresets.delete
  • container.podPresets.get
  • container.podPresets.list
  • container.podPresets.update
  • container.podSecurityPolicies.create
  • container.podSecurityPolicies.delete
  • container.podSecurityPolicies.get
  • container.podSecurityPolicies.list
  • container.podSecurityPolicies.update
  • container.podSecurityPolicies.use
  • container.podTemplates.create
  • container.podTemplates.delete
  • container.podTemplates.get
  • container.podTemplates.list
  • container.podTemplates.update
  • container.pods.attach
  • container.pods.create
  • container.pods.delete
  • container.pods.evict
  • container.pods.exec
  • container.pods.get
  • container.pods.getLogs
  • container.pods.getStatus
  • container.pods.initialize
  • container.pods.list
  • container.pods.portForward
  • container.pods.proxy
  • container.pods.update
  • container.pods.updateStatus
  • container.priorityClasses.create
  • container.priorityClasses.delete
  • container.priorityClasses.get
  • container.priorityClasses.list
  • container.priorityClasses.update
  • container.replicaSets.create
  • container.replicaSets.delete
  • container.replicaSets.get
  • container.replicaSets.getScale
  • container.replicaSets.getStatus
  • container.replicaSets.list
  • container.replicaSets.update
  • container.replicaSets.updateScale
  • container.replicaSets.updateStatus
  • container.replicationControllers.create
  • container.replicationControllers.delete
  • container.replicationControllers.get
  • container.replicationControllers.getScale
  • container.replicationControllers.getStatus
  • container.replicationControllers.list
  • container.replicationControllers.update
  • container.replicationControllers.updateScale
  • container.replicationControllers.updateStatus
  • container.resourceQuotas.create
  • container.resourceQuotas.delete
  • container.resourceQuotas.get
  • container.resourceQuotas.getStatus
  • container.resourceQuotas.list
  • container.resourceQuotas.update
  • container.resourceQuotas.updateStatus
  • container.roleBindings.create
  • container.roleBindings.delete
  • container.roleBindings.get
  • container.roleBindings.list
  • container.roleBindings.update
  • container.roles.bind
  • container.roles.create
  • container.roles.delete
  • container.roles.escalate
  • container.roles.get
  • container.roles.list
  • container.roles.update
  • container.runtimeClasses.create
  • container.runtimeClasses.delete
  • container.runtimeClasses.get
  • container.runtimeClasses.list
  • container.runtimeClasses.update
  • container.scheduledJobs.create
  • container.scheduledJobs.delete
  • container.scheduledJobs.get
  • container.scheduledJobs.list
  • container.scheduledJobs.update
  • container.scheduledJobs.updateStatus
  • container.secrets.create
  • container.secrets.delete
  • container.secrets.get
  • container.secrets.list
  • container.secrets.update
  • container.selfSubjectAccessReviews.create
  • container.selfSubjectAccessReviews.list
  • container.selfSubjectRulesReviews.create
  • container.serviceAccounts.create
  • container.serviceAccounts.createToken
  • container.serviceAccounts.delete
  • container.serviceAccounts.get
  • container.serviceAccounts.list
  • container.serviceAccounts.update
  • container.services.create
  • container.services.delete
  • container.services.get
  • container.services.getStatus
  • container.services.list
  • container.services.proxy
  • container.services.update
  • container.services.updateStatus
  • container.statefulSets.create
  • container.statefulSets.delete
  • container.statefulSets.get
  • container.statefulSets.getScale
  • container.statefulSets.getStatus
  • container.statefulSets.list
  • container.statefulSets.update
  • container.statefulSets.updateScale
  • container.statefulSets.updateStatus
  • container.storageClasses.create
  • container.storageClasses.delete
  • container.storageClasses.get
  • container.storageClasses.list
  • container.storageClasses.update
  • container.storageStates.create
  • container.storageStates.delete
  • container.storageStates.get
  • container.storageStates.getStatus
  • container.storageStates.list
  • container.storageStates.update
  • container.storageStates.updateStatus
  • container.storageVersionMigrations.create
  • container.storageVersionMigrations.delete
  • container.storageVersionMigrations.get
  • container.storageVersionMigrations.getStatus
  • container.storageVersionMigrations.list
  • container.storageVersionMigrations.update
  • container.storageVersionMigrations.updateStatus
  • container.subjectAccessReviews.create
  • container.subjectAccessReviews.list
  • container.thirdPartyObjects.create
  • container.thirdPartyObjects.delete
  • container.thirdPartyObjects.get
  • container.thirdPartyObjects.list
  • container.thirdPartyObjects.update
  • container.thirdPartyResources.create
  • container.thirdPartyResources.delete
  • container.thirdPartyResources.get
  • container.thirdPartyResources.list
  • container.thirdPartyResources.update
  • container.tokenReviews.create
  • container.updateInfos.create
  • container.updateInfos.delete
  • container.updateInfos.get
  • container.updateInfos.list
  • container.updateInfos.update
  • container.validatingWebhookConfigurations.create
  • container.validatingWebhookConfigurations.delete
  • container.validatingWebhookConfigurations.get
  • container.validatingWebhookConfigurations.list
  • container.validatingWebhookConfigurations.update
  • container.volumeAttachments.create
  • container.volumeAttachments.delete
  • container.volumeAttachments.get
  • container.volumeAttachments.getStatus
  • container.volumeAttachments.list
  • container.volumeAttachments.update
  • container.volumeAttachments.updateStatus
  • container.volumeSnapshotClasses.create
  • container.volumeSnapshotClasses.delete
  • container.volumeSnapshotClasses.get
  • container.volumeSnapshotClasses.list
  • container.volumeSnapshotClasses.update
  • container.volumeSnapshotContents.create
  • container.volumeSnapshotContents.delete
  • container.volumeSnapshotContents.get
  • container.volumeSnapshotContents.getStatus
  • container.volumeSnapshotContents.list
  • container.volumeSnapshotContents.update
  • container.volumeSnapshotContents.updateStatus
  • container.volumeSnapshots.create
  • container.volumeSnapshots.delete
  • container.volumeSnapshots.get
  • container.volumeSnapshots.getStatus
  • container.volumeSnapshots.list
  • container.volumeSnapshots.update
  • container.volumeSnapshots.updateStatus

recommender.containerDiagnosisInsights.*

  • recommender.containerDiagnosisInsights.get
  • recommender.containerDiagnosisInsights.list
  • recommender.containerDiagnosisInsights.update

recommender.containerDiagnosisRecommendations.*

  • recommender.containerDiagnosisRecommendations.get
  • recommender.containerDiagnosisRecommendations.list
  • recommender.containerDiagnosisRecommendations.update

recommender.locations.*

  • recommender.locations.get
  • recommender.locations.list

recommender.networkAnalyzerGkeConnectivityInsights.*

  • recommender.networkAnalyzerGkeConnectivityInsights.get
  • recommender.networkAnalyzerGkeConnectivityInsights.list
  • recommender.networkAnalyzerGkeConnectivityInsights.update

recommender.networkAnalyzerGkeIpAddressInsights.*

  • recommender.networkAnalyzerGkeIpAddressInsights.get
  • recommender.networkAnalyzerGkeIpAddressInsights.list
  • recommender.networkAnalyzerGkeIpAddressInsights.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/iam.serviceAccountAdmin)

Créer et gérer des comptes de service

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Compte de service

iam.serviceAccounts.create

iam.serviceAccounts.delete

iam.serviceAccounts.disable

iam.serviceAccounts.enable

iam.serviceAccounts.get

iam.serviceAccounts.getIamPolicy

iam.serviceAccounts.list

iam.serviceAccounts.setIamPolicy

iam.serviceAccounts.undelete

iam.serviceAccounts.update

resourcemanager.projects.get

resourcemanager.projects.list

Rôles requis pour exécuter AI Platform Pipelines avec un compte de service géré par l'utilisateur

Les pods d'un cluster Google Kubernetes Engine (GKE) s'authentifient sur Google Cloud à l'aide du compte de service du cluster GKE. Pour faciliter la configuration et l'utilisation d'AI Platform Pipelines, les clusters GKE créés par AI Platform Pipelines utilisent le compte de service Compute Engine par défaut avec le champ d'application d'accès https://www.googleapis.com/auth/cloud-platform. Ce champ d'application fournit un accès complet aux ressources et aux API Google Cloud que vous avez activées dans votre projet, ce qui peut fournir aux charges de travail de votre cluster un accès excessif à Google Cloud.

Pour attribuer des autorisations précises aux charges de travail exécutées sur votre cluster AI Platform Pipelines, créez un compte de service pour votre cluster et accordez-lui l'accès aux rôles suivants au niveau du projet :

  • Lecteur Monitoring : Le rôle Lecteur Monitoring (roles/monitoring.viewer) accorde un accès en lecture aux données et aux configurations Monitoring.
  • Rédacteur de métriques Monitoring : Le rôle Rédacteur de métriques Monitoring (roles/monitoring.metricWriter) fournit un accès en écriture pour que votre cluster puisse écrire des métriques.
  • Rédacteur de journaux : Le rôle Rédacteur de journaux (roles/logging.logWriter) permet au cluster d'écrire des entrées de journal.
  • Lecteur des objets Storage : Si vous envisagez de créer des images de conteneurs personnalisées pour vos pipelines stockés dans Container Registry, accordez à votre cluster AI Platform Pipelines l'accès au rôle Lecteur des objets Storage (roles/storage.objectViewer) au niveau du projet.

Vous devez également autoriser votre compte de service à accéder à toutes les ressources ou API Google Cloud utilisées par vos pipelines de ML.

Rôle Titre Description Autorisations

(roles/monitoring.viewer)

Fournit un accès en lecture seule permettant d'obtenir et de répertorier des informations sur toutes les configurations et les données de surveillance.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet

cloudnotifications.activities.list

monitoring.alertPolicies.get

monitoring.alertPolicies.list

monitoring.dashboards.get

monitoring.dashboards.list

monitoring.groups.get

monitoring.groups.list

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

  • monitoring.monitoredResourceDescriptors.get
  • monitoring.monitoredResourceDescriptors.list

monitoring.notificationChannelDescriptors.*

  • monitoring.notificationChannelDescriptors.get
  • monitoring.notificationChannelDescriptors.list

monitoring.notificationChannels.get

monitoring.notificationChannels.list

monitoring.publicWidgets.get

monitoring.publicWidgets.list

monitoring.services.get

monitoring.services.list

monitoring.slos.get

monitoring.slos.list

monitoring.snoozes.get

monitoring.snoozes.list

monitoring.timeSeries.list

monitoring.uptimeCheckConfigs.get

monitoring.uptimeCheckConfigs.list

opsconfigmonitoring.resourceMetadata.list

resourcemanager.projects.get

resourcemanager.projects.list

stackdriver.projects.get

stackdriver.resourceMetadata.list

(roles/monitoring.metricWriter)

Fournit un accès en écriture seule aux métriques. Ce rôle fournit exactement les autorisations nécessaires à l'agent Cloud Monitoring et aux autres systèmes pour envoyer des métriques.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

  • monitoring.monitoredResourceDescriptors.get
  • monitoring.monitoredResourceDescriptors.list

monitoring.timeSeries.create

(roles/logging.logWriter)

Fournit les autorisations nécessaires pour écrire des entrées de journal.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet

logging.logEntries.create

logging.logEntries.route

(roles/storage.objectViewer)

Permet d'afficher les objets et leurs métadonnées, à l'exclusion des listes de contrôle d'accès. Peut aussi répertorier les objets d'un bucket.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Bucket

resourcemanager.projects.get

resourcemanager.projects.list

storage.managedFolders.get

storage.managedFolders.list

storage.objects.get

storage.objects.list

Rôles requis pour accéder à AI Platform Pipelines en tant qu'utilisateur

Pour accéder à un cluster AI Platform Pipelines, chaque utilisateur doit disposer du rôle Lecteur de cluster Kubernetes Engine (roles/container.clusterViewer) et du rôle Utilisateur du compte de service pour le compte de service du cluster Google Kubernetes Engine.

Rôle Titre Description Autorisations

(roles/container.clusterViewer)

Fournit un accès permettant d'obtenir et de regrouper les clusters GKE.

container.clusters.get

container.clusters.list

resourcemanager.projects.get

resourcemanager.projects.list

Passez à la section suivante pour savoir comment accorder aux utilisateurs l'accès aux rôles Lecteur de cluster Kubernetes Engine et Utilisateur du compte de service.

Accorder à un utilisateur l'accès à AI Platform Pipelines

Suivez les instructions ci-dessous pour autoriser un compte utilisateur à accéder à votre cluster AI Platform Pipelines.

  1. Ouvrez AI Platform Pipelines dans Google Cloud Console.

    Accéder à AI Platform Pipelines

  2. Recherchez votre cluster AI Platform Pipelines. Prenez note du cluster et de la zone à utiliser dans les étapes suivantes.

  3. Ouvrez une session Cloud Shell.

    Ouvrir Cloud Shell

    Cloud Shell s'ouvre dans un cadre au bas de Google Cloud Console. Utilisez Cloud Shell pour effectuer le reste de cette procédure.

  4. Exécutez la commande suivante pour définir le projet Google Cloud par défaut pour cette session Cloud Shell.

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

  5. Exécutez la commande suivante pour trouver le compte de service utilisé par votre cluster GKE.

    gcloud container clusters describe CLUSTER_NAME --zone ZONE \
    --format="flattened(nodePools[].config.serviceAccount)"
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster GKE.
    • ZONE : zone dans laquelle votre cluster a été créé.

    La réponse peut indiquer que votre cluster utilise un compte de service nommé default. Cette valeur fait référence au compte de service par défaut pour Compute Engine. Exécutez la commande suivante pour obtenir le nom complet de ce compte de service.

    gcloud iam service-accounts list \
    --filter "compute@developer.gserviceaccount.com"
    

    Apprenez-en plus sur le compte de service Compute Engine par défaut.

  6. Attribuez à votre compte utilisateur le rôle Utilisateur du compte de service sur le compte de service de votre cluster GKE.

    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME \
    --member=user:USERNAME \
    --role=roles/iam.serviceAccountUser
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service de votre cluster GKE, que vous avez trouvé à l'étape précédente. Le format des noms de compte de service est *@*.gserviceaccount.com.
    • USERNAME : votre nom d'utilisateur sur Google Cloud.
  7. Attribuez à votre compte utilisateur le rôle Lecteur de cluster GKE sur le projet.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USERNAME --role roles/container.clusterViewer
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • USERNAME : votre nom d'utilisateur sur Google Cloud.