Wenn Sie einen Managed Service for Apache Spark-Cluster erstellen, können Sie die persönliche Clusterauthentifizierung für Managed Service for Apache Spark aktivieren, damit interaktive Arbeitslasten im Cluster sicher unter Ihrer Nutzeridentität ausgeführt werden können. Das bedeutet, dass Interaktionen mit anderen Google Cloud Ressourcen wie Cloud Storage als Sie selbst und nicht als das Dienstkonto des Clusters authentifiziert werden.
Hinweise
Wenn Sie einen Cluster mit aktivierter personalisierter Clusterauthentifizierung erstellen, kann der Cluster nur unter Ihrer Identität verwendet werden. Andere Nutzer können keine Jobs im Cluster ausführen oder auf Component Gateway-Endpunkte im Cluster zugreifen.
Cluster mit aktivierter personalisierter Clusterauthentifizierung blockieren den SSH-Zugriff und Compute Engine-Features wie Startskripts auf allen VMs im Cluster.
Bei Clustern, bei denen die personalisierte Clusterauthentifizierung automatisch aktiviert ist, wird Kerberos im Cluster automatisch für eine sichere Kommunikation innerhalb des Clusters aktiviert und konfiguriert. Alle Kerberos-Identitäten im Cluster interagieren jedoch als derselbe Nutzer mit Google Cloud-Ressourcen.
Cluster mit aktivierter persönlicher Clusterauthentifizierung unterstützen keine benutzerdefinierten Images.
Die Authentifizierung für persönliche Cluster in Managed Service for Apache Spark unterstützt keine Managed Service for Apache Spark-Arbeitsabläufe.
Die Authentifizierung für persönliche Cluster in Managed Service for Apache Spark ist nur für interaktive Jobs vorgesehen, die von einem einzelnen Nutzer (einer Person) ausgeführt werden. Für lang andauernde Jobs und Vorgänge sollte eine entsprechende Dienstkontoidentität konfiguriert und verwendet werden.
Die weitergegebenen Anmeldedaten werden mit einer Zugriffsgrenze für Anmeldedaten herabgestuft. Die Standardzugriffsgrenze ist auf das Lesen und Schreiben von Cloud Storage-Objekten in Cloud Storage-Buckets beschränkt, die zu demselben Projekt gehören, das den Cluster enthält. Sie können eine nicht standardmäßige Zugriffsgrenze definieren, wenn Sie enable_an_interactive_session aktivieren.
Für die Authentifizierung von persönlichen Clustern in Managed Service for Apache Spark werden Gastattribute von Compute Engine verwendet. Wenn die Funktion für Gastattribute deaktiviert ist, schlägt die persönliche Clusterauthentifizierung fehl.
Ziele
Erstellen Sie einen Managed Service for Apache Spark-Cluster, in dem die persönliche Clusterauthentifizierung für Managed Service for Apache Spark aktiviert ist.
Starten Sie die Weitergabe von Anmeldedaten an den Cluster.
Mit einem Jupyter-Notebook im Cluster können Sie Spark-Jobs ausführen, die sich mit Ihren Anmeldedaten authentifizieren.
Vorbereitung
Projekt erstellen
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Umgebung konfigurieren
Konfigurieren Sie die Umgebung in Cloud Shell oder einem lokalen Terminal:
Cloud Shell
- Starten Sie eine Cloud Shell-Sitzung.
Lokales Terminal
- Führen Sie
gcloud auth loginaus, um gültige Nutzeranmeldedaten zu erhalten.
Cluster erstellen und interaktive Sitzung aktivieren
Suchen Sie in gcloud nach der E-Mail-Adresse Ihres aktiven Kontos.
gcloud auth list --filter=status=ACTIVE --format="value(account)"
einen Cluster erstellen
gcloud dataproc clusters create CLUSTER_NAME \ --properties=dataproc:dataproc.personal-auth.user=your-email-address \ --enable-component-gateway \ --optional-components=JUPYTER \ --region=REGION
Aktivieren Sie eine Sitzung zur Weitergabe von Anmeldedaten für den Cluster, um Ihre persönlichen Anmeldedaten für die Interaktion mit Google Cloud-Ressourcen zu verwenden.
gcloud dataproc clusters enable-personal-auth-session \ --region=REGION \ CLUSTER_NAME
Beispielausgabe:
Injecting initial credentials into the cluster CLUSTER_NAME...done. Periodically refreshing credentials for cluster CLUSTER_NAME. This will continue running until the command is interrupted...
Beispiel für eine herabgestufte Zugriffsgrenze: Im folgenden Beispiel wird eine persönliche Authentifizierungssitzung aktiviert, die restriktiver als die standardmäßige Zugriffsgrenze für Anmeldedaten ist. Dadurch wird der Zugriff auf den Staging-Bucket des Managed Service for Apache Spark-Clusters eingeschränkt (weitere Informationen finden Sie unter Bereich mit Anmeldedatenzugriffsgrenzen einschränken ).
gcloud dataproc clusters enable-personal-auth-session \ --project=PROJECT_ID \ --region=REGION \ --access-boundary=<(echo -n "{ \ \"access_boundary\": { \ \"accessBoundaryRules\": [{ \ \"availableResource\": \"//storage.googleapis.com/projects/_/buckets/$(gcloud dataproc clusters describe --project=PROJECT_ID --region=REGION CLUSTER_NAME --format="value(config.configBucket)")\", \ \"availablePermissions\": [ \ \"inRole:roles/storage.objectViewer\", \ \"inRole:roles/storage.objectCreator\", \ \"inRole:roles/storage.objectAdmin\", \ \"inRole:roles/storage.legacyBucketReader\" \ ] \ }] \ } \ }") \ CLUSTER_NAME
Lassen Sie den Befehl weiter laufen und wechseln Sie zu einem neuen Cloud Shell-Tab oder einer neuen Terminalsitzung. Der Client aktualisiert die Anmeldedaten, während der Befehl ausgeführt wird.
Geben Sie
Ctrl-Cein, um die Sitzung zu beenden.
Auf Jupyter im Cluster zugreifen
gcloud
- Clusterdetails abrufen
gcloud dataproc clusters describe CLUSTER_NAME --region=REGION
Die URL der Jupyter-Weboberfläche wird in den Clusterdetails aufgeführt.
... JupyterLab: https://UUID-dot-us-central1.dataproc.googleusercontent.com/jupyter/lab/ ...
- Kopieren Sie die URL in Ihren lokalen Browser, um die Jupyter-Benutzeroberfläche zu starten.
- Prüfen, ob die persönliche Cluster-Authentifizierung erfolgreich war.
- Starten Sie ein Jupyter-Terminal.
- Führen Sie
gcloud auth listaus - Vergewissern Sie sich, dass Ihr Nutzername das einzige aktive Konto ist.

