Die auf einem Dataproc-Dienstkonto basierende sichere Mehrmandantenfähigkeit ermöglicht Ihnen die Freigabe eines Clusters für mehrere Nutzer, wobei eine Reihe von Nutzerkonten den Dienstkonten bei der Erstellung des Clusters zugeordnet wird. Nutzer können interaktive Arbeitslasten wie Jupyter-Notebooks an Kerne senden, die auf dem Mehrmandanten-Cluster mit isolierten Nutzerumgebungen ausgeführt werden.
Wenn ein Nutzer einen Job an den mehrmandantenfähigen Cluster sendet, geschieht Folgendes:
Der Job wird als bestimmter Betriebssystemnutzer mit einem bestimmten Kerberos-Principal ausgeführt.
Der Job greift über ein zugeordnetes Dienstkonto auf Google Cloud Ressourcen zu.
In diesem Dokument wird beschrieben, wie Sie einen Dataproc-Cluster mit mehreren Mandanten erstellen und dann ein Jupyter-Notebook starten und mit einem PySpark-Kernel verbinden, der im Cluster ausgeführt wird.
Überlegungen und Einschränkungen
Wenn Sie einen Mehrmandantencluster erstellen, gilt Folgendes:
Der Cluster ist nur für Google-Kontonutzer mit zugeordneten Dienstkonten verfügbar. Google-Gruppen können nicht zugeordnet werden. Nicht zugewiesene Nutzer können keine Jobs auf dem Cluster ausführen.
Kerberos ist auf dem Cluster für eine sichere Intra-Cluster-Kommunikation aktiviert und konfiguriert. Die Endnutzerauthentifizierung über Kerberos wird nicht unterstützt.
Der direkte SSH-Zugriff auf den Cluster und Compute Engine-Features wie die Möglichkeit, Startskripts auf Cluster-VMs auszuführen, wird blockiert. Außerdem können Jobs nicht mit
sudo
-Berechtigungen ausgeführt werden.Dataproc-Workflows werden nicht unterstützt.
Mehrmandantenfähigen Cluster erstellen
Sie aktivieren die Mehrmandantenfähigkeit, wenn Sie einen Dataproc-Cluster erstellen.
Konsole
So erstellen Sie einen Dataproc-Cluster mit der Google Cloud -Console:
Rufen Sie in der Google Cloud Console die Dataproc-Seite Dataproc-Cluster in Compute Engine erstellen auf: Dataproc-Cluster in Compute Engine erstellen
Gehen Sie im Bereich Cluster einrichten so vor:
- Unter Komponenten:
- Wählen Sie unter Component Gateway die Option Component Gateway aktivieren aus.
- Wählen Sie unter Optionale Komponenten die Option Jupyter Kernel Gateway aus, damit mehrere Nutzer ihre Jupyter-Notebooks mit dem mandantenfähigen Cluster verbinden können.
- Unter Komponenten:
Im Bereich Cluster anpassen:
Gehen Sie unter Clusterattribute so vor:
Wenn Sie Mandanten mit mehreren Nutzern hinzufügen oder entfernen möchten, ohne den Cluster neu zu erstellen (siehe Nutzer von Clustern mit mehreren Mandanten aktualisieren), klicken Sie auf Eigenschaften hinzufügen, fügen Sie das Präfix
dataproc
und die Eigenschaftdynamic.multi.tenancy.enabled
hinzu und legen Sie den Wert auftrue
fest.Empfehlung: Da YARN für jeden Notebook-Kernel, der in einem mehrmandantenfähigen Cluster ausgeführt wird, erhebliche Clusterressourcen verbraucht, sollten Sie Spark- und YARN-Attribute hinzufügen, um die Ressourcenzuweisung zu erhöhen.
Beispiel:
Präfix Schlüssel Wert spark spark.driver.memory 5G spark spark.executor.memory 5G spark spark.executor.cores 200 capacity-scheduler yarn.scheduler.capacity.maximum-am-resource-percent 0,5
Im Sicherheitsbereich verwalten:
- Wählen Sie unter Project access (Projektzugriff) die Option Enables the cloud-platform scope for this cluster (Aktiviert den Bereich „cloud-platform“ für diesen Cluster) aus.
- Unter Secure Multi Tenancy (Sichere Mandantenfähigkeit):
- Wählen Sie Aktivieren aus.
- Unter Zuordnung für Mandantenfähigkeit:
- Klicken Sie auf Mandantenzuordnung hinzufügen, um Zuordnungen von Nutzerkonten zu Dienstkonten hinzuzufügen.
Bestätigen oder geben Sie andere Clustereinstellungen ein (siehe Dataproc-Cluster mit der Google Cloud -Console erstellen).
Klicken Sie auf Erstellen.
gcloud
Verwenden Sie den Befehl gcloud dataproc clusters create command
mit dem Flag --secure-multi-tenancy-user-mapping
, um eine Liste mit Nutzerkonto-zu-Dienstkonto-Zuordnungen anzugeben.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --secure-multi-tenancy-user-mapping=USER_MAPPINGS: \ --properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true" \ --service-account=CLUSTER_SERVICE_ACCOUNT@iam.gserviceaccount.com \ --scopes=https://www.googleapis.com/auth/iam \ --optional-components=JUPYTER_KERNEL_GATEWAY \ --enable-component-gateway \ other args ...
Hinweise:
USER_MAPPINGS: Geben Sie eine durch Kommas getrennte Liste an, in der Nutzerkonten Dienstkonten zugeordnet werden.
YAML-Zuordnungsdatei verwenden:Anstatt das Flag--secure-multi-tenancy-user-mapping=UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com,UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com,UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--secure-multi-tenancy-user-mapping
zum Angeben der Zuordnungen von Nutzerkonto zu Dienstkonto zu verwenden, können Sie das Flag--identity-config-file
verwenden, um eine lokale oder Cloud Storage-YAML-Datei anzugeben, die die Zuordnungen enthält. Jede Zeile in der Zuordnungsdatei ordnet ein Nutzerkonto einem Dienstkonto zu. Die erste Zeile enthält den Header--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:
.user_service_account_mapping: UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true"
: Mit dieser Eigenschaft können Sie Nutzer von Mehrmandantenclustern hinzufügen oder entfernen, ohne den Cluster neu erstellen zu müssen (siehe Nutzer von Mehrmandantenclustern aktualisieren).Empfehlung: Da YARN für jeden Notebook-Kernel, der in einem mehrmandantenfähigen Cluster ausgeführt wird, erhebliche Clusterressourcen verbraucht, sollten Sie Spark- und YARN-Attribute hinzufügen, um die Ressourcenzuweisung zu erhöhen.
Beispiel:
--properties=" \ spark:spark.driver.memory=5g,\ spark:spark.executor.memory=5g,\ spark:spark.executor.cores=200, \ capacity-scheduler:yarn.scheduler.capacity.maximum-am-resource-percent=0.5"
CLUSTER_SERVICE_ACCOUNT (Optional): Mit
--service-account flag
können Sie ein benutzerdefiniertes VM-Dienstkonto für den Cluster angeben. Wenn Sie dieses Flag weglassen, wird das Standarddienstkonto für Cluster-VMs,PROJECT_NUMBER-compute@developer.gserviceaccount.com
, verwendet.Empfehlung:Verwenden Sie unterschiedliche Cluster-Dienstkonten für verschiedene Cluster, damit jedes Cluster-VM-Dienstkonto nur die Identität einer begrenzten Gruppe zugeordneter Nutzer-Dienstkonten übernehmen kann.
--scopes=https://www.googleapis.com/auth/iam
ist erforderlich, damit das Dienstkonto des Clusters die Identitätsübertragung ausführen kann.--enable-component-gateway
und--optional-components=JUPYTER_KERNEL_GATEWAY
: Wenn Sie das Dataproc Component Gateway und das Jupyter Kernel Gateway aktivieren, können mehrere Nutzer ihre Jupyter-Notebooks mit dem Multi-Tenant-Cluster verbinden.
API
Verwenden Sie SecurityConfig.IdentityConfig.userServiceAccountMapping field
, um eine Liste mit Zuordnungen von Nutzerkonten zu Dienstkonten anzugeben.
IAM-Berechtigungen (Identity and Access Management) erteilen
Damit Nutzer-Notebooks eine Verbindung zu Notebook-Kernels herstellen können, die auf einem Mandantencluster ausgeführt werden, müssen zugeordnete Nutzer, zugeordnete Dienstkonten und das VM-Dienstkonto des Clusters die IAM-Berechtigungen haben, die für den Zugriff auf Ressourcen erforderlich sind.
Zugeordnete Nutzerberechtigungen
Jeder zugeordnete Nutzer muss die Berechtigungen dataproc.clusters.get
und dataproc.clusters.use
haben, die erforderlich sind, damit der Nutzer auf Notebook-Kernels zugreifen und eine Verbindung zu ihnen herstellen kann, die im Multi-Tenant-Cluster ausgeführt werden. Sie können die Dataproc-Bearbeiterrolle (roles/dataproc.editor
) zuweisen, die diese Berechtigungen enthält (siehe Einzelne IAM-Rolle zuweisen), oder eine benutzerdefinierte Rolle mit diesen Berechtigungen erstellen.
Zugeordnete Dienstkontoberechtigungen
Jedes zugeordnete Dienstkonto muss die Berechtigungen haben, die für die Notebook-Anwendung des zugeordneten Nutzers erforderlich sind, z. B. Zugriff auf einen Cloud Storage-Bucket oder Zugriff auf eine BigQuery-Tabelle (siehe Zugriff auf Dienstkonten verwalten).
Berechtigungen für das VM-Dienstkonto
Das VM-Dienstkonto des Multi-Tenant-Clusters muss für jedes zugeordnete Dienstkonto die Berechtigung iam.serviceAccounts.getAccessToken
haben. Sie können die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator
) zuweisen, die diese Berechtigung enthält (siehe Zugriff auf Dienstkonten verwalten), oder eine benutzerdefinierte Rolle mit dieser Berechtigung erstellen.
Informationen zu anderen VM-Dienstkontorollen finden Sie unter Dataproc-VM-Dienstkonto.
Jupyter-Notebooks mit einem Kernel für mehrmandantenfähige Cluster verbinden
Zugeordnete Nutzer von Mehrmandantenclustern können ihre Vertex AI Workbench- oder vom Nutzer verwalteten Jupyter-Notebooks mit den auf dem Mehrmandantencluster installierten Kernels verbinden.
Vertex AI-Notebook
So erstellen Sie ein Jupyter-Notebook und stellen eine Verbindung zum mehrmandantenfähigen Cluster her:
- Vertex AI Workbench-Instanz erstellen
- Klicken Sie auf dem Tab Workbench-Instanzen auf den Link JupyterLab öffnen für Ihre Instanz.
- Klicken Sie unter Dataproc Cluster Notebooks auf die Karte PySpark (YARN Cluster) on
MULTI_TENANCY_CLUSTER_NAME
, um eine Verbindung zu einem neuen Jupyter PySpark-Notebook herzustellen und es zu starten.
Nutzerverwaltetes Notebook
Wenn Sie ein nutzerverwaltetes Jupyter-Notebook erstellen und mit Ihrem mandantenfähigen Dataproc-Cluster verbinden möchten, folgen Sie der Anleitung zum Installieren der JupyterLab-Erweiterung auf Ihrer nutzerverwalteten VM.
Nutzer von Multi-Tenant-Clustern aktualisieren (Vorschau)
Wenn Sie die Clustereigenschaft dataproc:dataproc.dynamic.multi.tenancy.enabled
beim Erstellen eines Multi-Tenant-Clusters auf true
festlegen, können Sie Nutzer des Multi-Tenant-Clusters nach der Clustererstellung hinzufügen, entfernen oder ersetzen.
Nutzer hinzufügen
Mit dem folgenden Aktualisierungsbefehl werden mit dem Flag --add-user-mappings
zwei neue Zuordnungen von Nutzerkonten zu Dienstkonten zum sicheren Multi-Tenant-Cluster hinzugefügt.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --add-user-mappings=new-user1@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER1@iam.gserviceaccount.com,new-user2@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com
Nutzer entfernen
Im folgenden Update-Befehl wird das Flag --remove-user-mappings
verwendet, um zwei Nutzer aus dem Multi-Tenant-Cluster zu entfernen. Das Flag akzeptiert die Nutzerkonten der zu entfernenden Nutzer.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --remove-user-mappings=UserB@my-company.com,UserC@my-company.com
Nutzer ersetzen
Mit dem Befehl „update“ und dem Flag --identity-config-file
können Sie die vorhandene Gruppe von Nutzern durch eine neue Gruppe ersetzen. Dieses Flag ist nützlich, um Nutzer mit einem einzigen Update-Befehl hinzuzufügen und zu entfernen.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --identity-config-file=identity-config.yaml
Hinweise:
--identity-config-file
: Geben Sie eine lokale oder Cloud Storage-YAML-Datei an, die die neuen Zuordnungen von Nutzerkonto zu Dienstkonto enthält. Jede Zeile in der Zuordnungsdatei ordnet ein Nutzerkonto einem Dienstkonto zu. Die erste Zeile enthält den Header--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:
.user_service_account_mapping: new-user1@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER1@iam.gserviceaccount.com new-user2@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com