Zugriffssteuerung mit IAM

AI Platform-Pipelines benötigen IAM-Rollen (Identity and Access Management), um Nutzer, Gruppen und Dienste zu autorisieren, wenn ML-Pipelines auf Google Cloud-Ressourcen zugreifen.

In diesem Dokument werden die Rollen beschrieben, die für Folgendes erforderlich sind:

Mehr über IAM-Konzepte und die Funktionsweise von IAM erfahren

Zum Einrichten von AI Platform-Pipelines erforderliche Rollen

Zum Bereitstellen von AI Platform-Pipelines benötigen Sie die Rollen "Betrachter" (roles/viewer) und "Kubernetes Engine-Administrator" (roles/container.admin) für das Projekt. Die Rolle "Betrachter" gewährt Lesezugriff auf alle Ressourcen in einem Projekt. Die Rolle "Kubernetes Engine-Administrator" bietet vollständigen Zugriff auf Kubernetes-Cluster und Kubernetes API-Objekte.

Wenn Sie dem Prinzip der geringsten Berechtigung folgen möchten, richten Sie Ihren AI Platform Pipelines-Cluster für die Verwendung des detaillierten Zugriffs ein. Zum Einrichten des Clusters mit detailliertem Zugriff benötigen Sie auch die Rolle "Dienstkontoadministrator" (roles/iam.serviceAccountAdmin) für das Projekt. Die Rolle "Dienstkontoadministrator" bietet Zugriff zum Erstellen und Konfigurieren von IAM-Dienstkonten.

Weitere Informationen zum Gewähren von Zugriff auf IAM-Rollen

Rolle Berechtigungen
Betrachter (roles/viewer) Berechtigungen für schreibgeschützte Aktionen, die sich nicht auf den Status auswirken, z. B. das Anzeigen (aber nicht das Ändern) vorhandener Ressourcen oder Daten in einem Projekt.

(roles/container.admin)

Berechtigung zum vollständigen Verwalten von Clustern und den zugehörigen Kubernetes API-Objekten.

Um ein Dienstkonto auf Knoten festzulegen, benötigen Sie auch die Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) auf dem vom Nutzer verwalteten Dienstkonto, das Ihre Knoten verwenden.

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt

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)

Dienstkonten erstellen und verwalten

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Dienstkonto

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

Rollen, die zum Ausführen von AI Platform-Pipelines mit einem vom Nutzer verwalteten Dienstkonto erforderlich sind

Die Pods auf einem Google Kubernetes Engine-Cluster (GKE) authentifizieren sich über das Dienstkonto des GKE-Clusters bei Google Cloud. Zum Vereinfachen der Einrichtung und Verwendung von AI Platform-Pipelines verwenden von AI Platform Pipelines erstellte GKE-Cluster das standardmäßige Compute Engine-Dienstkonto mit dem Zugriffsbereich https://www.googleapis.com/auth/cloud-platform. Dieser Zugriffsbereich bietet uneingeschränkten Zugriff auf die Google Cloud-Ressourcen und APIs, die Sie in Ihrem Projekt aktiviert haben, wodurch die Arbeitslasten auf Ihrem Cluster möglicherweise übermäßig auf Google Cloud zugreifen können.

Damit Sie den Arbeitslasten, die auf Ihrem AI Platform Pipelines-Cluster ausgeführt werden, detaillierte Berechtigungen zuweisen können, erstellen Sie ein Dienstkonto für den Cluster und gewähren diesem Dienstkonto Zugriff auf die folgenden Rollen im Projekt:

  • Monitoring-Betrachter: Die Rolle "Monitoring-Betrachter" (roles/monitoring.viewer) bietet Lesezugriff auf Monitoring-Daten und -Konfigurationen.
  • Monitoring-Messwert-Autor: Die Rolle "Monitoring-Messwert-Autor" (roles/monitoring.metricWriter) bietet Schreibzugriff, damit Ihr Cluster Messwerte schreiben kann.
  • Logautor: Mit der Rolle "Logautor" (roles/logging.logWriter) kann der Cluster Logeinträge schreiben.
  • Storage-Objekt-Betrachter: Wenn Sie benutzerdefinierte Container-Images für Ihre in Container Registry gespeicherten Pipelines erstellen möchten, gewähren Sie dem AI Platform-Pipelines-Cluster Zugriff auf die Rolle "Storage-Objekt-Betrachter" (roles/storage.objectViewer) im Projekt.

