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: Managed Service for Apache Spark-Nutzer müssen die Berechtigung ActAs 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 Compute Engine VM-Instanz (virtuelle Maschine) 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 haben, um Managed Service for Apache Spark-Aktionen in dem Projekt auszuführen, 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
Managed Service for Apache Spark Datenebenenvorgänge.
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-Datenebenenvorgänge erforderlichen Berechtigungen enthält. Weitere Informationen finden Sie unter
Managed Service for Apache Spark-Rollen.
Rollen des VM-Dienstkontos ansehen
So sehen Sie die Rollen, die dem VM-Dienstkonto für Managed Service for Apache Spark zugewiesen wurden:
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. Die folgende Abbildung 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.
Sie können auf das Stiftsymbol in der Dienstkontenzeile klicken, um Dienstkontorollen zuzuweisen oder zu entfernen.
Dienstkonto des Managed Service for Apache Spark-Dienst-Agents
Managed Service for Apache Spark creates the
Service Agent service account,
service-project_number@dataproc-accounts.iam.gserviceaccount.com, and grants the service account
the
Managed Service for Apache Spark Service Agent
role in a Google Cloud project. Dieses Dienst
konto führt Vorgänge auf der Managed Service for Apache Spark-Steuerungsebene
aus, 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 an 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 erstellen, der ein VPC-Netzwerk in einem anderen Projekt verwendet
- Dokumentation zu gemeinsam genutzten VPCs: Dienstkonten als Dienstprojektadministratoren konfigurieren
Cluster mit einem benutzerdefinierten VM-Dienstkonto erstellen
Wenn Sie einen Cluster erstellen, können Sie ein benutzerdefiniertes VM-Dienstkonto angeben, das Ihr Cluster anstelle des Standard-VM-Dienstkontos für Managed Service for Apache Spark-Datenebenenvorgänge 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 einen detaillierten Zugriff auf Projektressourcen gewähren.
Vorläufige Schritte
Erstellen Sie das benutzerdefinierte VM-Dienstkonto in dem Projekt, in dem der Cluster erstellt wird.
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 Rollen „BigQuery-Leser und Autor“ (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: 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 Rolle „Worker“ 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.updatefür die Objekte in den Staging- und temporären Buckets von Managed Service for Apache Spark sowie für alle zusätzlichen Buckets gewähren, 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.
Google Cloud Console
Das Festlegen eines VM-Dienstkontos für Managed Service for Apache Spark in der Console wird nicht unterstützt.
So legen Sie beim Erstellen des Clusters den Zugriffsbereich cloud-platform für Cluster-VMs fest:
- Öffnen Sie die Seite „Cluster erstellen“.
- Klicken Sie auf Zusätzliche Konfiguration , um den Bereich zu maximieren.
- Bearbeiten Sie Sicherheit.
- Wählen Sie im daraufhin geöffneten Bereich unter Projektzugriff das Kästchen für Aktiviert den Zugriffsbereich „cloud-platform“ für diesen Cluster aus.
gcloud CLI
Verwenden Sie den gcloud dataproc clusters create Befehl, 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 kann bis zu 51 Kleinbuchstaben Ziffern und Bindestriche enthalten. Er 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 Google Cloud Projekt-ID des Projekts, das Ihr VM-Dienstkonto enthält. Dies ist die ID von dem Projekt, 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
GceClusterConfig
als Teil der
clusters.create
-API-Anfrage ausfüllen, legen Sie die folgenden Felder fest:
serviceAccount: Das Dienstkonto befindet sich in dem Projekt, in dem Ihr Cluster erstellt wird, es sei denn, Sie verwenden ein VM-Dienstkonto aus einem anderen Projekt.serviceAccountScopes: Geben Sie die Zugriffsbereiche für Cluster-VM-Instanzen an (z. B.https://www.googleapis.com/auth/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 anstelle des Standard-VM-Dienstkontos für Managed Service for Apache Spark-Datenebenenvorgänge verwendet. Das VM-Dienstkonto kann nach dem Erstellen des Clusters nicht mehr geändert werden. Wenn Sie ein benutzerdefiniertes VM-Dienstkonto mit zugewiesenen IAM-Rollen verwenden, können Sie Ihrem Cluster einen detaillierten Zugriff auf Projektressourcen gewähren.
Vorläufige Schritte
Im Dienstkontoprojekt (dem Projekt, in dem sich das benutzerdefinierte VM-Dienstkonto befindet):
Ermöglichen Sie, dass Dienstkonten projektübergreifend angehängt werden können.
Aktivieren Sie die Dataproc API.
Erforderliche Rollen zum Aktivieren von APIs
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.
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: Siehe Zugriff auf Projekte, Ordner und Organisationen verwalten , um Rollen auf Projektebene zuzuweisen, und Zugriff auf Dienstkonten verwalten , um Rollen auf Dienstkontoebene zuzuweisen.
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 Formatuser:user-name@example.coman.- 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 Formatuser:user-name@example.coman.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"
Weisen Sie dem Dienstkonto des Managed Service for Apache Spark-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 kann das Dienstkonto des Dataproc-Dienst-Agents im Clusterprojekt Tokens für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt erstellen.
Weitere Informationen: Siehe Zugriff auf Projekte, Ordner und Organisationen verwalten , um Rollen auf Projektebene zuzuweisen, und Zugriff auf Dienstkonten verwalten , um Rollen auf Dienstkontoebene zuzuweisen.
Beispiele für die gcloud CLI :
- 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 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"
Weisen Sie dem Dienstkonto des Compute Engine-Dienst-Agents im Clusterprojekt die Rolle „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 kann das Dienstkonto des Compute Engine-Dienst-Agents im Clusterprojekt Tokens für das benutzerdefinierte Dataproc-VM-Dienstkonto im Dienstkontoprojekt erstellen.
Weitere Informationen: Siehe Zugriff auf Projekte, Ordner und Organisationen verwalten , um Rollen auf Projektebene zuzuweisen, und Zugriff auf Dienstkonten verwalten , um Rollen auf Dienstkontoebene zuzuweisen.
Beispiele für die gcloud CLI :
- Mit dem folgenden Beispielbefehl wird dem Dienstkonto des Compute Engine-Dienst-Agents 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
- Managed Service for Apache Spark-Berechtigungen und IAM-Rollen
- Managed Service for Apache Spark-Hauptkonten und -Rollen
- Sichere Mandantenfähigkeit auf Dienstkontobasis für Managed Service for Apache Spark
- Persönliche Cluster-Authentifizierung für Managed Service for Apache Spark
- Granulare IAM-Berechtigungen für Managed Service for Apache Spark