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 er ein Secret Manager-Secret verwendet. Verwenden Sie dazu den Secret Manager-Anmeldedatenanbieter.
Verfügbarkeit
Dieses Feature ist für die Verwendung mit Dataproc-Clustern verfügbar, die mit den Image-Versionen 2.0.97+, 2.1.41+, 2.2.6+ oder späteren Hauptversionen von Dataproc-Image-Versionen 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 eine Anmeldedaten aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Wert werden einer Secret Manager-Secret-ID und einem Secret-Wert (Secret-Version) zugeordnet. |
Nutzung
Sie können Hadoop und andere OSS-Komponenten für die Verwendung mit Secret Manager konfigurieren, indem Sie die folgenden Attribute festlegen, wenn Sie einen Dataproc-Cluster erstellen oder einen Job senden.
Anbieterpfad : Die Eigenschaft „Anbieterpfad“ (
hadoop.security.credential.provider.path
) ist eine durch Kommas getrennte Liste mit einem oder mehreren URI-Pfaden für Anmeldedatenanbieter, die durchlaufen werden, um Anmeldedaten aufzulösen.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Das
scheme
im Anbieterpfad gibt den Typ des Anmeldedatenanbieters an. Hadoop-Schemata umfassenjceks://
,user://
undlocaljceks://
. Verwenden Sie dasgsm://
-Schema,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 verwenden jedoch Punkte in ihren Anmeldedatenschlüsseln. Um diese Einschränkung zu beheben, aktivieren Sie diese Eigenschaft, damit Punkte (.
) in Anmeldedatennamen durch Bindestriche (-
) ersetzt werden. So wird dafür gesorgt, dass OSS-Anmeldedaten mit Punkten im Namen korrekt in Secret Manager gespeichert und abgerufen werden können.Wenn ein OSS-Anmeldeschlüssel beispielsweise
a.b.c
ist, 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 ein optionales Attribut. Der Standardwert ist
false
. Bei Anmeldedatenschlüsseln, deren Anmeldedatenname keinen Punktoperator (.
) 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 stabil auf eine bestimmte Secret-Version zugreifen.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Dies ist ein optionales Attribut. Standardmäßig greift Secret Manager auf die Version
LATEST
zu, die zur Laufzeit in den neuesten Wert des Secrets aufgelöst wird. 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 finden Sie im Bereich Projektinformationen des Google Cloud -Konsolendashboards.
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 finden Sie im Abschnitt Projektinformationen des Google Cloud Konsolen-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. In der Produktion empfiehlt es sich, das Passwort in Secret Manager zu speichern und dann die Konfigurationsdatei hive-site.xml
zu aktualisieren, damit 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 Secret Manager oder dem Befehl
hadoop credential
.Alternative 1:Secret mit Secret Manager erstellen
- Name des Secrets:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Name des Secrets:
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 mit einem Texteditor das Attribut
javax.jdo.option.ConnectionPassword
aus der Dateihive-site.xml
und fügen Sie dann die Attributehadoop.security.credential.provider.path
undhadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
in die Datei ein.Beispiel-Properties:
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 in 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 Secret Manager oder dem Befehl
hadoop credential
.- Alternative 1:Secret mit Secret Manager erstellen
- Name des Secrets:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Name des Secrets:
- 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 Punkte(.
) im Passwort durch Bindestriche(-
).
- METASTORE_PASSWORD: Da der Secret Manager den Punktoperator(
- Alternative 1:Secret mit Secret Manager 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.
Mit diesem Cluster können Sie Hive-Jobs ausfü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 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 Speicherort (den Anbieterspeicher) anzugeben. Das Schema gsm://
gibt den Secret Manager an.
Erstellt ein Secret mit der angegebenen Secret-ID. Mit dem Befehl wird das Secret nicht erstellt, wenn die angegebene Secret-ID vorhanden ist. Dieses Verhalten entspricht der Hadoop-API
CredentialProvider
.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 ein Secret in einem Projekt mit einem angegebenen Wert vorhanden ist.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Nach einer bestimmten Secret-Version in einer Konfigurationsdatei 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.Löscht alle Versionen eines Secrets in einem Projekt.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Weitere Informationen finden Sie im Leitfaden zu Hadoop-Befehlen.
Nächste Schritte
- Weitere Informationen finden Sie in der Hive-Dokumentation.