Controllo dell'accesso con IAM

AI Platform Pipelines dipende dai ruoli IAM (Identity and Access Management) per autorizzare utenti, gruppi e servizi durante le pipeline di machine learning (ML) per accedere alle risorse Google Cloud.

Questo documento descrive i ruoli necessari per:

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

Ruoli necessari per configurare AI Platform Pipelines

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

Per seguire il principio del privilegio minimo, configura il tuo cluster AI Platform Pipelines in modo da utilizzare l'accesso granulare. Per configurare con accesso granulare, ti deve essere concesso anche l'account di servizio Ruolo Amministratore (roles/iam.serviceAccountAdmin) per il progetto. Il ruolo Amministratore account di servizio consente di creare e configurare account di servizio IAM.

Scopri di più sulla concessione dell'accesso ai ruoli IAM.

Ruolo Autorizzazioni
Visualizzatore (roles/viewer) Autorizzazioni per azioni di sola lettura che non influiscono sullo stato, come visualizzare (ma non modificare) risorse o dati esistenti al suo interno di un progetto.

(roles/container.admin)

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

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

Risorse di livello più basso a 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 i service account.

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

  • Account di servizio

iam.serviceAccounts.create

iam.serviceAccounts.createTagBinding

iam.serviceAccounts.delete

iam.serviceAccounts.deleteTagBinding

iam.serviceAccounts.disable

iam.serviceAccounts.enable

iam.serviceAccounts.get

iam.serviceAccounts.getIamPolicy

iam.serviceAccounts.list

iam.serviceAccounts.listEffectiveTags

iam.serviceAccounts.listTagBindings

iam.serviceAccounts.setIamPolicy

iam.serviceAccounts.undelete

iam.serviceAccounts.update

resourcemanager.projects.get

resourcemanager.projects.list

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

I pod in un cluster Google Kubernetes Engine (GKE) si autenticano su 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 Compute Engine predefinito con l'ambito di accesso https://www.googleapis.com/auth/cloud-platform. Questo ambito di accesso fornisce l'accesso completo alle API e alle risorse Google Cloud che hai attivato 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 AI Platform Pipelines, crea un account di servizio per il cluster e concedi questo account di servizio accede ai seguenti ruoli nel progetto:

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

Devi inoltre concedere al tuo account di servizio l'accesso a qualsiasi account Google Cloud risorse o API utilizzate 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 del monitoraggio.

Risorse di livello più basso a 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.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 in sola scrittura alle metriche. Fornisce esattamente le autorizzazioni necessarie all'agente Cloud Monitoring e ad altri sistemi che inviano metriche.

Risorse di livello più basso a 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 a cui puoi concedere questo ruolo:

  • Bucket

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.get

storage.folders.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 di AI Platform Pipelines, a ogni utente deve essere concesso il ruolo visualizzatore del cluster Kubernetes Engine (roles/container.clusterViewer) e il ruolo utente dell'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

Passa alla sezione successiva per scoprire come concedere agli utenti l'accesso al il ruolo Visualizzatore cluster Kubernetes Engine e il 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 tuo del cluster AI Platform Pipelines.

  1. Apri le pipeline della piattaforma AI nella console Google Cloud.

    Vai ad AI Platform Pipelines

  2. Trova il tuo cluster AI Platform Pipelines. Prendi nota il cluster e la zona da utilizzare 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 le funzionalità di Cloud Shell per completare il resto del processo.

  4. Esegui questo comando per impostare il progetto Google Cloud predefinito 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 dei 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 tuo cluster utilizza un account di servizio chiamato default. Questo valore si riferisce all'account di servizio predefinito per in Compute Engine. Esegui questo comando per trovare il nome completo l'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 nell'account di servizio del tuo 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 tuo cluster GKE, che hai trovato nel passaggio precedente. I nomi degli account di servizio hanno il seguente formato: *@*.gserviceaccount.com.
    • USERNAME: il tuo nome utente su Google Cloud.
  7. Concedi al tuo account utente l'accesso al ruolo visualizzatore del 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.