Personas und serverlose IAM-Rollen

In dieser Anleitung wird Spark-Entwicklern, Spark-Administratoren und Spark-Betrachtern gezeigt, wie sie die Berechtigungen erhalten, die sie benötigen, um mit der Verwendung von Managed Service for Apache Spark Serverless für Batch-Arbeitslasten und interaktive Sitzungen zu beginnen.

Persona Wer sie in der Organisation sind Was sie von IAM benötigen
Spark-Entwickler Der Builder und der Nutzer der Plattform. Schreibt und führt PySpark- und Spark-Jobs aus, entwickelt in Notebooks und Sitzungen, liest und schreibt Datasets und überwacht und behebt Fehler in seinen Arbeitslasten. Dazu gehören Data Engineers, Data Scientists und Entwickler. Berechtigungen zum Einreichen, Ausführen, Überwachen und Beheben von Fehlern bei Arbeitslasten sowie zum Lesen und Schreiben der Daten, auf die ihre Jobs zugreifen.
Spark-Administrator Der Plattforminhaber und -administrator. Richtet das Projekt ein, entscheidet, wie Arbeitslasten authentifiziert werden, führt Spark-Entwickler ein, verwaltet gemeinsam genutzte Dienstkonten und setzt Organisationsrichtlinien und das Prinzip der geringsten Berechtigung durch. Wird auch als Plattformadministrator bezeichnet. Berechtigungen zum Gewähren des Zugriffs für andere, zum Konfigurieren der Ausführungsidentität (Anmeldedaten des Endnutzers oder ein gemeinsames Dienstkonto) und zum Verwalten von projektweiten serverlosen Ressourcen.
Spark-Viewer Der Beobachter und Auditor der Plattform. Job-Abschluss, Ausführungsverlauf, Messwerte und Dashboards werden verfolgt, ohne dass Arbeitslasten gesendet oder geändert werden müssen. Dazu gehören Analysten, Projektmanager, FinOps- und Compliance-Auditoren. Schreibgeschützte Berechtigungen zum Ansehen von Batches, Sitzungen, Vorgängen und Status-Dashboards.

Laufzeitversion auswählen

Die empfohlene Laufzeitversion hängt von der Apache Spark-Version ab, auf der Ihre Arbeitslasten ausgeführt werden.

  • Laufzeit 3.x (empfohlen): verwendet Spark 4 und bietet ein einfacheres Onboarding und eine einfachere Nutzung. Standardmäßig werden Arbeitslasten als der einreichende Nutzer mit den Anmeldedaten des Endnutzers ausgeführt. Dazu muss dem Nutzer eine einzelne IAM-Rolle zugewiesen werden. Administratoren können benutzerdefinierte Dienstkonten für Arbeitslasten für eine erweiterte Nutzung konfigurieren.

  • Laufzeit 2.x: verwendet Spark 3.5 und separate Konten für Absender und Arbeitslast. Standardmäßig ist der Absender die Nutzeridentität und das Compute Engine-Standarddienstkonto die Arbeitslastidentität. Administratoren können benutzerdefinierte Dienstkonten für Arbeitslasten konfigurieren, um eine detailliertere Zugriffssteuerung zu ermöglichen.

Weitere Informationen finden Sie unter Laufzeitversionen von Managed Service for Apache Spark.

Funktionsvergleich

Mit Runtime-3.x-Upgrades werden 2.x-Komponenten und ‑Funktionen aktualisiert und die Einrichtung wird vereinfacht:

Funktion und Workflow Laufzeit 3.x (empfohlen) Laufzeit 2.x
Apache Spark-Version Spark 4 Spark 3.5 (und frühere Versionen 3.x)
Interaktive Entwicklung Spark Connect-Sitzungen (interaktiver Spark-Client nach Industriestandard) Jupyter-Sitzungen
R-Batcharbeitslasten sparklyr SparkR-Batches
Ausführungsidentität Anmeldedaten für Endnutzer1 Dienstkonto 1
Speicher für das Staging von Jobs Nicht erforderlich (intern verwaltet) Cloud Storage-Staging-Buckets
Format der Protokollausgabe Strukturiertes JSON-Format (jsonPayload) Klartextformat (textPayload)

1 Die Laufzeit 3.x verwendet standardmäßig die Endnutzeranmeldedaten (End-User Credentials, EUC) des Absenders, sofern für die Arbeitslast oder Sitzung kein benutzerdefiniertes Dienstkonto angegeben ist. Die Laufzeit 2.x wird standardmäßig auf das Compute Engine-Standarddienstkonto festgelegt, sofern kein benutzerdefiniertes Dienstkonto für die Arbeitslast oder Sitzung angegeben ist.

