Dienstkonten für Managed Service for Apache Spark

Auf dieser Seite werden Dienstkonten und VM-Zugriffsbereiche beschrieben und wie sie mit Managed Service for Apache Spark verwendet werden.

Sicherheitsanforderung ab dem 3. August 2020:Nutzer von Managed Service for Apache Spark müssen die ActAs-Berechtigung für das Dienstkonto haben, um Managed Service for Apache Spark-Ressourcen bereitzustellen, z. B. Cluster zu erstellen und Jobs zu senden. Die Rolle Dienstkontonutzer enthält diese Berechtigung. Informationen zu den erforderlichen Managed Service for Apache Spark-Rollen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

Aktivierung für bestehende Managed Service for Apache Spark-Nutzer: Bestehende Managed Service for Apache Spark-Nutzer können ab dem 3. August 2020 diese Sicherheitsanforderung aktivieren (siehe Managed Service for Apache Spark, Dataflow und Cloud Data Fusion sichern).

Was sind Dienstkonten?

Ein Dienstkonto ist ein spezielles Konto, das von Diensten und Anwendungen, die auf einer virtuellen Maschine (VM-Instanz) von Compute Engine 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.

Dienstkonten für Managed Service for Apache Spark-Cluster

Die folgenden Dienstkonten müssen die erforderlichen Berechtigungen zum Ausführen von Managed Service for Apache Spark-Aktionen in dem Projekt haben, in dem sich Ihr Cluster befindet.

VM-Dienstkonto für Managed Service for Apache Spark

Die VMs in einem Managed Service for Apache Spark-Cluster verwenden ein Dienstkonto für Datenebenenoperationen von Managed Service for Apache Spark. Das Compute Engine-Standarddienstkonto, project_number-compute@developer.gserviceaccount.com, wird als VM-Dienstkonto verwendet, sofern Sie beim Erstellen eines Clusters kein benutzerdefiniertes Dienstkonto angeben. Das VM-Dienstkonto muss die Rolle Managed Service for Apache Spark Worker haben, die die für Managed Service for Apache Spark-Datenebenenoperationen erforderlichen Berechtigungen enthält. Weitere Informationen finden Sie unter Rollen für Managed Service for Apache Spark.

Rollen für VM-Dienstkonto ansehen

So rufen Sie die Rollen auf, die dem Dienstkonto der VM von Managed Service for Apache Spark zugewiesen sind:

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  2. Klicken Sie auf Von Google bereitgestellte Rollenzuweisungen einschließen.

  3. Sehen Sie sich die für das VM-Dienstkonto aufgeführten Rollen an. Das folgende Bild zeigt die erforderliche Rolle Dataproc Worker für das Compute Engine-Standarddienstkonto (project_number-compute@developer.gserviceaccount.com), das Managed Service for Apache Spark standardmäßig als VM-Dienstkonto verwendet.

  4. Sie können auf das Stiftsymbol in der Dienstkontozeile klicken, um Dienstkontorollen zuzuweisen oder zu entfernen.

Dienstkonto für Managed Service for Apache Spark-Dienst-Agent

Managed Service for Apache Spark erstellt das Service Agent-Dienstkonto, service-project_number@dataproc-accounts.iam.gserviceaccount.com, und weist dem Dienstkonto die Rolle Managed Service for Apache Spark Service Agent in einem Google Cloud Projekt zu. Mit diesem Dienstkonto werden Vorgänge auf der Steuerungsebene von Managed Service for Apache Spark ausgeführt, z. B. das Erstellen, Aktualisieren und Löschen von Cluster-VMs. Sie können dieses Dienstkonto beim Erstellen eines Clusters nicht durch ein benutzerdefiniertes VM-Dienstkonto ersetzen.

Rollenzuweisung für das Dienstkonto des Dienst-Agents in einem freigegebene VPC-Netzwerk

Wenn ein Managed Service for Apache Spark-Cluster ein freigegebene VPC-Netzwerk verwendet, muss ein Administrator für freigegebene VPCs dem Dienstkonto des Managed Service for Apache Spark-Dienst-Agents die Rolle des Netzwerknutzers für das Hostprojekt der freigegebene VPC zuweisen. Hier finden Sie weitere Informationen:

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 die Datenebene-Vorgänge von Managed Service for Apache Spark 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

  1. Erstellen Sie das benutzerdefinierte VM-Dienstkonto in dem Projekt, in dem der Cluster erstellt wird.

  2. Weisen Sie dem benutzerdefinierten VM-Dienstkonto die Rolle Managed Service for Apache Spark 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 Managed Service for Apache Spark-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-Worker-Rolle (roles/dataproc.worker) zuzuweisen, können Sie dem Dienstkonto eine benutzerdefinierte Rolle zuweisen, die Worker-Rollenberechtigungen enthält, aber die Berechtigungen storage.objects.* einschränkt.
      • Die benutzerdefinierte Rolle muss dem VM-Dienstkonto mindestens die Berechtigungen storage.objects.create, storage.objects.get und storage.objects.update für die Objekte in den Managed Service for Apache Spark-Staging- und temporären Buckets und für alle zusätzlichen Buckets gewähren, die von Jobs benötigt werden, die auf dem Cluster ausgeführt werden.

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. Das letzte Zeichen darf kein Bindestrich sein. Der Name eines gelöschten Clusters kann wiederverwendet werden.
  • REGION: Die Region, in der sich der Cluster befindet.
  • 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 Projekt 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:

Console

Das Festlegen eines Managed Service for Apache Spark-VM-Dienstkontos in der Google Cloud Konsole wird nicht unterstützt. Sie können den Zugriffsbereich für Cluster-VMs festlegen, wenn Sie den Cluster erstellen. Klicken Sie dazu auf der Seite Cluster erstellen von Managed Service for Apache Spark in der Google Cloud Konsole im Bereich Sicherheit verwaltenProjektzugriff auf „cloud-platform-Bereich für diesen Cluster aktivieren“.cloud-platform

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 die Datenebenenvorgänge von Managed Service for Apache Spark 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

  1. Im Dienstkontoprojekt (dem Projekt, in dem sich das benutzerdefinierte VM-Dienstkonto befindet):

    1. Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können

    2. die Dataproc API aktivieren

      Rollen, die zum Aktivieren von APIs erforderlich sind

      Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

      API aktivieren

  2. 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 Format user:user-name@example.com an.

    • 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 Format user:user-name@example.com an.

  3. Weisen Sie dem benutzerdefinierten VM-Dienstkonto die Rolle Managed Service for Apache Spark-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"
     
  4. Weisen Sie dem Managed Service for Apache Spark-Dienstkonto des Dienst-Agents 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 „Managed Service for Apache Spark Service Agent“ 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 Dienstkonto des Managed Service for Apache Spark-Dienst-Agents 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"
    
  5. 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 gewähren Sie dem Dienstkonto des Compute Agent-Dienst-Agents im Clusterprojekt die Möglichkeit, 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