Control de acceso con IAM

AI Platform Pipelines depende de las funciones de administración de identidades y accesos (IAM) para autorizar a usuarios, grupos y servicios cuando las canalizaciones de aprendizaje automático (AA) acceden a los recursos de Google Cloud.

En este documento, se describen las funciones necesarias para hacer lo siguiente:

Obtén más información sobre los conceptos de IAM y su funcionamiento.

Funciones necesarias para configurar AI Platform Pipelines

Para implementar AI Platform Pipelines, debes tener las funciones de visualizador (roles/viewer) y administrador de Kubernetes Engine (roles/container.admin) en el proyecto. La función de visualizador proporciona acceso de lectura a todos los recursos dentro de un proyecto. La función de administrador de Kubernetes Engine proporciona acceso completo a los clústeres de Kubernetes y los objetos de la API de Kubernetes.

Para seguir el principio del menor privilegio, configura tu clúster de AI Platform Pipelines a fin de usar el acceso detallado. Para configurar tu clúster con acceso detallado, también debes tener la función de administrador de cuenta de servicio (roles/iam.serviceAccountAdmin) en el proyecto. Esta función proporciona acceso para crear y configurar cuentas de servicio de IAM.

Obtén más información para otorgar acceso a las funciones de IAM.

Rol Permisos
Visualizador (roles/viewer) Proporciona permisos para acciones de solo lectura que no afectan el estado, como visualizar (pero no modificar) los recursos o datos existentes dentro de un proyecto.

(roles/container.admin)

Proporciona acceso a la administración completa de los clústeres y sus objetos de la API de Kubernetes.

Para configurar una cuenta de servicio en los nodos, también debes tener la función de usuario de la cuenta de servicio (roles/iam.serviceAccountUser ) en la cuenta de servicio administrada por el usuario que usarán tus nodos.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Proyecto

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.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)

Crear y administrar cuentas de servicio

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Cuenta de servicio

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

Funciones necesarias para ejecutar AI Platform Pipelines con una cuenta de servicio administrada por el usuario

Los pods en un clúster de Google Kubernetes Engine (GKE) se autentican en Google Cloud mediante la cuenta de servicio del clúster de GKE. Para facilitar la configuración y el uso de AI Platform Pipelines, los clústeres de GKE que crea AI Platform Pipelines usan la cuenta de servicio de Compute Engine predeterminada con el permiso de acceso https://www.googleapis.com/auth/cloud-platform. Este permiso de acceso proporciona acceso completo a los recursos y a las API de Google Cloud que habilitaste en tu proyecto, lo que puede proporcionar a las cargas de trabajo de tu clúster acceso excesivo a Google Cloud.

Si deseas asignar permisos detallados a las cargas de trabajo que se ejecutan en el clúster de AI Platform Pipelines, crea una cuenta de servicio para el clúster y otorga a esta cuenta de servicio las siguientes funciones en el proyecto:

  • Visualizador de Monitoring: La función de visualizador de Monitoring (roles/monitoring.viewer) proporciona acceso de lectura a los datos y la configuración de supervisión.
  • Escritor de métricas de Monitoring: La función de escritor de métricas de Monitoring (roles/monitoring.metricWriter) proporciona acceso de escritura para que tu clúster pueda escribir métricas.
  • Escritor de registros: La función de escritor de registros (roles/logging.logWriter) permite que tu clúster escriba entradas de registro.
  • Visualizador de objetos de almacenamiento: Si planeas crear imágenes de contenedor personalizadas para las canalizaciones que están almacenadas en Container Registry, otorga al clúster de AI Platform Pipelines la función de visualizador de objetos de almacenamiento roles/storage.objectViewer en el proyecto.

También debes otorgar a tu cuenta de servicio acceso a cualquier recurso o API de Google Cloud que usen las canalizaciones de AA.

Rol Título Descripción Permisos

(roles/monitoring.viewer)

Proporciona acceso de solo lectura para obtener y mostrar información sobre todos los datos de supervisión y la configuración.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Proyecto

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)

Proporciona acceso de solo escritura a las métricas. Esto proporciona de forma exacta los permisos que necesita el agente de Cloud Monitoring y otros sistemas que envían métricas.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Proyecto

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

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

monitoring.timeSeries.create

(roles/logging.logWriter)

Proporciona los permisos para escribir entradas de registro.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto

logging.logEntries.create

logging.logEntries.route

(roles/storage.objectViewer)

Otorga acceso para ver los objetos y sus metadatos, excepto las LCA. También puede crear una lista de los objetos de un bucket.

Recursos de nivel más bajo en los que puedes otorgar este rol:

  • Bucket

resourcemanager.projects.get

resourcemanager.projects.list

storage.managedFolders.get

storage.managedFolders.list

storage.objects.get

storage.objects.list

Funciones necesarias para acceder a AI Platform Pipelines como usuario

A fin de acceder a un clúster de AI Platform Pipelines, cada usuario debe tener la función de visualizador de clústeres de Kubernetes Engine (roles/container.clusterViewer) y la función de usuario de la cuenta de servicio para la cuenta de servicio del clúster de Google Kubernetes Engine.

Rol Título Descripción Permisos

(roles/container.clusterViewer)

Proporciona acceso para obtener y enumerar clústeres de GKE.

container.clusters.get

container.clusters.list

resourcemanager.projects.get

resourcemanager.projects.list

Continúa con la siguiente sección para obtener información sobre cómo otorgar a los usuarios acceso a la función de visualizador de clústeres de Kubernetes Engine y a la función de usuario de la cuenta de servicio.

Otorga a un usuario acceso a AI Platform Pipelines

Usa las siguientes instrucciones para otorgar a una cuenta de usuario acceso a tu clúster de AI Platform Pipelines.

  1. Abre AI Platform Pipelines en la consola de Google Cloud.

    Ir a AI Platform Pipelines

  2. Busca el clúster de AI Platform Pipelines. Toma nota del clúster y la zona para usarlos en pasos posteriores.

  3. Abre una sesión de Cloud Shell.

    Abra Cloud Shell

    Cloud Shell se abrirá en un marco en la parte inferior de la consola de Google Cloud. Usa Cloud Shell para completar el resto de este proceso.

  4. Ejecuta el siguiente comando para establecer el proyecto de Google Cloud predeterminado de esta sesión de Cloud Shell.

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

  5. Ejecuta el siguiente comando para buscar la cuenta de servicio que usa el clúster de GKE.

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster de GKE.
    • ZONE: Es la zona en la que se creó el clúster.

    La respuesta puede indicar que tu clúster usa una cuenta de servicio llamada default. Este valor se refiere a la cuenta de servicio predeterminada para Compute Engine. Ejecuta el siguiente comando para buscar el nombre completo de esta cuenta de servicio.

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

    Obtén más información sobre la cuenta de servicio predeterminada de Compute Engine.

  6. Otorga a tu cuenta de usuario la función de usuario de la cuenta de servicio de tu clúster de GKE.

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

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio del clúster de GKE, que encontraste en el paso anterior. Los nombres de cuentas de servicio tienen el siguiente formato: *@*.gserviceaccount.com.
    • USERNAME: Es tu nombre de usuario en Google Cloud.
  7. Otorga a tu cuenta de usuario la función de visualizador de clústeres de GKE en el proyecto.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud.
    • USERNAME: Es tu nombre de usuario en Google Cloud.