Häufige Daten- und Dienstrollen

Managed Service for Apache Spark wird in der Regel zum Lesen aus und Schreiben in andereGoogle Cloud -Dienste verwendet. In diesem Abschnitt werden Rollen aufgeführt, die mit häufig aufgerufenen Diensten verknüpft sind.

  • Laufzeit 3.x (Standard-EUC-Identität): Weisen Sie dem Spark-Entwickler (Nutzer oder Gruppe) Rollen zu.
  • Laufzeit 2.x:Weisen Sie dem Dienstkonto der Arbeitslast (dem Compute Engine-Standarddienstkonto oder einem benutzerdefinierten Dienstkonto der Arbeitslast) Rollen zu.
Dienst oder API Rolle Zweck
Cloud Storage roles/storage.objectViewer
roles/storage.objectAdmin
Eingabedaten und bereitgestellte Skripts lesen.
Ausgabedaten schreiben.
BigLake- und Lakehouse-Laufzeitkatalog roles/biglake.viewer
roles/biglake.editor
roles/biglake.admin
Mit dem BigLake REST-Katalog (Lakehouse REST-Katalog, LRC) können Sie offene Tabellenformate wie Apache Iceberg und Delta Lake abfragen und verwalten.
Bigtable roles/bigtable.reader
roles/bigtable.user
Bigtable-Tabellen lesen.
Bigtable-Daten lesen und schreiben.
Dataproc Metastore (DPMS) roles/metastore.metadataViewer
roles/metastore.editor
Hive-Metadaten lesen.
Metadatenschemas und ‑tabellen verwalten.

DPMS ist ein Legacy-Metaspeicher. Kunden wird empfohlen, den BigLake Lakehouse REST-Katalog (LRC) zu verwenden.

BigQuery bietet viele detaillierte IAM-Rollen und ACLs auf Ressourcenebene. Weitere Informationen finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.

Rollen gewähren

Der folgende Abschnitt enthält eine Anleitung zum Zuweisen von Rollen für die einzelnen Rollen, die mit dem Einrichten, Senden und Überwachen von serverlosen 3.x- und 2.x-Batcharbeitslasten und interaktiven Sitzungen von Managed Service for Apache Spark verknüpft sind.

Runtime 3.x

Standardmäßig werden 3.x-Arbeitslasten mit den Endnutzeranmeldedaten (End-User Credentials, EUC) des einreichenden Nutzers ausgeführt. Administratoren weisen dem Nutzer eine einzelne Rolle zu. Es sind keine freigegebenen Dienstkonten oder Staging-Buckets erforderlich. Administratoren können benutzerdefinierte Dienstkonten konfigurieren, wenn dedizierte Dienstidentitäten erforderlich sind.

Entwickler

Spark-Entwickler (Laufzeitversion 3.x)

Als Spark-Entwickler können Sie die Laufzeit 3.x mit Ihren Nutzeranmeldedaten verwenden, um Spark-Arbeitslasten zu entwickeln, zu senden, zu überwachen und Fehler zu beheben sowie direkt auf Daten zuzugreifen.

  1. Fordern Sie die serverlose Editorrolle an. Bitten Sie Ihren Administrator, Ihnen roles/dataproc.serverlessEditor für das Projekt zu gewähren.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    Mit dieser Rolle können Sie Spark-Batcharbeitslasten und interaktive Spark Connect-Sitzungen einreichen, überwachen, Fehler beheben und abbrechen.

  2. Zugriff auf Daten und Dienste erhalten Da die Arbeitslast als Sie ausgeführt wird, muss Ihre Identität Zugriff auf die Dienste und Datasets haben, auf die Ihre Spark-Anwendung zugreift (siehe Häufig verwendete Daten- und Servicerollen).

    Gewähren Sie sich beispielsweise Lesezugriff auf einen Cloud Storage-Eingabe-Bucket:

    gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectViewer"
    
  3. Senden Sie eine Testarbeitslast. Reichen Sie eine Test-Batcharbeitslast ein, um die Einrichtung zu bestätigen.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    Hinweise:

    • Wenn Sie zum ersten Mal einen 3.x-Arbeitslast mit Endnutzeranmeldedaten (End-User Credentials, EUC) einreichen, werden Sie aufgefordert, die einmalige OAuth-Zustimmung zu erteilen. Erteilen Sie die Einwilligung und senden Sie die Arbeitslast dann noch einmal.

    • Wenn Ihr Projekt kein default-VPC-Netzwerk hat, verwenden Sie das Flag oder Feld subnet, um Ihr regionales Subnetz anzugeben (siehe Konfiguration des serverlosen Netzwerks für Managed Service for Apache Spark).

    • Ein End-to-End-Beispiel für das Ausführen von PySpark-Arbeitslasten und das Konfigurieren der erforderlichen Berechtigungen für Cloud Storage, BigLake und BigQuery finden Sie unter Daten transformieren und in eine Apache Iceberg-Tabelle schreiben.

