Auf dieser Seite werden Dienstkonten und VM-Zugriffsbereiche beschrieben und wie sie mit Dataproc verwendet werden.
Was sind Dienstkonten?
Ein Dienstkonto ist ein spezielles Konto, das von Diensten und Anwendungen, die auf einer VM-Instanz (Compute Engine VM) ausgeführt werden, für die Interaktion mit anderen Google Cloud APIs verwendet werden kann. Anwendungen können Dienstkonto-Anmeldedaten nutzen, um sich für verschiedene APIs zu autorisieren und im Rahmen der dem Dienstkonto gewährten Berechtigungen Aktionen auf der VM auszuführen.
Dataproc-Dienstkonten
Die folgenden Dienstkonten erhalten Berechtigungen, die zum Ausführen von Dataproc-Aktionen in dem Projekt erforderlich sind, in dem sich Ihr Cluster befindet.
Dataproc-VM-Dienstkonto: VMs in einem Dataproc-Cluster verwenden dieses Dienstkonto für Datenebenenvorgänge von Dataproc. Das Compute Engine-Standarddienstkonto,
project_number-compute@developer.gserviceaccount.com
, wird als Dataproc-VM-Dienstkonto verwendet, sofern Sie beim Erstellen eines Clusters kein VM-Dienstkonto angeben. Standardmäßig wird dem Compute Engine-Standarddienstkonto die Rolle Dataproc-Worker zugewiesen, die die für Dataproc-Datenebenenoperationen erforderlichen Berechtigungen umfasst.Benutzerdefinierte Dienstkonten:Wenn Sie beim Erstellen eines Clusters ein benutzerdefiniertes Dienstkonto angeben, müssen Sie dem benutzerdefinierten Dienstkonto die für Dataproc-Datenebenenoperationen erforderlichen Berechtigungen gewähren. Dazu können Sie dem Dienstkonto die Dataproc-Worker-Rolle zuweisen, da diese Rolle die für Dataproc-Datenebene-Vorgänge erforderlichen Berechtigungen enthält. Zusätzliche Rollen sind erforderlich, um Berechtigungen für andere Vorgänge zu erteilen, z. B. zum Lesen und Schreiben von Daten in BigQuery. Weitere Informationen finden Sie unter IAM-Dienstkontorollen ansehen und verwalten.
Dataproc-Dienst-Agent-Dienstkonto: Dataproc erstellt das Dienst-Agent-Dienstkonto
service-project_number@dataproc-accounts.iam.gserviceaccount.com
mit der Rolle Dataproc-Dienst-Agent im Google Cloud -Projekt eines Dataproc-Nutzers. Dieses Dienstkonto kann beim Erstellen eines Clusters nicht durch ein benutzerdefiniertes VM-Dienstkonto ersetzt werden. Dieses Dienst-Agent-Konto wird verwendet, um Vorgänge auf der Dataproc-Steuerungsebene auszuführen, z. B. das Erstellen, Aktualisieren und Löschen von Cluster-VMs.
Freigegebene VPC-Netzwerke:Wenn der Cluster ein freigegebenes VPC-Netzwerk verwendet, muss ein Administrator für freigegebene VPCs dem Dataproc-Dienstkonto für Dienst-Agents die Rolle Netzwerknutzer für das Hostprojekt der freigegebenen VPC zuweisen. Weitere Informationen finden Sie unter:
- Cluster erstellen, der ein VPC-Netzwerk in einem anderen Projekt verwendet
- Dokumentation zu freigegebenen VPCs: Dienstkonten als Dienstprojektadministratoren konfigurieren
IAM-Dienstkontorollen ansehen und verwalten
So rufen Sie die Rollen auf, die dem Dataproc-VM-Dienstkonto zugewiesen sind, und verwalten sie:
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Klicken Sie auf Von Google bereitgestellte Rollenzuweisungen einschließen.
Sehen Sie sich die Rollen an, die für das VM-Dienstkonto aufgeführt sind. Das folgende Bild zeigt die erforderliche Rolle Dataproc-Worker für das Compute Engine-Standarddienstkonto (
project_number-compute@developer.gserviceaccount.com
), das von Dataproc standardmäßig als VM-Dienstkonto verwendet wird.Sie können auf das Stiftsymbol in der Dienstkontozeile klicken, um Dienstkontorollen zuzuweisen oder zu entfernen.
Zugriffsbereiche für Dataproc-VM
VM-Zugriffsbereiche und IAM-Rollen arbeiten zusammen, um den VM-Zugriff auf Google Cloud-APIs einzuschränken. Wenn beispielsweise Cluster-VMs nur den Bereich https://www.googleapis.com/auth/storage-full
gewährt werden, können Anwendungen, die auf Cluster-VMs ausgeführt werden, Cloud Storage APIs aufrufen. Sie können jedoch keine Anfragen an BigQuery senden, auch wenn sie als VM-Dienstkonto ausgeführt werden, dem eine BigQuery-Rolle mit umfassenden Berechtigungen zugewiesen wurde.
Es empfiehlt sich, VMs den umfassenden Bereich cloud-platform
(https://www.googleapis.com/auth/cloud-platform
) zu gewähren und dann den VM-Zugriff durch Erteilen bestimmter IAM-Rollen für das VM-Dienstkonto zu beschränken.
Standardmäßige Dataproc-VM-Bereiche. Wenn bei der Erstellung eines Clusters keine Bereiche angegeben werden (siehe gcloud dataproc cluster create --scopes), haben Dataproc-VMs die folgenden Standardbereiche:
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Wenn Sie beim Erstellen eines Clusters Bereiche angeben, haben Cluster-VMs die von Ihnen angegebenen Bereiche und die nachfolgende Mindestmenge an erforderlichen Bereichen (auch wenn Sie sie nicht angeben):
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Cluster mit einem benutzerdefinierten VM-Dienstkonto erstellen
Wenn Sie einen Cluster erstellen, können Sie ein benutzerdefiniertes VM-Dienstkonto angeben, das Ihr Cluster für Dataproc-Datenebenenoperationen anstelle des Standard-VM-Dienstkontos verwendet. Das VM-Dienstkonto kann nach dem Erstellen des Clusters nicht mehr geändert werden. Wenn Sie ein VM-Dienstkonto mit zugewiesenen IAM-Rollen verwenden, können Sie Ihrem Cluster detaillierten Zugriff auf Projektressourcen gewähren.
Vorbereitende Schritte
Erstellen Sie das benutzerdefinierte VM-Dienstkonto in dem Projekt, in dem der Cluster erstellt wird.
Weisen Sie dem benutzerdefinierten VM-Dienstkonto die Rolle Dataproc-Worker für das Projekt und alle zusätzlichen Rollen zu, die von Ihren Jobs benötigt werden, z. B. die BigQuery-Rollen Leser und Schreiber (siehe Dataproc-Berechtigungen und IAM-Rollen).
Beispiel für die gcloud CLI:
- Mit dem folgenden Beispielbefehl wird dem benutzerdefinierten VM-Dienstkonto im Clusterprojekt die Rolle „Dataproc Worker“ auf Projektebene zugewiesen:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
- Benutzerdefinierte Rolle in Betracht ziehen:Anstatt dem Dienstkonto die vordefinierte Dataproc-Rolle
Worker
zuzuweisen, können Sie dem Dienstkonto eine benutzerdefinierte Rolle zuweisen, die Worker-Rollenberechtigungen enthält, aber die Berechtigungenstorage.objects.*
einschränkt.- Die benutzerdefinierte Rolle muss dem VM-Dienstkonto mindestens die Berechtigungen
storage.objects.create
,storage.objects.get
undstorage.objects.update
für die Objekte in den Dataproc-Staging- und temporären Buckets und für alle zusätzlichen Buckets zuweisen, die von Jobs benötigt werden, die auf dem Cluster ausgeführt werden.
- Die benutzerdefinierte Rolle muss dem VM-Dienstkonto mindestens die Berechtigungen
Cluster erstellen
- Erstellen Sie den Cluster in Ihrem Projekt.
gcloud-Befehl
Verwenden Sie den Befehl gcloud dataproc clusters create, um einen Cluster mit dem benutzerdefinierten VM-Dienstkonto zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Ersetzen Sie Folgendes:
- CLUSTER_NAME: Der Clustername, der innerhalb eines Projekts eindeutig sein muss. Der Name muss mit einem Kleinbuchstaben beginnen und darf bis zu 51 Kleinbuchstaben, Ziffern und Bindestriche enthalten. Sie darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
- REGION: Die Region, in der sich der Cluster befinden wird.
- SERVICE_ACCOUNT_NAME: Der Name des Dienstkontos.
- PROJECT_ID: Die Google Cloud Projekt-ID des Projekts, das Ihr VM-Dienstkonto enthält. Dies ist die ID des Projekts, in dem Ihr Cluster erstellt wird, oder die ID eines anderen Projekts, wenn Sie einen Cluster mit einem benutzerdefinierten VM-Dienstkonto in einem anderen Cluster erstellen.
- SCOPE: Zugriffsbereiche für Cluster-VM-Instanzen (z. B.
https://www.googleapis.com/auth/cloud-platform
).
REST API
Wenn Sie die GceClusterConfig
im Rahmen der API-Anfrage clusters.create
ausfüllen, legen Sie die folgenden Felder fest:
serviceAccount
: Das Dienstkonto befindet sich in dem Projekt, in dem Ihr Cluster erstellt wird, sofern Sie kein VM-Dienstkonto aus einem anderen Projekt verwenden.serviceAccountScopes
: Geben Sie die Zugriffsbereiche für Cluster-VM-Instanzen an, z. B.https://www.googleapis.com/auth/cloud-platform
.
Console
Das Festlegen eines Dataproc-VM-Dienstkontos in der Google Cloud Konsole wird nicht unterstützt. Sie können den cloud-platform
Zugriffsbereich für Cluster-VMs festlegen, wenn Sie den Cluster erstellen. Klicken Sie dazu in der Google Cloud Console auf der Dataproc-Seite Cluster erstellen im Bereich Sicherheit verwalten im Abschnitt Projektzugriff auf „Aktiviert den Cloud-Plattform-Bereich für diesen Cluster“.

