Anmeldedatenanbieter für Secret Manager

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

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ören jceks://, user://, localjceks://. Verwenden Sie das gsm://-Schema wie im vorherigen Beispiel, um in Secret Manager nach den Anmeldedaten zu suchen.
  • 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 auf true gesetzt ist. Sie können Punkte(.) in Anmeldedatennamen durch Bindestriche(-) ersetzen. Wenn dieses Attribut beispielsweise auf true festgelegt ist, können Sie den Namen der Anmeldedaten a.b.c als a-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

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

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

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

  4. Entfernen Sie javax.jdo.option.ConnectionPassword aus der Datei hive-site.xml. Mit dem folgenden Befehl wird die Datei zur Bearbeitung in vim geöffnet.

    sudo vim /etc/hive/conf/hive-site.xml
    

  5. Starten Sie 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 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"
    

  2. 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.
    • 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(-).
  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, 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