Secret Manager-Anmeldedatenanbieter

Ü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:

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 umfassen jceks://, user://,localjceks://. Verwenden Sie das Schema gsm:// als die im vorherigen Beispiel gezeigt wurden, um in Secret Manager nach den Anmeldedaten zu suchen.
  • 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 auf true festgelegt ist. Sie können Punkt(.)s in Namen von Anmeldedaten durch Bindestriche(-) ersetzen. Beispiel: Wenn dieses Attribut auf true festgelegt ist, können Sie den Namen der Anmeldedaten angeben a.b.c als a-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

  1. 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... \
    

  2. 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.
    • 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(-)
  3. Prüfen Sie, ob das Secret vorhanden ist.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
    

  4. Entfernen Sie mit einem Texteditor die Eigenschaft javax.jdo.option.ConnectionPassword aus der Datei hive-site.xml. Fügen Sie dann das Attribut hadoop.security.credential.provider.path und hadoop.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
    

  5. Starten Sie den Hive-Metastore neu.

    sudo systemctl restart hive-metastore
    

Hive-Cluster mit externem Metaspeicher

  1. 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...
    

  2. 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.
    • 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(-)
  3. Prüfen Sie, ob das Secret vorhanden ist.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
      

  4. 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