Benutzerdefinierte Dienstkonten für Arbeitslasten (Laufzeit 3.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto mit der Laufzeit 3.x, wenn in Ihrer Organisation Workloads unter einer dedizierten, prüfbaren Identität anstelle von Endnutzeranmeldedaten ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).

  1. Berechtigung zum Ausführen von Arbeitslasten als benutzerdefiniertes Dienstkonto erhalten Bitten Sie Ihren Administrator, Ihnen roles/iam.serviceAccountUser für das benutzerdefinierte Dienstkonto zu gewähren.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. Geben Sie den benutzerdefinierten Dienst an.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. Dataset-Zugriff gewähren Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden, weisen Sie WORKLOAD_SA_EMAIL direkt Rollen auf Datenebene zu (siehe Häufig verwendete Daten- und Dienstrollen).

Administrator

Spark-Administrator (Laufzeitversion 3.x)

Als Spark-Administrator richten Sie das Projekt ein, legen fest, wie Arbeitslasten authentifiziert werden, und gewähren Spark-Entwicklern Zugriff.

Arbeitslasten verwenden automatisch das benannte VPC-Subnetz default. Wenn in Ihrem Projekt kein default-Netzwerk vorhanden ist oder benutzerdefinierte VPCs verwendet werden, finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark Serverless Informationen zum Einrichten und Angeben eines Subnetzes für Arbeitslasten und Sitzungen.

Laufzeit 3.x mit Anmeldedaten von Endnutzern aktivieren (empfohlen)

Dies ist die Einrichtung mit den geringsten Berechtigungen und dem geringsten Wartungsaufwand. Jeder Spark-Entwickler führt Arbeitslasten mit seiner Nutzeridentität aus. Administratoren müssen keine Dienstkonten für Arbeitslasten einrichten und verwalten.

  1. Gewähren Sie roles/dataproc.serverlessEditor für Spark-Entwickler.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    
  2. Gewähren Sie roles/dataproc.serverlessViewer für schreibgeschützte Betrachter.

    Weisen Sie diese Rolle Prüfern, Dashboard-Nutzern und Teammitgliedern zu, die den Jobstatus und die Logs überwachen müssen, ohne Arbeitslasten zu senden oder zu ändern.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:VIEWER_EMAIL" \
      --role="roles/dataproc.serverlessViewer"
    
  3. Entwicklerzugriff auf Daten gewähren

    Standardmäßig werden Laufzeit-3.x-Arbeitslasten als der Nutzer ausgeführt, der sie gesendet hat. Weisen Sie dem Spark-Entwickler oder der Google-Gruppe, die Spark-Entwickler enthält, Rollen für den Datenzugriff wie roles/storage.objectViewer oder roles/storage.objectAdmin zu (siehe Häufig verwendete Daten- und Servicerollen).

Benutzerdefinierte Dienstkonten für Arbeitslasten aktivieren (Laufzeit 3.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto mit der Laufzeit 3.x, wenn Workloads unter einer dedizierten, prüfbaren Identität anstelle von Endnutzeranmeldedaten ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).

  1. Gewähren Sie roles/iam.serviceAccountUser für das benutzerdefinierte Dienstkonto der Arbeitslast.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. Weisen Sie dem benutzerdefinierten Dienstkonto für die Arbeitslast die Rolle roles/dataproc.serverlessNode zu.

    Mit dieser Rolle kann das Dienstkonto Compute-Knotenpools verwalten und während der Ausführung von Arbeitslasten mit Spark-Anwendungen kommunizieren:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.serverlessNode"
    
  3. Zugriff auf Anwendungsdaten gewähren

    Weisen Sie dem Dienstkonto der Arbeitslast direkt Rollen auf Datenebene zu, damit es Anwendungsdatasets lesen und schreiben kann (siehe Häufig verwendete Daten- und Servicerollen). Wenn Ihre Arbeitslasten gestaffelte Skripts oder benutzerdefinierte JARs verwenden, gewähren Sie auch Lesezugriff auf die entsprechenden Cloud Storage-Buckets.