Cluster mit einem benutzerdefinierten VM-Dienstkonto aus einem anderen Projekt erstellen
Wenn Sie einen Cluster erstellen, können Sie ein benutzerdefiniertes VM-Dienstkonto angeben, das Ihr Cluster für Dataproc-Datenebenenoperationen verwendet, anstatt das Standard-VM-Dienstkonto zu verwenden. Sie können kein benutzerdefiniertes VM-Dienstkonto angeben, nachdem der Cluster erstellt wurde. Wenn Sie ein benutzerdefiniertes VM-Dienstkonto mit zugewiesenen IAM-Rollen verwenden, können Sie Ihrem Cluster detaillierten Zugriff auf Projektressourcen gewähren.
Vorbereitende Schritte
Im Dienstkontoprojekt (dem Projekt, in dem sich das benutzerdefinierte VM-Dienstkonto befindet):
Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können
Enable the Dataproc API.
Weisen Sie Ihrem E-Mail-Konto (dem Nutzer, der den Cluster erstellt) die Rolle Dienstkontonutzer entweder für das Dienstkontoprojekt oder, für eine detailliertere Steuerung, für das benutzerdefinierte VM-Dienstkonto im Dienstkontoprojekt zu.
Weitere Informationen:Informationen zum Zuweisen von Rollen auf Projektebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten. Informationen zum Zuweisen von Rollen auf Dienstkontoebene finden Sie unter Zugriff auf Dienstkonten verwalten.
Beispiele für die gcloud CLI:
- Mit dem folgenden Beispielbefehl wird dem Nutzer die Rolle „Dienstkontonutzer“ auf Projektebene zugewiesen:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Hinweise:
USER_EMAIL
: Geben Sie die E-Mail-Adresse Ihres Nutzerkontos im folgenden Format an:user:user-name@example.com
.- Mit dem folgenden Beispielbefehl wird dem Nutzer die Rolle „Dienstkontonutzer“ auf Dienstkontoebene zugewiesen:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Hinweise:
USER_EMAIL
: Geben Sie die E-Mail-Adresse Ihres Nutzerkontos im folgenden Format an:user:user-name@example.com
.Weisen Sie dem benutzerdefinierten VM-Dienstkonto die Rolle Dataproc-Worker für das Clusterprojekt zu.
Beispiel für die gcloud CLI:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
Weisen Sie dem Dataproc-Dienst-Agent-Dienstkonto im Clusterprojekt die Rollen Dienstkontonutzer und Ersteller von Dienstkonto-Tokens entweder für das Dienstkontoprojekt oder, für eine detailliertere Steuerung, für das benutzerdefinierte VM-Dienstkonto im Dienstkontoprojekt zu. Dadurch erlauben Sie dem Dienstkonto des Dataproc-Dienst-Agents im Clusterprojekt, Tokens für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt zu erstellen.
Weitere Informationen:Informationen zum Zuweisen von Rollen auf Projektebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten. Informationen zum Zuweisen von Rollen auf Dienstkontoebene finden Sie unter Zugriff auf Dienstkonten verwalten.
Beispiele für die gcloud CLI:
- Mit den folgenden Beispielbefehlen werden dem Dienstkonto des Dataproc-Dienst-Agents im Clusterprojekt die Rollen „Dienstkontonutzer“ und „Ersteller von Dienstkonto-Tokens“ auf Projektebene zugewiesen:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Mit den folgenden Beispielbefehlen werden dem Dataproc-Dienst-Agent-Dienstkonto im Clusterprojekt die Rollen „Dienstkontonutzer“ und „Ersteller von Dienstkonto-Tokens“ auf VM-Dienstkontoebene zugewiesen:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Weisen Sie dem Compute Engine-Dienst-Agent-Dienstkonto im Clusterprojekt die Rolle Ersteller von Dienstkonto-Tokens entweder im Dienstkontoprojekt oder, für eine detailliertere Steuerung, dem benutzerdefinierten VM-Dienstkonto im Dienstkontoprojekt zu. Dadurch erteilen Sie dem Dienstkonto des Compute Agent-Dienst-Agents im Clusterprojekt die Berechtigung, Tokens für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt zu erstellen.
Weitere Informationen:Informationen zum Zuweisen von Rollen auf Projektebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten. Informationen zum Zuweisen von Rollen auf Dienstkontoebene finden Sie unter Zugriff auf Dienstkonten verwalten.
Beispiele für die gcloud CLI:
- Mit dem folgenden Beispielbefehl wird dem Compute Engine-Dienst-Agent-Dienstkonto im Clusterprojekt die Rolle „Ersteller von Dienstkonto-Tokens“ auf Projektebene zugewiesen:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Mit dem folgenden Beispielbefehl wird dem Dienstkonto des Compute Engine-Dienst-Agents im Clusterprojekt die Rolle „Ersteller von Dienstkonto-Tokens“ auf VM-Dienstkontoebene zugewiesen:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Cluster erstellen
Nächste Schritte
- Dienstkonten
- Dataproc-Berechtigungen und IAM-Rollen
- Dataproc-Principals und -Rollen
- Dataproc-Dienstkonto – sichere Mehrmandantenfähigkeit
- Persönliche Cluster Dataproc-Authentifizierung
- Dataproc Granular IAM