Übersicht
Mit Secret Manager können Sie Ihre sensiblen Daten schützen, z. B. Ihre API-Schlüssel, Passwörter und Zertifikate. So können Sie Ihre Secrets in Google Cloud an einer zentralen Stelle verwalten, darauf zugreifen und prüfen.
Die GoogleHadoopSecretManagerCredentialProvider
API, die in Secret Manager eingebunden ist, ist eine Implementierung der Hadoop CredentialProvider API, einer Lösung zum Schutz vertraulicher Anmeldedaten vor öffentlichem Zugriff.
Sie haben folgende Möglichkeiten, die Hadoop-Anmeldedatenanbieter-API zu verwenden:
- Verwenden Sie Hadoop-Befehle für Anmeldedaten.
- Konfigurieren Sie Open-Source-Komponenten wie Hive für die Verwendung mit Secret Manager.
Terminologie
In der folgenden Tabelle werden die in diesem Dokument verwendeten Begriffe beschrieben.
Begriff | Beschreibung |
---|---|
Secret |
Ein Secret ist ein projektweites Objekt, 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 Anmeldedatensatz aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Wert sind einer Secret-ID zugeordnet und den Secret-Wert (Secret-Version) in Secret Manager. |
Befehle für Hadoop-Anmeldedaten
Mit dem Befehl hadoop credential
können Sie Secrets erstellen, auflisten und verwalten.
hadoop credential
-Befehle verwenden dieses allgemeine 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 Sie, ob in einem Projekt mit einem angegebenen Wert ein Secret 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, die
hadoop.security.credstore.google-secret-manager.secret-version
festlegt.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 .
OSS-Komponenten konfigurieren
Sie können Hadoop und andere unterstützte Open-Source-Komponenten für die Verwendung mit dem Secret Manager konfigurieren, indem Sie die folgenden Komponenteneigenschaften festlegen:
Anbieterpfad (erforderlich): 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
- Mit
scheme
wird der Typ des Anmeldedatenanbieters angegeben. Hadoop-Schemas umfassenjceks://
,user://
,localjceks://
. Verwenden Sie das Schemagsm://
als die im vorherigen Beispiel gezeigt wurden, um in Secret Manager nach den Anmeldedaten zu suchen.
- Mit
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 Punkt(.
)s in Namen von Anmeldedaten durch Bindestriche(-
) ersetzen. Beispiel: Wenn dieses Attribut auftrue
festgelegt ist, können Sie den Namen der Anmeldedaten angebena.b.c
alsa-b-c
, wenn sie an Secret Manager übergeben werden. Dieses Property nur erforderlich ist, um Anmeldedaten mithilfe von Befehle für Hadoop-Anmeldedaten oder wenn eine OSS-Komponente versucht, Anmeldedaten aufzulösen. Dies hat keine Auswirkungen auf Befehle für Hadoop-Anmeldedaten erstellen, auflisten oder löschen.--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.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Beispiele für Hive Metastore
Die Hive-Metastore-Eigenschaft javax.jdo.option.ConnectionPassword
enthält das Passwort, mit dem der Zugriff auf eine Metastore-Datenbank authentifiziert wird. Dieses Passwort wird im Nur-Text-Format in hive-site.xml
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
zu aktualisieren, damit der Hive Metastore-Dienst das Passwort aus Secret Manager lesen kann.
In den folgenden Abschnitten finden Sie eine Anleitung zur Verwendung von Secret Manager in verschiedenen Hive Metastore-Szenarien.
Hive-Cluster mit lokalem Metastore
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um Dataproc-Cluster erstellen durch die erforderlichen Clusterattribute.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Secret erstellen Sie können ein Secret mit Secret Manager erstellen oder den Befehl
hadoop credential
.Alternative 1: Secret Manager mit Secret Manager verwenden.
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Secret-Name:
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 Secret Manager
Der Operator „Punkt“ (
.
) wird nicht unterstützt. Ersetzen Sie den Operator „Punkt“ (.
) im Passwort. mit Bindestrichen(-
)
- METASTORE_PASSWORD: Da Secret Manager
Der Operator „Punkt“ (
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.ConnectionPassword
aus der Dateihive-site.xml
. Fügen Sie dann das Attributhadoop.security.credential.provider.path
undhadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
-Attribute hinzu.Beispielattribute:
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
Hive-Cluster mit externem Metaspeicher
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um Dataproc-Cluster erstellen mit den folgenden Clusterattributen.
gcloud dataproc clusters create 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...
Secret erstellen Sie können ein Secret mit Secret Manager erstellen oder den Befehl
hadoop credential
.- Alternative 1: Secret Manager mit Secret Manager verwenden.
- Secret-Name:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Secret-Wert:
METASTORE_PASSWORD
.
- Secret-Name:
- 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 Secret Manager
Der Operator „Punkt“ (
.
) wird nicht unterstützt. Ersetzen Sie „Punkt“ (.
) im Passwort. mit Bindestrichen(-
)
- METASTORE_PASSWORD: Da Secret Manager
Der Operator „Punkt“ (
- Alternative 1: Secret Manager mit Secret Manager verwenden.
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, Dataproc-Cluster erstellen mit den folgenden Clusterattributen. Verwenden Sie diesen Cluster, um Hive-Jobs auszuführen und eine Verbindung zum externen Metaspeicher herzustellen.
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...
Weitere Informationen
- Hive-Dokumentation ansehen