Secret Manager-Anmeldedatenanbieter verwenden

Mit Secret Manager können Sie Ihre vertraulichen Daten wie API-Schlüssel, Passwörter und Zertifikate schützen. Sie können damit Ihre Secrets in verwalten, darauf zugreifen und sie prüfen. Google Cloud

Sie können einen Managed Service for Apache Spark-Cluster oder -Job so konfigurieren, dass ein Secret Manager-Secret verwendet wird. Dazu verwenden Sie den Anmeldedatenanbieter für Secret Manager.

Verfügbarkeit

Diese Funktion kann mit Managed Service for Apache Spark-Clustern verwendet werden, die mit Image-Versionen 2.0.97+, 2.1.41+, 2.2.6+ oder späteren Hauptversionen von Managed Service for Apache Spark-Images 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 in Managed Service for Apache Spark gehosteten Anwendungen besteht ein Anmeldedatum aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Anmeldedatenwert werden einer Secret Manager Secret-ID und einem Secret-Wert (Secret-Version) zugeordnet.

Nutzung

Sie können Hadoop und andere OSS-Komponenten so konfigurieren, dass sie mit Secret Manager funktionieren. Dazu legen Sie die folgenden Attribute fest, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen oder einen Job senden.

  • Anbieterpfad : Das Attribut für den Anbieterpfad, hadoop.security.credential.provider.path, ist eine durch Kommas getrennte Liste mit einem oder mehreren URIs des Anmeldedatenanbieters, die durchlaufen wird, 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-Schemes sind unter anderem jceks://, user:// und localjceks://. Verwenden Sie das gsm://-Scheme,um in Secret Manager nach Anmeldedaten zu suchen.
  • Punktoperator ersetzen : Der Secret Manager-Dienst lässt keine Punkte (.) in Secret-Namen zu. Einige OSS-Komponenten (Open-Source-Software) verwenden jedoch Punkte in ihren Anmeldedatenschlüsseln. Um diese Einschränkung zu beheben, aktivieren Sie dieses Attribut, um Punkte (.) in Anmeldedatennamen durch Bindestriche (-) zu ersetzen. So können OSS-Anmeldedaten mit Punkten in ihren Namen korrekt in Secret Manager gespeichert und abgerufen werden.

    Wenn ein OSS-Anmeldedatenschlüssel beispielsweise a.b.c ist, müssen Sie ihn in a-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 dieses Attribut ignoriert werden.

  • Secret-Version : Secrets in Secret Manager können mehrere Versionen (Werte) haben. Mit diesem Attribut können Sie in Produktionsumgebungen auf eine bestimmte Secret-Version zugreifen, um einen stabilen Zugriff zu gewährleisten.

    --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 die Version LATEST eines Secrets zugreifen möchten, können Sie dieses Attribut ignorieren.

Managed Service for Apache Spark-Cluster mit Anmeldedatenanbieter für Secret Manager erstellen

  1. Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-Cluster mit den erforderlichen Attributen 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:

Managed Service for Apache Spark-Job mit Anmeldedatenanbieter für Secret Manager senden

  1. Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-Job mit den erforderlichen Attributen 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:

Secret Manager mit Hive-Metastore verwenden

Das Hive-Metastore-Attribut 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

  1. Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-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.
  1. Erstellen Sie ein Secret mit Secret Manager oder dem Befehl hadoop credential.

    • Alternative 1: Erstellen Sie ein Secret mit Secret Manager.

      • Secret-Name: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Secret-Wert: METASTORE_PASSWORD.
    • Alternative 2:Erstellen Sie ein Secret mit dem Befehl hadoop credential.

      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      

      • METASTORE_PASSWORD: Da Secret Manager den Punktoperator(.) nicht unterstützt, ersetzen Sie alle Punkte(.) im Passwort durch Bindestriche(-).
  2. Prüfen Sie, ob das Secret vorhanden ist.

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

  3. Entfernen Sie mit einem Texteditor das Attribut javax.jdo.option.ConnectionPassword aus der Datei hive-site.xml und fügen Sie dann die Attribute hadoop.security.credential.provider.path und hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator zur Datei hinzu.

    Beispielattribute:

    hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

  4. Starten Sie Hive-Metastore neu.

    sudo systemctl restart hive-metastore
    

Cluster mit externem Hive-Metastore erstellen

  1. Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-Cluster zu erstellen mit den folgenden Clusterattributen. Verwenden Sie diesen Cluster als externen Hive-Metastore für Hive-Jobs, die von anderen Managed Service for Apache Spark-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...
    
  2. Erstellen Sie ein Secret mit Secret Manager oder dem Befehl hadoop credential.

    • Alternative 1: Erstellen Sie ein Secret mit Secret Manager.
      • Secret-Name: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Secret-Wert: METASTORE_PASSWORD.
    • Alternative 2:Erstellen Sie ein Secret mit dem Befehl hadoop credential.
      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      
      • METASTORE_PASSWORD: Da Secret Manager den Punktoperator(.) nicht unterstützt, ersetzen Sie alle Punkte(.) im Passwort durch Bindestriche(-).
  3. 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

  1. Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-Cluster zu erstellen mit den folgenden Clusterattributen. Verwenden Sie diesen Cluster, um Hive-Jobs auszuführen, die eine Verbindung zum externen Metastore in einem anderen Managed Service for Apache Spark-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 über SSH eine Verbindung zum Managed Service for Apache Spark-Masterknoten herstellen um mit dem hadoop credential Befehl Secrets 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 gsm://-Scheme gibt Secret Manager an.

  • Erstellen Sie ein Secret mit der angegebenen Secret-ID. Der Befehl erstellt das Secret nicht, 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
    

  • Secrets auflisten, die in einem Projekt gespeichert sind.

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

  • Prüfen, ob ein Secret mit einem bestimmten Wert in einem Projekt 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 ist.

  • 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 Anleitung zu Hadoop-Befehlen.

Nächste Schritte