Beim Erstellen eines Dataproc-Clusters können Sie die Dataproc-Cluster-Clusterauthentifizierung aktivieren, damit interaktive Arbeitslasten im Cluster sicher als Nutzeridentität ausgeführt werden können. Dies bedeutet, dass Interaktionen mit anderen Google Cloud-Ressourcen wie Cloud Storage als Sie selbst und nicht als das Clusterdienstkonto 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 dann keine Jobs auf dem Cluster ausführen und nicht 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 auf dem Cluster interagieren jedoch mit Google Cloud-Ressourcen wie derselbe Nutzer.
Die Dataproc-Personal-Cluster-Authentifizierung unterstützt derzeit keine Dataproc-Workflows.
Die Dataproc-Clustercluster-Authentifizierung ist nur für interaktive Jobs vorgesehen, die von einem einzelnen Nutzer 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.
Ziele
Dataproc-Cluster mit aktiviertem Dataproc-Clustercluster-Authentifizierung erstellen
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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
- Install the Google Cloud CLI.
-
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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
- Install the Google Cloud CLI.
-
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 login
aus, 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)"
Erstellen Sie einen Cluster.
gcloud dataproc clusters create cluster-name \ --properties=dataproc:dataproc.personal-auth.user=your-email-address \ --enable-component-gateway \ --optional-components=ZEPPELIN \ --region=region
Aktivieren Sie eine Sitzung zur Weitergabe der 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. Der Zugriff wird auf den Staging-Bucket des Dataproc-Clusters beschränkt. Weitere Informationen finden Sie unter Downscope mit Zugriffsgrenzen für Anmeldedaten .
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-C
ein, 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 list
aus - 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 dataproc/$(hostname -f)
- Führen Sie
klist
aus, um zu prüfen, ob Jupyter ein gültiges TGT-Objekt erhalten hat.
- Führen Sie
- Erstellen Sie in einem Jupyter-Terminal mit der gcloud CLI eine
rose.txt
-Datei in einem Cloud Storage-Bucket in Ihrem Projekt.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 list
aus - 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 dataproc/$(hostname -f)
- Führen Sie
klist
aus, um zu prüfen, ob Jupyter ein gültiges TGT-Objekt erhalten hat.
- Führen Sie
- Erstellen Sie in einem Jupyter-Terminal mit der gcloud CLI eine
rose.txt
-Datei in einem Cloud Storage-Bucket in Ihrem Projekt.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.txt
in 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 verifizieren, ob 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 Dataproc-Cluster.
gcloud dataproc clusters delete cluster-name --region=region