Übersicht
Mit Secret Manager können Sie Ihre sensiblen Daten wie API-Schlüssel, Passwörter und Zertifikate schützen. Sie können damit Ihre Secrets in Google Cloud verwalten, darauf zugreifen und sie prüfen.
Sie können einen Dataproc-Cluster oder ‑Job so konfigurieren, dass ein Secret Manager-Secret verwendet wird. Verwenden Sie dazu den Secret Manager-Anmeldedatenanbieter.
Verfügbarkeit
Diese Funktion kann mit Dataproc-Clustern verwendet werden, die mit den Dataproc-Image-Versionen 2.0.97, 2.1.41 oder 2.2.6 oder höher erstellt wurden.
Terminologie
In der folgenden Tabelle werden die in diesem Dokument verwendeten Begriffe beschrieben.
Begriff | Beschreibung |
---|---|
Secret |
Ein Secret Manager-Secret ist ein globales Projektobjekt, das eine Sammlung von Metadaten und Secret-Versionen enthält. Sie können Secrets als binäre Blobs oder Textstrings speichern, verwalten und darauf zugreifen. |
Credential |
In Hadoop und anderen von Dataproc gehosteten Anwendungen besteht ein Anmeldedatensatz aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Anmeldedatenwert werden einer geheimen ID und einem geheimen Wert (Secret-Version) im Secret Manager zugeordnet. |
Nutzung
Sie können Hadoop und andere Open-Source-Komponenten für die Arbeit mit dem Secret Manager konfigurieren. Legen Sie dazu beim Erstellen eines Dataproc-Clusters oder beim Einreichen eines Jobs die folgenden Attribute fest.
Anbieterpfad (erforderlich): Die Eigenschaft „Anbieterpfad“,
hadoop.security.credential.provider.path
, ist eine durch Kommas getrennte Liste von URIs für einen oder mehrere Anmeldedatenanbieter, die durchlaufen werden, um Anmeldedaten aufzulösen.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Das
scheme
im Anbieterpfad gibt den Anmeldedatenanbietertyp an. Zu den Hadoop-Schemas gehörenjceks://
,user://
undlocaljceks://
. Verwenden Sie das Schemagsm://
,um in Secret Manager nach Anmeldedaten zu suchen.
- Das
Punktoperator ersetzen (optional): Der Secret Manager unterstützt den Punktoperator(
.
) in Secret-Namen nicht, aber Anmeldedatenschlüssel von Open-Source-Komponenten können diesen Operator enthalten. Wenn diese Property auftrue
festgelegt ist. Sie können Punkte(.
) in Anmeldedatennamen durch Bindestriche(-
) ersetzen. Wenn diese Eigenschaft beispielsweise auftrue
festgelegt ist, können Sie den Anmeldedatennamena.b.c
alsa-b-c
angeben, wenn Sie ihn an Secret Manager übergeben.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Secret-Version (optional): Secrets in Secret Manager können mehrere Versionen (Werte) haben. Verwenden Sie diese Eigenschaft, um auf eine Secret-Version zuzugreifen. Standardmäßig greift Secret Manager auf die
LATEST
-Version zu, die bei Laufzeit auf den neuesten Wert des Secrets verweist. Es wird empfohlen, diese Property für einen stabilen Zugriff in Produktionsumgebungen zu definieren. Informationen zum Erstellen eines Secrets finden Sie unter Secret mit Secret Manager erstellen und darauf zugreifen und Befehle für Hadoop-Anmeldedaten.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Dataproc-Cluster mit Secret Manager-Anmeldedatenanbieter erstellen
- Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den erforderlichen Eigenschaften zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Hinweise:
- CLUSTER_NAME: Der Name des neuen Clusters.
- REGION: Eine Compute Engine-Region, in der Ihre Arbeitslast ausgeführt wird.
- PROJECT_ID: Ihre Projekt-ID ist im Bereich Projektinformationen des Google Cloud Console-Dashboards aufgeführt.
Dataproc-Job mit Secret Manager-Anmeldedatenanbieter senden
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Job mit den erforderlichen Eigenschaften zu senden.
gcloud dataproc jobs submit CLUSTER_NAME \ --region=REGION \ --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed... \ -- job-args
Hinweise:
- CLUSTER_NAME: Der Name des Clusters, auf dem der Job ausgeführt wird.
- REGION: Eine Compute Engine-Region, in der Ihre Arbeitslast ausgeführt wird.
- PROJECT_ID: Ihre Projekt-ID ist im Bereich Projektinformationen des Google Cloud Console-Dashboards aufgeführt.
Secret Manager mit Hive Metastore verwenden
Die Hive-Metastore-Eigenschaft javax.jdo.option.ConnectionPassword
enthält das Passwort, mit dem der Zugriff auf die Metastore-Datenbank authentifiziert wird. Das Passwort wird in hive-site.xml
im Textformat gespeichert, was ein Sicherheitsrisiko darstellt. Eine Best Practice für die Produktion besteht darin, das Passwort in Secret Manager zu speichern und dann die Konfigurationsdatei hive-site.xml
so zu aktualisieren, dass der Hive-Metastore-Dienst das Passwort aus Secret Manager lesen kann.
In den folgenden Beispielen wird gezeigt, wie Sie Secret Manager in verschiedenen Hive Metastore-Szenarien verwenden.
Cluster mit lokalem Metastore erstellen
- Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Hinweise:
- CLUSTER_NAME: Der Name des neuen Clusters.
- REGION: Eine Compute Engine-Region, in der Ihre Arbeitslast ausgeführt wird.
Erstellen Sie ein Secret mit dem Secret Manager oder dem Befehl
hadoop credential
.Alternative 1:Mit Secret Manager ein Secret erstellen
- Geheimname:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Geheimname:
Alternative 2:Verwenden Sie den Befehl
hadoop credential
, um ein Secret zu erstellen.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da der Secret Manager den Punktoperator(
.
) nicht unterstützt, ersetzen Sie alle Punkte(.
) im Passwort durch Bindestrich(-
).
- METASTORE_PASSWORD: Da der Secret Manager den Punktoperator(
Prüfen Sie, ob das Secret vorhanden ist.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Entfernen Sie die Property
javax.jdo.option.ConnectionPassword
aus der Dateihive-site.xml
und fügen Sie der Datei die Propertieshadoop.security.credential.provider.path
undhadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
hinzu.Beispieleigenschaften:
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Starten Sie den Hive-Metastore neu.
sudo systemctl restart hive-metastore
Cluster mit einem externen Hive-Metastore erstellen
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den folgenden Clustereigenschaften zu erstellen. Verwenden Sie diesen Cluster als externen Hive-Metastore für Hive-Jobs, die von anderen Dataproc-Clustern für Spark Hive-Arbeitslasten ausgeführt werden.
gcloud dataproc clusters create METASTORE_CLUSTER_NAME \ --region=REGION \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \ ...other flags as needed...
Erstellen Sie ein Secret mit dem Secret Manager oder dem Befehl
hadoop credential
.- Alternative 1:Mit Secret Manager ein Secret erstellen
- Geheimname:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Geheimname:
- Alternative 2:Verwenden Sie den Befehl
hadoop credential
, um ein Secret zu erstellen.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da der Secret Manager den Punktoperator(
.
) nicht unterstützt, ersetzen Sie im Passwort alle Punkte(.
) durch Bindestriche(-
).
- METASTORE_PASSWORD: Da der Secret Manager den Punktoperator(
- Alternative 1:Mit Secret Manager ein Secret erstellen
Prüfen Sie, ob das Secret vorhanden ist.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Cluster zum Ausführen von Hive-Jobs erstellen, die eine Verbindung zu einem externen Metastore herstellen
- Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den folgenden Clustereigenschaften zu erstellen.
Verwenden Sie diesen Cluster, um Hive-Jobs auszuführen, die eine Verbindung zum externen Metastore in einem anderen Dataproc-Cluster herstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://METASTORE_CLUSTER_NAME-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Befehle für Hadoop-Anmeldedaten
Sie können SSH verwenden, um eine Verbindung zum Dataproc-Masterknoten herzustellen und mit dem Befehl hadoop credential
Geheimnisse zu erstellen, aufzulisten und zu verwalten.
hadoop credential
-Befehle haben das folgende Format:
hadoop credential SUBCOMMAND OPTIONS
.
In den folgenden Beispielen wird das Flag -provider
hinzugefügt, um den Anbietertyp und den Standort (den Anbieterspeicher) anzugeben. Das gsm://
-Schema gibt den Secret Manager an.
Erstellen Sie ein Secret mit der angegebenen Secret-ID. Das Secret wird nicht erstellt, wenn die angegebene Secret-ID bereits vorhanden ist. Dieses Verhalten entspricht der Hadoop
CredentialProvider
API.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
In einem Projekt gespeicherte Secrets auflisten
hadoop credential list -provider gsm://projects/PROJECT_ID
Prüfen, ob in einem Projekt ein Secret mit einem bestimmten Wert vorhanden ist
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
In einer Konfigurationsdatei nach einer bestimmten Secret-Version suchen
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
CONFIG_FILE: Die XML-Datei, in der
hadoop.security.credstore.google-secret-manager.secret-version
festgelegt wird.Alle Versionen eines Secrets in einem Projekt löschen
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Weitere Informationen finden Sie im Leitfaden zu Hadoop-Befehlen.