Dienstkonten für Managed Service for Apache Spark

Auf dieser Seite werden Dienstkonten und VM-Zugriffsbereiche sowie ihre Verwendung mit Managed Service for Apache Spark beschrieben.

Sicherheitsanforderung ab 3. August 2020:Nutzer von Managed Service for Apache Spark benötigen die Berechtigung Dienstkonto ActAs, 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 Rollen für Managed Service for Apache Spark 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 (Stand: 3. August 2020) können diese Sicherheitsanforderung aktivieren (siehe Managed Service for Apache Spark, Dataflow und Cloud Data Fusion schützen).

Was sind Dienstkonten?

Ein Dienstkonto ist ein spezielles Konto, das von Diensten und Anwendungen verwendet werden kann, die auf einer Compute Engine-VM-Instanz ausgeführt werden, um mit anderen Cloud de Confiance APIs zu interagieren. Anwendungen können sich mit den Anmeldedaten des Dienstkontos für eine Reihe von APIs autorisieren und Aktionen auf der VM mit den Berechtigungen ausführen, die dem Dienstkonto gewährt wurden.

Dienstkonten für Managed Service for Apache Spark-Cluster

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

Dienstkonto für Managed Service for Apache Spark-VM

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.s3ns-system.iam.gserviceaccount.com, wird als VM-Dienstkonto verwendet, sofern Sie beim Erstellen eines Clusters kein benutzerdefiniertes Dienstkonto angeben. Das Dienstkonto der VM muss die Rolle Managed Service for Apache Spark Worker haben, die die für die Datenebene von Managed Service for Apache Spark 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 Cloud de Confiance Console die Seite IAM auf.

    IAM aufrufen

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

  3. Rufen Sie die Rollen auf, die für das VM-Dienstkonto aufgeführt sind. Im folgenden Bild ist die erforderliche Rolle Dataproc Worker für das standardmäßige Compute Engine-Dienstkonto (project_number-compute@developer.s3ns-system.iam.gserviceaccount.com) aufgeführt, 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.s3ns-system.iam.gserviceaccount.com, und gewährt dem Dienstkonto die Rolle Managed Service for Apache Spark Service Agent in einem Cloud de Confiance -Projekt. Mit diesem Dienstkonto werden Managed Service for Apache Spark-Steuerungsebene-Vorgänge wie das Erstellen, Aktualisieren und Löschen von Cluster-VMs ausgeführt. 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 Managed Service for Apache Spark-Datenebenenoperationen anstelle des Standard-VM-Dienstkontos verwendet. Sie können das VM-Dienstkonto nach der Clustererstellung nicht mehr ändern. Wenn Sie ein VM-Dienstkonto mit zugewiesenen IAM-Rollen verwenden, können Sie Ihrem Cluster einen 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 für Ihre Jobs erforderlich sind, 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.s3ns.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
    • Benutzerdefinierte Rolle verwenden:Anstatt dem Dienstkonto die vordefinierte Rolle „Dataproc-Worker“ (roles/dataproc.worker) zuzuweisen, können Sie dem Dienstkonto eine benutzerdefinierte Rolle zuweisen, die Berechtigungen für die Worker-Rolle enthält, aber die Berechtigungen für 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 Staging- und temporären Buckets von Managed Service for Apache Spark und für alle zusätzlichen Buckets gewähren, die für Jobs erforderlich sind, die im Cluster ausgeführt werden.

Cluster erstellen

  • Erstellen Sie den Cluster in Ihrem Projekt.

Cloud de Confiance Console

Das Festlegen eines Dienstkontos für Managed Service for Apache Spark-VMs in der Console wird nicht unterstützt. So legen Sie den Zugriffsbereich cloud-platform für Cluster-VMs beim Erstellen des Clusters fest:

  1. Öffnen Sie die Seite Cluster erstellen.
  2. Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
  3. Bearbeiten Sie Sicherheit.
  4. Wählen Sie im geöffneten Bereich unter Projektzugriff das Kästchen für Aktiviert den Cloud Platform-Bereich für diesen Cluster aus.

gcloud-CLI

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.s3ns.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. Es darf nicht mit einem Bindestrich enden. 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 Cloud de Confiance 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

Legen Sie beim Ausfüllen von GceClusterConfig im Rahmen der API-Anfrage clusters.create die folgenden Felder fest:

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 Datenebene-Vorgä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 einen 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. Aktivieren Sie die Dataproc API, falls sie noch nicht aktiviert ist.

      Rollen, die zum Aktivieren von APIs erforderlich sind

      Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. 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:Unter Zugriff auf Projekte, Ordner und Organisationen verwalten finden Sie Informationen zum Zuweisen von Rollen auf Projektebene und unter Zugriff auf Dienstkonten verwalten zum Zuweisen von Rollen auf Dienstkontoebene.

    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.

  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.s3ns.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. Weisen Sie dem Dienstkonto des Dienst-Agents für Managed Service for Apache Spark 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 Dataproc-Dienst-Agent-Dienstkonto im Clusterprojekt, Token für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt zu erstellen.

    Weitere Informationen:Unter Zugriff auf Projekte, Ordner und Organisationen verwalten finden Sie Informationen zum Zuweisen von Rollen auf Projektebene und unter Zugriff auf Dienstkonten verwalten zum Zuweisen von Rollen auf Dienstkontoebene.

    Beispiele für die gcloud CLI:

    • Mit den folgenden Beispielbefehlen werden dem Dienstkonto des 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.s3ns-system.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.s3ns-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • Mit den folgenden Beispielbefehlen werden dem Dienstkonto des Managed Service for Apache Spark Service Agent im Clusterprojekt die Rollen „Dienstkontonutzer“ und „Ersteller von Dienstkonto-Tokens“ auf VM-Dienstkontoebene gewährt:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.s3ns-system.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.s3ns-system.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 Compute Agent Service Agent-Dienstkonto im Clusterprojekt die Möglichkeit, Tokens für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt zu erstellen.

    Weitere Informationen:Unter Zugriff auf Projekte, Ordner und Organisationen verwalten finden Sie Informationen zum Zuweisen von Rollen auf Projektebene und unter Zugriff auf Dienstkonten verwalten zum Zuweisen von Rollen auf Dienstkontoebene.

    Beispiele für die gcloud CLI:

    • Mit dem folgenden Beispielbefehl wird dem Compute Engine-Dienstkonto-Service-Agent 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.s3ns-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • Mit dem folgenden Beispielbefehl wird dem Dienstkonto des Compute Engine Service Agent im Clusterprojekt die Rolle „Ersteller von Dienstkonto-Tokens“ auf Ebene des VM-Dienstkontos zugewiesen:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

Cluster erstellen

Nächste Schritte