Überblick
Secret Manager kann Ihre sensiblen Daten wie API-Schlüssel, Passwörter und Zertifikate schützen. Damit können Sie Ihre Secrets in Google Cloud verwalten, darauf zugreifen und sie prüfen.
Die GoogleHadoopSecretManagerCredentialProvider
API, die sich in Secret Manager einbinden lässt, ist eine Implementierung der Hadoop CredentialProvider API, eine Lösung zum Schutz vertraulicher Anmeldedaten vor öffentlichem Zugriff.
Sie können die Hadoop-API des Credential Providers auf folgende Arten verwenden:
- Verwenden Sie Hadoop-Anmeldedatenbefehle.
- Konfigurieren Sie OSS-Komponenten wie Hive für die Arbeit mit Secret Manager.
Terminologie
In der folgenden Tabelle werden die in diesem Dokument verwendeten Begriffe beschrieben.
Begriff | Beschreibung |
---|---|
Secret |
Ein Secret ist ein globales Projektobjekt, das eine Sammlung von Metadaten und Secret-Versionen enthält. Mit Secret Manager können Sie Secrets als binäre Blobs oder Textstrings speichern, verwalten und darauf zugreifen. |
Credential |
In Hadoop und anderen von Dataproc gehosteten Anwendungen besteht ein Ausweisdokument aus einem Namen (ID) und einem Wert (Passwort). Eine Anmeldedaten-ID und ein Wert werden einer Secret-ID und einem Secret-Wert (Secret-Version) in Secret Manager zugeordnet. |
Befehle für Hadoop-Anmeldedaten
Mit dem Befehl hadoop credential
können Sie Secrets erstellen, auflisten und verwalten.
hadoop credential
-Befehle verwenden das folgende allgemeine Format: hadoop credential SUBCOMMAND OPTIONS
.
In den folgenden Beispielen wird das Flag -provider
hinzugefügt, um Typ und Standort des Anbieters (Anbieterspeicher) anzugeben. Das Schema gsm://
gibt den Secret Manager an.
Erstellen Sie ein Secret mit der angegebenen Secret-ID. Wenn die angegebene Secret-ID vorhanden ist, wird das Secret nicht mit dem Befehl erstellt. 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 Sie, ob in einem Projekt ein Secret mit einem angegebenen Wert vorhanden ist.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Suchen Sie in einer Konfigurationsdatei nach einer bestimmten Secret-Version.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/project-id -v VALUE
CONFIG_FILE: Die XML-Datei, mit 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 in der Hadoop-Befehlsanleitung.
OSS-Komponenten konfigurieren
Sie können Hadoop und andere unterstützte OSS-Komponenten für die Arbeit mit Secret Manager konfigurieren. Legen Sie dazu die folgenden Komponenteneigenschaften fest:
Anbieterpfad (erforderlich): Das Attribut „Anbieterpfad“
hadoop.security.credential.provider.path
ist eine durch Kommas getrennte Liste mit einem oder mehreren URIs von Anmeldedatenanbietern, die zur Auflösung von Anmeldedaten durchlaufen wird.--properties=hadoop.security.credential.provider.path=gsm://projects/project-id
- Ein
scheme
wird verwendet, um den Typ des Anmeldedatenanbieters anzugeben. Zu Hadoop-Schemas gehörenjceks://
,user://
,localjceks://
. Verwenden Sie dasgsm://
-Schema wie im vorherigen Beispiel, um in Secret Manager nach den Anmeldedaten zu suchen.
- Ein
Ersatzpunkt-Operator (optional): Secret Manager unterstützt den Punkt(
.
) in Secret-Namen nicht, aber die Anmeldedatenschlüssel der OSS-Komponente können diesen Operator enthalten. Wenn dieses Attribut auftrue
gesetzt ist. Sie können Punkte(.
) in Anmeldedatennamen durch Bindestriche(-
) ersetzen. Wenn dieses Attribut beispielsweise auftrue
festgelegt ist, können Sie den Namen der Anmeldedatena.b.c
alsa-b-c
angeben, wenn Sie ihn an Secret Manager übergeben. Dieses Attribut wird nur benötigt, um Anmeldedaten mithilfe von Hadoop-Befehlen für Anmeldedaten anzugeben oder wenn eine OSS-Komponente versucht, Anmeldedaten aufzulösen. Sie hat keine Auswirkungen auf das Erstellen, Auflisten oder Löschen von Hadoop-Anmeldedatenbefehlen.--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 dieses Attribut, um auf eine Secret-Version zuzugreifen. Standardmäßig greift Secret Manager auf die Version
LATEST
zu, die zum neuesten Wert des Secrets zur Laufzeit aufgelöst wird. Es empfiehlt sich, diese Property für einen stabilen Zugriff in Produktionsumgebungen zu definieren.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Hive Metastore-Beispiele
Das Hive Metastore-Attribut javax.jdo.option.ConnectionPassword
enthält das Passwort, mit dem der Zugriff auf eine Metastore-Datenbank authentifiziert wird. Dieses Passwort ist im Nur-Text-Format in hive-site.xml
gespeichert, das 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
zu aktualisieren, damit der Hive Metastore-Dienst das Passwort aus Secret Manager lesen kann.
Die folgenden Abschnitte enthalten Anleitungen zur Verwendung von Secret Manager in verschiedenen Hive Metastore-Szenarien.
Hive-Cluster mit lokalem Metaspeicher
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den erforderlichen Clusterattributen zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \ --properties="hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true"
Erstellen Sie ein Secret. Sie können ein Secret mit dem Secret Manager oder dem Befehl
hadoop credential
erstellen.Alternative 1:Secret Manager mit dem Secret Manager erstellen
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Secret-Name:
Alternative 2:Erstellen Sie mit dem Befehl
hadoop credential
ein Secret.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da Secret Manager den Punkt(
.
) nicht unterstützt, ersetzen Sie jeden Punkt(.
) im Passwort durch einen Bindestrich(-
).
- METASTORE_PASSWORD: Da Secret Manager den Punkt(
Prüfen Sie, ob das Secret vorhanden ist.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Entfernen Sie
javax.jdo.option.ConnectionPassword
aus der Dateihive-site.xml
. Mit dem folgenden Befehl wird die Datei zur Bearbeitung invim
geöffnet.sudo vim /etc/hive/conf/hive-site.xml
Starten Sie Hive Metastore neu.
sudo systemctl restart hive-metastore
Hive-Cluster mit externem Metaspeicher
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den folgenden Clusterattributen zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore"
Erstellen Sie ein Secret. Sie können ein Secret mit dem Secret Manager oder dem Befehl
hadoop credential
erstellen.- Alternative 1:Secret Manager mit dem Secret Manager erstellen:
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Secret-Name:
- Alternative 2:Erstellen Sie mit dem Befehl
hadoop credential
ein Secret.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Da Secret Manager den Punkt(
.
) nicht unterstützt, ersetzen Sie Punkt(.
) im Passwort durch Bindestriche(-
).
- METASTORE_PASSWORD: Da Secret Manager den Punkt(
- Alternative 1:Secret Manager mit dem Secret Manager erstellen:
Prüfen Sie, ob das Secret vorhanden ist.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Dataproc-Cluster mit den folgenden Clusterattributen zu erstellen. Verwenden Sie diesen Cluster, um Hive-Jobs auszuführen und eine Verbindung zum externen Metaspeicher herzustellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... --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"
Weitere Informationen
- Hive-Dokumentation ansehen