Ü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 inGoogle Cloudverwalten, 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 : Die Eigenschaft „Anbieterpfad“,
hadoop.security.credential.provider.path
, ist eine durch Kommas getrennte Liste von URIs eines oder mehrerer 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 : Der Secret Manager-Dienst erlaubt keine Punkte (
.
) in Secret-Namen. Einige Open-Source-Softwarekomponenten verwenden jedoch Punkte in ihren Anmeldeschlüsseln. Wenn Sie diese Einschränkung beheben möchten, aktivieren Sie diese Eigenschaft, um Punkte (.
) in Anmeldedatennamen durch Bindestriche (-
) zu ersetzen. So können OpenStack-Anmeldedaten mit Punkten in ihren Namen korrekt in Secret Manager gespeichert und abgerufen werden.Wenn ein Anmeldeschlüssel für Open Source-Dienste beispielsweise
a.b.c
lautet, müssen Sie ihn in Secret Manager ina-b-c
ändern.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Dieses Attribut ist optional. Der Standardwert ist
false
. Bei Anmeldedatenschlüsseln, die keinen Punkt (.
) im Anmeldedatennamen haben, kann diese Eigenschaft ignoriert werden.Secret-Version : Secrets in Secret Manager können mehrere Versionen (Werte) haben. Verwenden Sie dieses Attribut, um in Produktionsumgebungen stabil auf eine bestimmte Secret-Version zuzugreifen.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Dieses Attribut ist optional. Standardmäßig greift Secret Manager auf die
LATEST
-Version zu, die bei Laufzeit auf den neuesten Wert des Secrets verweist. Wenn Sie immer auf dieLATEST
-Version eines Secrets zugreifen möchten, kann diese Eigenschaft ignoriert werden.
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 Bindestriche(-
).
- 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 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 externem 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.