Außerdem müssen Sie Ihrem Dienstkonto Zugriff auf alle Google Cloud-Ressourcen oder APIs gewähren, die von Ihren ML-Pipelines verwendet werden.

Rolle Titel Beschreibung Berechtigungen

(roles/monitoring.viewer)

Lesezugriff für das Abrufen und Auflisten von Informationen zu allen Monitoring-Daten und -Konfigurationen.

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt

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)

Schreibzugriff auf Messwerte. Dadurch erhalten Sie genau die Berechtigungen, die der Cloud Monitoring-Agent und andere Systeme, die Messwerte senden, benötigen.

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

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

monitoring.timeSeries.create

(roles/logging.logWriter)

Berechtigung zum Schreiben von Log-Einträgen

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt

logging.logEntries.create

logging.logEntries.route

(roles/storage.objectViewer)

Berechtigung zum Aufrufen von Objekten und ihren Metadaten mit Ausnahme von ACLs Kann auch die Objekte in einem Bucket auflisten.

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • 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

Für den Zugriff auf AI Platform-Pipelines als Nutzer erforderliche Rollen

Zum Zugriff auf einen AI Platform Pipelines-Cluster müssen jedem Nutzer die Rolle roles/container.clusterViewer des Kubernetes Engine-Clusterbetrachters und die Rolle "Dienstkontonutzer" für das Dienstkonto des Google Kubernetes Engine-Clusters zugewiesen sein.

Rolle Titel Beschreibung Berechtigungen

(roles/container.clusterViewer)

Berechtigung zum Abrufen und Auflisten von GKE-Clustern

container.clusters.get

container.clusters.list

resourcemanager.projects.get

resourcemanager.projects.list

Im nächsten Abschnitt erfahren Sie, wie Sie Nutzern Zugriff auf die Rolle "Kubernetes Engine-Clusterbetrachter" und die Rolle "Dienstkontonutzer" gewähren.

Nutzern Zugriff auf AI Platform-Pipelines gewähren

Gehen Sie nach der folgenden Anleitung vor, um einem Nutzerkonto Zugriff auf Ihren AI Platform Pipelines-Cluster zu gewähren.

  1. Öffnen Sie AI Platform Pipelines in der Google Cloud Console.

    Zu AI Platform Pipelines

  2. Suchen Sie den AI Platform Pipelines-Cluster. Notieren Sie sich den Cluster und die Zone für die nachfolgenden Schritte.

  3. Öffnen Sie eine Cloud Shell-Sitzung.

    Cloud Shell öffnen

    Cloud Shell wird im unteren Bereich der Google Cloud Console in einem Frame geöffnet. Verwenden Sie Cloud Shell, um den Rest dieses Vorgangs abzuschließen.

  4. Führen Sie den folgenden Befehl aus, um das Google Cloud-Standardprojekt für in dieser Cloud Shell-Sitzung.

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.

  5. Führen Sie den folgenden Befehl aus, um das Dienstkonto zu finden, das Ihr GKE-Cluster verwendet.

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

    Ersetzen Sie dabei Folgendes:

    • CLUSTER_NAME: Name Ihres GKE-Clusters.
    • ZONE: Zone, in der der Cluster erstellt wurde.

    Die Antwort kann darauf hinweisen, dass Ihr Cluster ein Dienstkonto mit dem Namen default verwendet. Dieser Wert bezieht sich auf das Standarddienstkonto für Compute Engine. Führen Sie den folgenden Befehl aus, um den vollständigen Namen dieses Dienstkontos zu ermitteln.

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

    Hier finden Sie weitere Informationen zum Compute Engine-Standarddienstkonto.

  6. Gewähren Sie Ihrem Nutzerkonto die Rolle "Dienstkontonutzer" für das Dienstkonto Ihres GKE-Clusters.

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

    Ersetzen Sie dabei Folgendes:

    • SERVICE_ACCOUNT_NAME: Name des Dienstkontos Ihres GKE-Clusters, den Sie im vorherigen Schritt gefunden haben. Dienstkontonamen haben folgendes Format: *@*.gserviceaccount.com
    • USERNAME: Ihr Nutzername in Google Cloud.
  7. Gewähren Sie Ihrem Nutzerkonto Zugriff auf die Rolle "GKE-Clusterbetrachter" für das Projekt.

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

    Ersetzen Sie dabei Folgendes:

    • PROJECT_ID: ID Ihres Google Cloud-Projekts.
    • USERNAME: Ihr Nutzername in Google Cloud.