- Aktivieren Sie Jupyter in einem Jupyter-Terminal, um sich mit Kerberos zu authentifizieren und Spark-Jobs zu senden.
kinit -kt /etc/security/keytab/dataproc.service.keytab managed-spark/$(hostname -f)
- Führen Sie
klistaus, um zu prüfen, ob Jupyter ein gültiges TGT-Objekt erhalten hat.
- Führen Sie
- Verwenden Sie in einem Jupyter-Terminal die gcloud CLI, um eine
rose.txt-Datei in einem Cloud Storage-Bucket in Ihrem Projekt zu erstellen.echo "A rose by any other name would smell as sweet" > /tmp/rose.txt
gcloud storage cp /tmp/rose.txt gs://bucket-name/rose.txt
- Kennzeichnen Sie die Datei als privat, sodass nur Ihr Nutzerkonto sie lesen oder schreiben kann. Jupyter verwendet Ihre persönlichen Anmeldedaten bei der Interaktion mit Cloud Storage.
gcloud storage objects update gs://bucket-name/rose.txt --predefined-acl=private
- Prüfen Sie Ihren privaten Zugriff.
gcloud storage objects describe gs://$BUCKET/rose.txt
acl:
- Kennzeichnen Sie die Datei als privat, sodass nur Ihr Nutzerkonto sie lesen oder schreiben kann. Jupyter verwendet Ihre persönlichen Anmeldedaten bei der Interaktion mit Cloud Storage.
- email: $USER entity: user-$USER role: OWNER
Console
- Klicken Sie auf den Link Component Gateway Jupyter, um die Jupyter-Benutzeroberfläche zu starten.
- Prüfen, ob die persönliche Cluster-Authentifizierung erfolgreich war.
- Jupyter-Terminal starten
- Führen Sie
gcloud auth listaus - Vergewissern Sie sich, dass Ihr Nutzername das einzige aktive Konto ist.

- Aktivieren Sie Jupyter in einem Jupyter-Terminal, um sich mit Kerberos zu authentifizieren und Spark-Jobs zu senden.
kinit -kt /etc/security/keytab/dataproc.service.keytab managed-spark/$(hostname -f)
- Führen Sie
klistaus, um zu prüfen, ob Jupyter ein gültiges TGT-Objekt erhalten hat.
- Führen Sie
- Verwenden Sie in einem Jupyter-Terminal die gcloud CLI, um eine
rose.txt-Datei in einem Cloud Storage-Bucket in Ihrem Projekt zu erstellen.echo "A rose by any other name would smell as sweet" > /tmp/rose.txt
gcloud storage cp /tmp/rose.txt gs://bucket-name/rose.txt
- Kennzeichnen Sie die Datei als privat, sodass nur Ihr Nutzerkonto sie lesen oder schreiben kann. Jupyter verwendet Ihre persönlichen Anmeldedaten bei der Interaktion mit Cloud Storage.
gcloud storage objects update gs://bucket-name/rose.txt --predefined-acl=private
- Prüfen Sie Ihren privaten Zugriff.
gcloud storage objects describe gs://bucket-name/rose.txt
acl:
- Kennzeichnen Sie die Datei als privat, sodass nur Ihr Nutzerkonto sie lesen oder schreiben kann. Jupyter verwendet Ihre persönlichen Anmeldedaten bei der Interaktion mit Cloud Storage.
- email: $USER entity: user-$USER role: OWNER
PySpark-Job über Jupyter ausführen
- Rufen Sie einen Ordner auf und erstellen Sie ein PySpark-Notebook.
Führen Sie einen einfachen Wortcount-Job für die
rose.txt-Datei aus, die Sie oben erstellt haben. Spark kann die Dateitext_file = sc.textFile("gs://bucket-name/rose.txt") counts = text_file.flatMap(lambda line: line.split(" ")) \ .map(lambda word: (word, 1)) \ .reduceByKey(lambda a, b: a + b) print(counts.collect())rose.txtin Cloud Storage lesen, da sie mit Ihren Nutzeranmeldedaten ausgeführt wird.Sie können auch die Audit-Logs des Cloud Storage-Buckets prüfen, um zu bestätigen, dass der Job mit Ihrer Identität auf Cloud Storage zugreift. Weitere Informationen finden Sie unter Cloud-Audit-Logs mit Cloud Storage.
Bereinigen
- Löschen Sie den Managed Service for Apache Spark-Cluster.
gcloud dataproc clusters delete CLUSTER_NAME --region=REGION