Controllo dell'accesso con IAM

AI Platform Pipelines si basa sui ruoli IAM (Identity and Access Management) per autorizzare utenti, gruppi e servizi quando le pipeline di machine learning (ML) accedono alle risorse Google Cloud.

Questo documento descrive i ruoli richiesti per:

Scopri di più sui concetti IAM e sul suo funzionamento.

Ruoli richiesti per configurare AI Platform Pipelines

Per eseguire il deployment di AI Platform Pipelines, devi disporre dei ruoli Visualizzatore (roles/viewer) e Amministratore Kubernetes Engine (roles/container.admin) per il progetto. Il ruolo Visualizzatore fornisce l'accesso in lettura a tutte le risorse di un progetto. Il ruolo Amministratore Kubernetes Engine fornisce accesso completo ai cluster Kubernetes e agli oggetti API Kubernetes.

Per seguire il principio del privilegio minimo, configura il cluster AI Platform Pipelines per l'utilizzo dell'accesso granulare. Per configurare il cluster con accesso granulare, devi disporre anche del ruolo Amministratore account di servizio (roles/iam.serviceAccountAdmin) per il progetto. Il ruolo Amministratore account di servizio fornisce l'accesso per creare e configurare gli account di servizio IAM.

Scopri di più su come concedere l'accesso ai ruoli IAM.

Ruolo Autorizzazioni
Visualizzatore (roles/viewer) Autorizzazioni per azioni di sola lettura senza effetto sullo stato, ad esempio la visualizzazione (ma non la modifica) di risorse o dati esistenti all'interno di un progetto.

(roles/container.admin)

Fornisce l'accesso alla gestione completa dei cluster e dei relativi oggetti API Kubernetes.

Per impostare un account di servizio sui nodi, devi anche avere il ruolo Utente account di servizio (roles/iam.serviceAccountUser) nell'account di servizio gestito dall'utente che verrà utilizzato dai nodi.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Progetto

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)

Crea e gestisce gli account di servizio.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Account di servizio

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

Ruoli richiesti per eseguire AI Platform Pipelines con un account di servizio gestito dall'utente

I pod su un cluster Google Kubernetes Engine (GKE) vengono autenticati in Google Cloud utilizzando l'account di servizio del cluster GKE. Per semplificare la configurazione e l'utilizzo di AI Platform Pipelines, i cluster GKE creati da AI Platform Pipelines utilizzano l'account di servizio predefinito di Compute Engine con l'ambito di accesso https://www.googleapis.com/auth/cloud-platform. Questo ambito di accesso fornisce accesso completo alle risorse e alle API Google Cloud che hai abilitato nel tuo progetto, il che potrebbe fornire ai carichi di lavoro sul tuo cluster un accesso eccessivo a Google Cloud.

Per assegnare autorizzazioni granulari ai carichi di lavoro in esecuzione sul tuo cluster AI Platform Pipelines, crea un account di servizio per il cluster e concedi a questo account di servizio l'accesso ai seguenti ruoli del progetto:

  • Visualizzatore Monitoring: il ruolo Visualizzatore Monitoring (roles/monitoring.viewer) fornisce l'accesso in lettura ai dati e alle configurazioni di monitoraggio.
  • Writer metriche Monitoring: il ruolo Writer metriche Monitoring (roles/monitoring.metricWriter) fornisce l'accesso in scrittura per consentire al cluster di scrivere metriche.
  • Writer log: il ruolo Writer log (roles/logging.logWriter) consente al cluster di scrivere voci di log.
  • Visualizzatore oggetti Storage: se prevedi di creare immagini container personalizzate per le pipeline archiviate in Container Registry, concedi al cluster AI Platform Pipelines l'accesso al ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) nel progetto.

Devi inoltre concedere all'account di servizio l'accesso a qualsiasi risorsa o API Google Cloud utilizzata dalle tue pipeline ML.

Ruolo Titolo Descrizione Autorizzazioni

(roles/monitoring.viewer)

Fornisce l'accesso di sola lettura per recuperare ed elencare le informazioni su tutti i dati e le configurazioni di monitoraggio.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Progetto

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)

Fornisce l'accesso di sola scrittura alle metriche. Fornisce esattamente le autorizzazioni necessarie all'agente Cloud Monitoring e agli altri sistemi che inviano metriche.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Progetto

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

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

monitoring.timeSeries.create

(roles/logging.logWriter)

Fornisce le autorizzazioni per scrivere voci di log.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Progetto

logging.logEntries.create

logging.logEntries.route

(roles/storage.objectViewer)

Concede l'accesso per visualizzare gli oggetti e i relativi metadati, esclusi gli ACL. Consente anche di elencare gli oggetti in un bucket.

Risorse di livello più basso in cui puoi concedere questo ruolo:

  • Bucket

resourcemanager.projects.get

resourcemanager.projects.list

storage.managedFolders.get

storage.managedFolders.list

storage.objects.get

storage.objects.list

Ruoli richiesti per accedere ad AI Platform Pipelines come utente

Per accedere a un cluster AI Platform Pipelines, a ogni utente devono essere concessi il ruolo Visualizzatore cluster Kubernetes Engine (roles/container.clusterViewer) e il ruolo utente account di servizio per l'account di servizio del cluster Google Kubernetes Engine.

Ruolo Titolo Descrizione Autorizzazioni

(roles/container.clusterViewer)

Fornisce l'accesso per recuperare ed elencare i cluster GKE.

container.clusters.get

container.clusters.list

resourcemanager.projects.get

resourcemanager.projects.list

Vai alla sezione successiva per scoprire come concedere agli utenti l'accesso al ruolo Visualizzatore cluster Kubernetes Engine e al ruolo Utente account di servizio.

Concedere a un utente l'accesso ad AI Platform Pipelines

Segui le istruzioni riportate di seguito per concedere a un account utente l'accesso al cluster AI Platform Pipelines.

  1. Apri AI Platform Pipelines nella console Google Cloud.

    Vai a AI Platform Pipelines

  2. Trova il cluster AI Platform Pipelines. Prendi nota del Cluster e della Zona per utilizzarli nei passaggi successivi.

  3. Apri una sessione di Cloud Shell.

    Apri Cloud Shell

    Cloud Shell si apre in un frame nella parte inferiore della console Google Cloud. Utilizza Cloud Shell per completare il resto del processo.

  4. Esegui questo comando per impostare il progetto Google Cloud predefinito per questa sessione di Cloud Shell.

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.

  5. Esegui questo comando per trovare l'account di servizio utilizzato dal cluster GKE.

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del tuo cluster GKE.
    • ZONE: la zona in cui è stato creato il cluster.

    La risposta potrebbe indicare che il cluster utilizza un account di servizio denominato default. Questo valore si riferisce all'account di servizio predefinito per Compute Engine. Esegui questo comando per trovare il nome completo di questo account di servizio.

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

    Scopri di più sull'account di servizio predefinito di Compute Engine.

  6. Concedi al tuo account utente il ruolo Utente account di servizio per l'account di servizio del cluster GKE.

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

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio del cluster GKE, che hai trovato nel passaggio precedente. I nomi degli account di servizio hanno il formato *@*.gserviceaccount.com.
    • USERNAME: il tuo nome utente su Google Cloud.
  7. Concedi al tuo account utente l'accesso al ruolo Visualizzatore cluster GKE nel progetto.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • USERNAME: il tuo nome utente su Google Cloud.