Benutzerdefinierte Dienstkonten für Einreicher aktivieren (Laufzeit 3.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto für den Absender, wenn automatisierte Systeme (z. B. Managed Service for Apache Airflow, Cloud Scheduler oder CI- oder CD-Pipelines) Arbeitslasten ohne interaktiven menschlichen Nutzer senden.

  • In diesem Szenario führt das Dienstkonto des Absenders den gcloud-Befehl aus, mit dem der Job gestartet wird. Hier ein Beispiel mit gcloud:

    gcloud dataproc batches submit spark \
      --service-account=WORKLOAD_SA_EMAIL \
      ...
    
  • Das Dienstkonto der Arbeitslast führt den Spark-Code auf den Rechenknoten aus und greift auf Anwendungsdatasets zu.

    1. Gewähren Sie dem benutzerdefinierten Dienstkonto des Einreichers roles/dataproc.serverlessEditor.
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    Wenn Sie die Laufzeit 3.x mit einem benutzerdefinierten Dienstkonto für den Absender verwenden, ist ein benutzerdefiniertes Dienstkonto für die Arbeitslast erforderlich, um die Arbeitslast auszuführen. Die Laufzeit kann nicht auf Anmeldedaten von Endnutzern zurückgreifen, da es keinen interaktiven Endnutzer gibt. Der Job muss als angegebenes Dienstkonto für Arbeitslasten (--service-account) ausgeführt werden.

  1. Gewähren Sie roles/iam.serviceAccountUser für das benutzerdefinierte Dienstkonto der Arbeitslast.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. Konfigurieren Sie das benutzerdefinierte Dienstkonto für die Arbeitslast. Weisen Sie WORKLOAD_SA_EMAIL die Rollen roles/dataproc.serverlessNode und Anwendungsdaten zu.

Referenz zu Spark-Administratorrollen (Laufzeit 3.x)

In der folgenden Tabelle sind die Rollen zusammengefasst, die mit der Laufzeit 3.x gewährt werden müssen.

Meldende Partei Workload Identity Gewährung an Einreicher Arbeitslast-Dienstkonto gewähren
Endnutzer (Standard) Endnutzer (EUC) roles/dataproc.serverlessEditor (+ Datenrollen für Nutzer) (keine – keine SA verwendet)
Endnutzer Benutzerdefinierte SA roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser bei benutzerdefinierten SA roles/dataproc.serverlessNode + Datenrollen
Benutzerdefinierte SA (Automatisierung) Benutzerdefinierte SA roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser bei benutzerdefinierten SA roles/dataproc.serverlessNode + Datenrollen

Betrachter

Spark-Betrachter (Laufzeit 3.x)

Als Spark-Betrachter können Sie Batcharbeitslasten, interaktive Sitzungen, Ausführungsstatistiken, Logs und Status-Dashboards ansehen, ohne Arbeitslasten zu senden oder zu ändern.

Bitten Sie Ihren Administrator, Ihnen roles/dataproc.serverlessViewer zu gewähren.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.serverlessViewer"

Mit dieser Rolle erhalten Sie Lesezugriff zum Aufrufen von serverlosen Batch-Workloads, interaktiven Sitzungen und dem Vorgangsstatus.

Detaillierte Berechtigungen

Detaillierte Berechtigungen (Laufzeit 3.x)

In diesem Abschnitt werden die IAM-Berechtigungen aufgeführt, die in den IAM-Rollen enthalten sind, die mit der Laufzeit 3.x verknüpft sind.

Rolle „Serverless-Bearbeiter“ (roles/dataproc.serverlessEditor)

Diese Rolle mit ihren Berechtigungen bietet Lese- und Schreibzugriff auf serverlose Batch-Nutzlasten und interaktive Sitzungen der Laufzeitumgebung 3.x.

Berechtigung Beschreibung
dataproc.batches.create Neue Batch-Arbeitslasten erstellen und einreichen
dataproc.batches.get Status und Details von Batcharbeitslasten abrufen.
dataproc.batches.list Alle Batch-Workloads in einem Projekt oder einer Region auflisten.
dataproc.batches.delete Abgeschlossene oder beendete Batches löschen
dataproc.batches.cancel Laufende Batcharbeitslast abbrechen
dataproc.sessions.create Interaktive Spark Connect-Sitzungen erstellen
dataproc.sessions.get Sitzungsstatus und ‑details abrufen
dataproc.sessions.list Alle Sitzungen in einem Projekt oder einer Region auflisten.
dataproc.sessions.delete Beendete Sitzungen löschen
dataproc.sessions.terminate Eine laufende interaktive Sitzung beenden.
dataproc.operations.get Rufen Sie den Status des asynchronen Vorgangs ab (erforderlich für die gcloud-Befehlszeile).

Serverlose Knotenrolle (roles/dataproc.serverlessNode)

Bietet Berechtigungen für die Verwaltung von Knotenpools und die interne Spark-Kommunikation für benutzerdefinierte Dienstkonten für Laufzeit-Workloads 3.x.

Diese Rolle mit ihren Berechtigungen ist erforderlich, wenn Sie ein benutzerdefiniertes Dienstkonto für Arbeitslasten mit der Laufzeit 3.x verwenden. Arbeitslasten, die mit den Standardanmeldedaten für Endnutzer (End-User Credentials, EUC) 3.x ausgeführt werden, verwenden kein Arbeitslast-Dienstkonto.

Berechtigung Beschreibung
dataproc.batches.sparkApplicationWrite Spark-Anwendungskommunikation für Batcharbeitslasten.
dataproc.sessions.sparkApplicationWrite Spark-Anwendungskommunikation für interaktive Sitzungen.
dataprocrm.nodePools.create Compute-Knotenpools erstellen
dataprocrm.nodePools.delete Löschen Sie Compute-Knotenpools.
dataprocrm.nodePools.resize Knotenpools dynamisch skalieren.
dataprocrm.nodePools.get Status des Leseknotenpools lesen.
dataprocrm.nodePools.list Knotenpools auflisten
dataprocrm.nodePools.update Aktualisieren Sie die Konfiguration eines Knotenpools.
dataprocrm.nodePools.deleteNodes Entfernen Sie bestimmte Knoten aus einem Pool.
dataprocrm.nodes.list Knoten in einem Pool auflisten.
dataprocrm.nodes.delete Knoten nach Abschluss der Aufgabe löschen.
dataprocrm.nodes.get Knotenstatus lesen.
dataprocrm.nodes.heartbeat Knotenstatus und Heartbeats melden.
dataprocrm.nodes.mintOAuthToken OAuth-Tokens für Knotenoperationen erstellen.
dataprocrm.operations.get Status des Infrastrukturbetriebs prüfen

Rolle „Serverless Viewer“ (roles/dataproc.serverlessViewer)

Diese Rolle mit ihren Berechtigungen ist erforderlich, wenn Sie die Laufzeit 3.x mit einem benutzerdefinierten Dienstkonto für den Absender verwenden. Sie bieten Lesezugriff auf die Laufzeit von 3.x serverlosen Batch-Workloads, interaktiven Sitzungen und den Vorgangsstatus.

Berechtigung Beschreibung
dataproc.batches.get Status und Details von Batcharbeitslasten abrufen
dataproc.batches.list Batcharbeitslasten auflisten
dataproc.sessions.get Sitzungsstatus und ‑details lesen
dataproc.sessions.list Sitzungen auflisten.
dataproc.operations.get Vorgangsstatus lesen.
dataproc.operations.list Vorgänge auflisten.

Rolle „Dienstkontodelegierung“ (roles/iam.serviceAccountUser)

Ermöglicht es einem Nutzer oder automatisierten System, Arbeitslasten als benutzerdefiniertes Dienstkonto anzuhängen und auszuführen. Die Arbeitslast wird mit den Berechtigungen und dem Ressourcenzugriff ausgeführt, die diesem Dienstkonto gewährt wurden, und nicht mit den Anmeldedaten des Endnutzers (End-User Credentials, EUC) des einreichenden Nutzers.

Berechtigung Beschreibung
iam.serviceAccounts.actAs Ermöglicht dem Absender, Arbeitslasten als das angegebene Dienstkonto auszuführen.

Laufzeit 2.x

Standardmäßig werden 2.x-Laufzeit-Workloads als Compute Engine-Standarddienstkonto ausgeführt. Der Absender (der Nutzer oder das automatisierte System) fungiert als dieses Konto, wenn er Arbeitslasten oder Sitzungen ausführt.

Entwickler

Spark-Entwickler (Laufzeitversion 2.x)

Als Spark-Entwickler, der die Laufzeit 2.x verwendet, entwickeln, senden, überwachen und beheben Sie Fehler bei Spark-Arbeitslasten und greifen auf Daten zu. Da die Arbeitslast als Dienstkonto und nicht als Ihre Nutzeridentität ausgeführt wird, gewährt Ihnen ein Administrator die IAM-Rolle „Editor“ und die Rolle „Nutzer von Dienstkonten“, damit Sie Arbeitslasten als Dienstkonto der Arbeitslast ausführen können.

  1. Fordern Sie die Rolle „Bearbeiter“ an. Bitten Sie Ihren Administrator, Ihnen die Berechtigung roles/dataproc.editor für das Projekt zu gewähren:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. Delegierungsberechtigung anfordern Bitten Sie Ihren Administrator, Ihnen roles/iam.serviceAccountUser für das Dienstkonto der Arbeitslast zu gewähren.

    Das Standarddienstkonto für Arbeitslasten ist das Compute Engine-Standarddienstkonto, PROJECT_NUMBER-compute@developer.gserviceaccount.com:

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. Zugriff auf den Staging-Bucket erhalten. Der 2.x-Absender der Laufzeit benötigt die Berechtigung zum Hochladen von Skripten und JARs und das Dienstkonto der Arbeitslast die Berechtigung zum Verwalten temporärer Dateien und Logs. Diese Berechtigungen sind in der Rolle roles/storage.objectAdmin enthalten.

    # Grant submitter access to upload staged files
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectAdmin"
    
    # Grant workload service account access for staging, temporary files, and logs
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    
  4. Senden Sie eine Test-Batcharbeitslast. Reichen Sie eine Test-Batcharbeitslast ein, um die Einrichtung zu bestätigen.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    Hinweise:

Benutzerdefinierte Dienstkonten für benutzerdefinierte Arbeitslasten (Laufzeit 2.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto, wenn in Ihrer Organisation Arbeitslasten unter einer dedizierten, prüfbaren Identität anstelle des freigegebenen Compute Engine-Standarddienstkontos ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).

  1. Berechtigung zum Ausführen von Arbeitslasten als benutzerdefiniertes Dienstkonto erhalten Bitten Sie Ihren Administrator, Ihnen roles/iam.serviceAccountUser für das benutzerdefinierte Dienstkonto zu gewähren:

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. Geben Sie das benutzerdefinierte Dienstkonto beim Einreichen von Arbeitslasten mit dem Flag --service-account an.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. Dataset-Zugriff:Wenn Ihre Arbeitslast nicht auf Datasets zugreifen kann, weisen Sie dem benutzerdefinierten Dienstkonto der Arbeitslast (nicht Ihrem Nutzerkonto) die erforderlichen Rollen für den Datenzugriff zu (siehe Häufig verwendete Daten- und Servicerollen).

Administrator

Spark-Administrator (Laufzeit 2.x)

Als Spark-Administrator richten Sie das Projekt ein, konfigurieren Dienstkonten und gewähren Spark-Entwicklern Zugriff.

Arbeitslasten verwenden automatisch das benannte VPC-Subnetz default. Wenn in Ihrem Projekt kein default-Netzwerk vorhanden ist oder benutzerdefinierte VPCs verwendet werden, finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark Serverless Informationen zum Einrichten und Angeben eines Subnetzes für Arbeitslasten und Sitzungen.

Standardlaufzeit 2.x aktivieren

Bei der Standardlaufzeit 2.x werden Arbeitslasten als Compute Engine-Standarddienstkonto ausgeführt.

  1. Gewähren Sie dem Entwickler roles/dataproc.editor.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. Gewähren Sie roles/iam.serviceAccountUser für das Standarddienstkonto.

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. Gewähren Sie dem Dienstkonto der Arbeitslast die Berechtigung roles/dataproc.worker.

    Mit dieser Rolle kann das Dienstkonto den VM-Agent registrieren, Compute-Aufgaben leasen und ausführen sowie Logs und Messwerte an Cloud Logging und Cloud Monitoring senden:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/dataproc.worker"
    
  4. Gewähren Sie roles/storage.objectAdmin für den Staging-Bucket-Speicher.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    
  5. Gewähren Sie dem Dienstkonto der Arbeitslast Zugriff auf das Dataset.

    Weisen Sie dem Dienstkonto für die Arbeitslast Rollen auf Datenebene zu, damit es auf Datasets für Spark-Anwendungen zugreifen kann (siehe Häufig verwendete Daten- und Dienstrollen).

Benutzerdefinierte Dienstkonten für Arbeitslasten aktivieren (Laufzeit 2.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto für Arbeitslasten mit der Laufzeit 2.x, um Arbeitslasten zu isolieren, anstatt das gemeinsame Compute Engine-Standarddienstkonto zu verwenden.

  1. Gewähren Sie dem Entwickler die Berechtigung roles/iam.serviceAccountUser für das benutzerdefinierte Dienstkonto.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. Weisen Sie dem benutzerdefinierten Dienstkonto die Rolle roles/dataproc.worker zu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.worker"
    
  3. Gewähren Sie Zugriff auf Anwendungsdaten und die Staging-Umgebung.

    Weisen Sie dem benutzerdefinierten Dienstkonto für Arbeitslasten Rollen auf Datenebene direkt zu (siehe Häufig verwendete Daten- und Servicerollen) und gewähren Sie roles/storage.objectAdmin für Staging- und temporäre Buckets.

Benutzerdefinierte Dienstkonten für Einreicher aktivieren (Laufzeit 2.x)

Verwenden Sie ein benutzerdefiniertes Dienstkonto für den Absender, wenn automatisierte Systeme (z. B. Managed Service for Apache Airflow, Cloud Scheduler oder CI/CD-Pipelines) Arbeitslasten ohne interaktiven menschlichen Nutzer senden.

  1. Gewähren Sie dem Dienstkonto des Absenders roles/dataproc.editor.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. Gewähren Sie dem Dienstkonto der Arbeitslast die Berechtigung roles/iam.serviceAccountUser.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. Konfigurieren Sie das Dienstkonto für die Arbeitslast. roles/dataproc.worker- und Dataset-Zugriff für WORKLOAD_SA_EMAIL gewähren.

Spark-Administratorrollen (Laufzeit 2.x)

In der folgenden Tabelle sind die IAM-Rollen zusammengefasst, die mit der Laufzeit 2.x gewährt werden müssen.

Meldende Partei Workload Identity Gewährung an Einreicher Arbeitslast-Dienstkonto gewähren
Endnutzer (Standard) Standardmäßiges Compute Engine-Dienstkonto roles/dataproc.editor + roles/iam.serviceAccountUser im Standarddienstkonto roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen
Endnutzer Benutzerdefinierte SA roles/dataproc.editor + roles/iam.serviceAccountUser bei benutzerdefinierten SA roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen
Benutzerdefinierte SA (Automatisierung) Benutzerdefinierte SA roles/dataproc.editor + roles/iam.serviceAccountUser bei benutzerdefinierten SA roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen

Betrachter

Spark-Betrachter (Laufzeitversion 2.x)

Als Spark-Betrachter können Sie Batcharbeitslasten, interaktive Sitzungen, Ausführungsstatistiken, Logs und Status-Dashboards ansehen, ohne Arbeitslasten zu senden oder zu ändern.

Bitten Sie Ihren Administrator, Ihnen roles/dataproc.viewer zu gewähren:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.viewer"

Diese Rolle gewährt Lesezugriff auf alle Managed Service for Apache Spark-Ressourcen wie Cluster, Jobs, Batches, Sitzungen und Vorgänge.

Detaillierte Berechtigungen

Detaillierte Berechtigungen (Laufzeit 2.x)

In diesem Abschnitt werden die IAM-Berechtigungen aufgeführt, die in den IAM-Rollen enthalten sind, die mit der Laufzeit 2.x verknüpft sind.

Bearbeiterrolle roles/dataproc.editor

Diese Rolle bietet die Kontrolle über serverlose 2.x-Arbeitslasten und -Sitzungen sowie über Managed Service for Apache Spark-Cluster und -Jobs in Compute Engine.

Berechtigung Für serverlose Funktionen erforderlich Beschreibung
dataproc.batches.create Ja Neue Batch-Arbeitslasten erstellen und einreichen
dataproc.batches.get Ja Status und Details von Batcharbeitslasten abrufen.
dataproc.batches.list Ja Alle Batch-Workloads in einem Projekt oder einer Region auflisten.
dataproc.batches.delete Ja Abgeschlossene oder beendete Batches löschen
dataproc.batches.cancel Ja Laufende Batcharbeitslast abbrechen
dataproc.sessions.create Ja Interaktive Sitzungen erstellen
dataproc.sessions.get Ja Sitzungsstatus und ‑details abrufen
dataproc.sessions.list Ja Alle Sitzungen in einem Projekt oder einer Region auflisten.
dataproc.sessions.delete Ja Beendete Sitzungen löschen
dataproc.sessions.terminate Ja Eine laufende interaktive Sitzung beenden.
dataproc.operations.get Ja Rufen Sie den Status des asynchronen Vorgangs ab (erforderlich für die gcloud-Befehlszeile).
compute.networks.get Ja VPC-Netzwerkkonfiguration ansehen
compute.networks.list Ja Verfügbare VPC-Netzwerke und ‑Subnetze auflisten.
dataproc.clusters.* Nein (nur Cluster) Compute Engine-basierte Managed Service for Apache Spark-Cluster erstellen, verwalten und verwenden.
dataproc.jobs.* Nein (nur Cluster) Jobs in Compute Engine-basierten Managed Service for Apache Spark-Clustern senden und verwalten.
dataproc.autoscalingPolicies.* Nein (nur Cluster) Autoscaling-Richtlinien für Compute Engine-basierte Cluster.
dataproc.nodeGroups.* Nein (nur Cluster) Benutzerdefinierte Knotengruppen in Compute Engine-basierten Clustern.
dataproc.workflowTemplates.* Nein (nur Cluster) Vorlagenworkflows für Compute Engine-basierte Cluster.
compute.machineTypes.* Nein (nur Cluster) Metadaten zum Maschinentyp für Compute Engine-basierte Cluster.

Worker-Rolle (roles/dataproc.worker)

Diese Rolle bietet Berechtigungen zur Ausführung von Arbeitslasten für die Laufzeit 2.x.

Berechtigung Beschreibung
dataproc.agents.create Registrieren Sie den VM-Agent auf der VM.
dataproc.agents.get Agent-Status lesen.
dataproc.agents.update Aktualisieren Sie den Status des KI-Agenten.
dataproc.agents.delete Registrierung des Agenten nach Abschluss aufheben.
dataproc.tasks.lease Computing-Aufgaben zur Ausführung leasen.
dataproc.tasks.reportStatus Status der Aufgabenausführung melden.
storage.objects.create Staging-Daten, temporäre Dateien und Logs schreiben.
storage.objects.delete Temporäre Dateien bereinigen
storage.objects.get Boot-Skripts und bereitgestellte Dateien lesen.
storage.objects.list Inhalte von Staging- und temporären Buckets auflisten.

Betrachterrolle (roles/dataproc.viewer)

Diese Rolle bietet Lesezugriff auf alle Managed Service for Apache Spark-Ressourcen.

Berechtigung Für serverlose Funktionen erforderlich Beschreibung
dataproc.batches.get Ja Status und Details von Batcharbeitslasten abrufen
dataproc.batches.list Ja Alle Batch-Workloads in einem Projekt oder einer Region auflisten.
dataproc.sessions.get Ja Sitzungsstatus und ‑details lesen
dataproc.sessions.list Ja Alle Sitzungen in einem Projekt oder einer Region auflisten.
dataproc.operations.get Ja Status des asynchronen Vorgangs lesen.
dataproc.operations.list Ja Vorgänge in einem Projekt oder einer Region auflisten.
dataproc.clusters.get Nein (nur Cluster) Clusterkonfiguration und -status ansehen
dataproc.clusters.list Nein (nur Cluster) Cluster in einem Projekt oder einer Region auflisten.
dataproc.jobs.get Nein (nur Cluster) Jobdetails und ‑status in Clustern ansehen
dataproc.jobs.list Nein (nur Cluster) Jobs in Clustern auflisten
dataproc.autoscalingPolicies.get Nein (nur Cluster) Details zur Autoscaling-Richtlinie ansehen
dataproc.autoscalingPolicies.list Nein (nur Cluster) Autoscaling-Richtlinien auflisten
dataproc.workflowTemplates.get Nein (nur Cluster) Details zur Workflowvorlage ansehen
dataproc.workflowTemplates.list Nein (nur Cluster) Workflow-Vorlagen auflisten.

Rolle „Dienstkontodelegierung“ (roles/iam.serviceAccountUser)

Ermöglicht es einem Nutzer oder automatisierten System, Arbeitslasten als Compute Engine-Standarddienstkonto oder als benutzerdefiniertes Dienstkonto anzuhängen und auszuführen. Die Arbeitslast wird mit den Berechtigungen und dem Ressourcenzugriff ausgeführt, die diesem Dienstkonto gewährt wurden.

Berechtigung Beschreibung
iam.serviceAccounts.actAs Ermöglicht dem Absender, Arbeitslasten als das angegebene Dienstkonto auszuführen.

Nächste Schritte