Mit Secret Manager können Sie Ihre vertraulichen Daten wie API-Schlüssel, Passwörter und Zertifikate schützen. Sie können damit Ihre Secrets in verwalten, darauf zugreifen und sie prüfen. Google Cloud
Sie können einen Dataproc-Cluster oder -Job so konfigurieren, dass er ein Secret Manager-Secret verwendet. Dazu nutzen Sie den Secret Manager-Anmeldedatenanbieter.
Verfügbarkeit
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 auf Dataproc gehosteten Anwendungen besteht ein Anmeldedatum aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Anmeldedatenwert werden einer Secret Manager Secret-ID und einem Secret-Wert (Secret-Version) zugeordnet. |
Nutzung
Sie können Hadoop und andere OSS-Komponenten so konfigurieren, dass sie mit Secret Manager funktionieren. Dazu legen Sie beim Erstellen eines Dataproc-Clusters oder beim Senden eines Jobs die folgenden Eigenschaften fest.
Anbieterpfad : Die Eigenschaft für den Anbieterpfad,
hadoop.security.credential.provider.path, ist eine durch Kommas getrennte Liste mit einem oder mehreren URIs des Anmeldedatenanbieters, die durchlaufen wird, um ein Anmeldedatum aufzulösen.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Das
schemeim Anbieterpfad gibt den Typ des Anmeldedatenanbieters an. Hadoop-Schemes sind unter anderemjceks://,user://undlocaljceks://. Verwenden Sie dasgsm://-Scheme,um in Secret Manager nach Anmeldedaten zu suchen.
- Das
Punktoperator ersetzen : Der Secret Manager-Dienst lässt keine Punkte (
.) in Secret-Namen zu. Einige OSS-Komponenten (Open-Source-Software) verwenden jedoch Punkte in ihren Anmeldedatenschlüsseln. Um diese Einschränkung zu beheben, aktivieren Sie diese Eigenschaft, um Punkte (.) in Anmeldedatennamen durch Bindestriche (-) zu ersetzen. So können OSS-Anmeldedaten mit Punkten in ihren Namen korrekt in Secret Manager gespeichert und abgerufen werden.Wenn ein OSS-Anmeldedatenschlüssel beispielsweise
a.b.cist, müssen Sie ihn ina-b-cändern, wenn Sie ihn in Secret Manager speichern.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Dies ist eine optionale Eigenschaft. Der Standardwert ist
false. Bei Anmeldedatenschlüsseln, deren Anmeldedatenname keinen Punkt (.) Operator enthält, kann diese Eigenschaft ignoriert werden.Secret-Version : Secrets in Secret Manager können mehrere Versionen (Werte) haben. Mit dieser Eigenschaft können Sie in Produktionsumgebungen auf eine bestimmte Secret-Version zugreifen, um einen stabilen Zugriff zu gewährleisten.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Dies ist eine optionale Eigenschaft. Standardmäßig greift Secret Manager auf die
LATESTVersion zu, die zur Laufzeit in den neuesten Wert des Secrets aufgelöst wird. Wenn Sie immer auf die VersionLATESTeines Secrets zugreifen möchten, können Sie diese Eigenschaft ignorieren.
Dataproc-Cluster mit Secret Manager-Anmeldedatenanbieter erstellen
- Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um
einen Dataproc-Cluster zu erstellen
mit den erforderlichen Eigenschaften.
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 finden Sie im Bereich Projektinformationen des Google Cloud Console-Dashboards.
Dataproc-Job mit Secret Manager-Anmeldedatenanbieter senden
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Job zu senden mit den erforderlichen Eigenschaften.
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, in dem der Job ausgeführt wird.
- REGION: Eine Compute Engine-Region , in der Ihre Arbeitslast ausgeführt wird.
- PROJECT_ID: Ihre Projekt-ID finden Sie im Bereich Projektinformationen des Google Cloud Console-Dashboards.
Secret Manager mit Hive Metastore verwenden
Die Hive Metastore-Eigenschaft javax.jdo.option.ConnectionPassword enthält
das Passwort, das zur Authentifizierung des Zugriffs auf die Metastore-Datenbank verwendet wird. Das
Passwort wird im Textformat in hive-site.xml gespeichert, was
ein Sicherheitsrisiko darstellt. Als Best Practice für die Produktion empfiehlt es sich, das Passwort
in Secret Manager zu speichern und dann die hive-site.xml config
file zu aktualisieren, damit der Hive Metastore-Dienst das Passwort
from 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 Secret Manager oder dem
hadoop credentialBefehl.Alternative 1: Erstellen Sie ein Secret mit Secret Manager.
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1 - Secret-Wert:
METASTORE_PASSWORD.
- Secret-Name:
Alternative 2: Erstellen Sie ein Secret mit dem Befehl
hadoop credential.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da Secret Manager den Punktoperator(
.) nicht unterstützt, ersetzen Sie alle Punkte(.) im Passwort durch Bindestriche(-).
- METASTORE_PASSWORD: Da Secret Manager den Punktoperator(
Prüfen Sie, ob das Secret vorhanden ist.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Entfernen Sie mit einem Texteditor die Eigenschaft
javax.jdo.option.ConnectionPasswordaus der Dateihive-site.xmlund fügen Sie dann die Eigenschaftenhadoop.security.credential.provider.pathundhadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operatorzur Datei hinzu.Beispiele für Eigenschaften:
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Starten Sie 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 zu erstellen mit den folgenden Clustereigenschaften. Verwenden Sie diesen Cluster als externen Hive Metastore für Hive-Jobs, die von anderen Dataproc-Clustern ausgeführt werden für Spark Hive-Arbeitslasten.
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 Secret Manager oder dem
hadoop credentialBefehl.- Alternative 1: Erstellen Sie ein Secret mit Secret Manager.
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1 - Secret-Wert:
METASTORE_PASSWORD.
- Secret-Name:
- Alternative 2: Erstellen Sie ein Secret mit dem Befehl
hadoop credential.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da Secret Manager den Punktoperator(
.) nicht unterstützt, ersetzen Sie alle Punkte(.) im Passwort durch Bindestriche(-).
- METASTORE_PASSWORD: Da Secret Manager den Punktoperator(
- Alternative 1: Erstellen Sie ein Secret mit Secret Manager.
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 zu erstellen
mit den folgenden Clustereigenschaften.
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...
Hadoop-Anmeldedatenbefehle
Sie können über SSH
eine Verbindung zum Dataproc-Masterknoten herstellen
um mit dem Befehl hadoop credential Secrets 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 Speicherort (den Anbieterspeicher) anzugeben. Das gsm:// Scheme gibt
Secret Manager an.
Erstellen Sie ein Secret mit der angegebenen Secret-ID. Der Befehl erstellt das Secret nicht, wenn die angegebene Secret-ID bereits vorhanden ist. Dieses Verhalten entspricht der Hadoop
CredentialProviderAPI.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Listen Sie die in einem Projekt gespeicherten Secrets auf.
hadoop credential list -provider gsm://projects/PROJECT_ID
Prüfen Sie, ob in einem Projekt ein Secret mit einem bestimmten Wert vorhanden ist.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Prüfen Sie, ob in einer Konfigurationsdatei eine bestimmte Secret-Version vorhanden ist.
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-versionfestgelegt ist.Löschen Sie alle Versionen eines Secrets in einem Projekt.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Weitere Informationen finden Sie in der Anleitung zu Hadoop-Befehlen.
Nächste Schritte
- Weitere Informationen finden Sie in der Hive-Dokumentation.