Secret Manager-Anmeldedatenanbieter

In diesem Dokument wird beschrieben, wie Sie Secret Manager als Anmeldedatenspeicher mit Google Cloud Serverless für Apache Spark verwenden, um vertrauliche Daten, die von serverlosen Arbeitslasten verarbeitet werden, sicher zu speichern und darauf zuzugreifen.

Übersicht

Mit Secret Manager können Sie Ihre sensiblen Daten wie API-Schlüssel, Passwörter und Zertifikate schützen. Sie können damit Ihre Secrets inGoogle Cloudverwalten, darauf zugreifen und sie prüfen.

Wenn Sie eine Serverless for Apache Spark-Batcharbeitslast ausführen, können Sie sie so konfigurieren, dass ein Secret Manager-Secret verwendet wird. Dazu verwenden Sie den Dataproc Secret Manager-Anmeldedatenanbieter.

Verfügbarkeit

Diese Funktion ist für die Serverless for Apache Spark-Laufzeitversionen 1.2.29+, 2.2.29+ oder höhere Hauptlaufzeitversionen verfügbar.

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 Dataproc-Workloads besteht eine Anmeldedaten aus einem Anmeldedatennamen (ID) und einem Anmeldedatenwert (Passwort). Eine Anmeldedaten-ID und ein Wert werden einer Secret Manager-Secret-ID und einem Secret-Wert (Secret-Version) zugeordnet.

Berechtigungen

Dataproc prüft, ob die folgenden optionalen Secrets vorhanden sind:

  • fs-gs-encryption-key
  • fs-gs-encryption-key-hash
  • fs-gs-proxy-password
  • fs-gs-proxy-username

Damit das Dataproc-VM-Dienstkonto die Berechtigung hat, die fs-gs-Secrets zu prüfen, fügen Sie dem Dienstkonto die Rolle „Zugriffsperson für Secret Manager-Secret“ mit der folgenden Bedingung hinzu:

{
  "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")",
  "title": "gsmkeycondition",
  "description": "Permission to access Dataproc secrets"
}

Nutzung

Sie können unterstützte Hadoop- und andere OSS-Komponenten für die Verwendung mit Secret Manager konfigurieren, indem Sie die folgenden Eigenschaften festlegen, wenn Sie eine Serverless for Apache Spark-Arbeitslast senden:

  • Anbieterpfad (erforderlich): Die Eigenschaft „Anbieterpfad“ (spark.hadoop.hadoop.security.credential.provider.path) ist eine durch Kommas getrennte Liste mit einem oder mehreren URI-Anbietern für Anmeldedaten, die durchlaufen werden, um Anmeldedaten aufzulösen.

    --properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    
    • Das scheme im Anbieterpfad gibt den Typ des Anmeldedatenanbieters an. Hadoop-Schemas umfassen jceks://, user:// und localjceks://. Verwenden Sie das gsm://-Schema,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 verwenden jedoch Punkte in ihren Anmeldedatenschlüsseln. Um diese Einschränkung zu beheben, aktivieren Sie diese Eigenschaft, damit Punkte (.) in Anmeldedatennamen durch Bindestriche (-) ersetzt werden. So wird dafür gesorgt, dass OSS-Anmeldedaten mit Punkten im Namen korrekt in Secret Manager gespeichert und abgerufen werden können.

    Wenn ein OSS-Anmeldeschlüssel beispielsweise a.b.c ist, müssen Sie ihn in a-b-c ändern, wenn Sie ihn in Secret Manager speichern.

    --properties=spark.hadoop.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 diese Eigenschaft ignoriert werden.

  • Secret-Version : Secrets in Secret Manager können mehrere Versionen (Werte) haben. Mit dieser Eigenschaft können Sie in Produktionsumgebungen stabil auf eine bestimmte Secret-Version zugreifen.

    --properties=spark.hadoop.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 LATEST-Version eines Secrets zugreifen möchten, kann diese Eigenschaft ignoriert werden.

Batcharbeitslast mit Secret Manager Credential Provider ausführen

Wenn Sie eine Batcharbeitslast senden möchten, die den Secret Manager-Anmeldedatenanbieter verwendet, führen Sie den folgenden Befehl lokal oder in Cloud Shell aus.

gcloud dataproc batches submit spark \
    --region=REGION \
    --jars=JARS \
    --class=MAIN_CLASS \
    --properties="spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
    ...other flags as needed...

Ersetzen Sie Folgendes:

  • REGION: eine Compute Engine-Region, in der Ihre Arbeitslast ausgeführt wird
  • JARS: Pfad zum Arbeitslast-JAR
  • MAIN_CLASS: die Hauptklasse der JAR-Datei
  • PROJECT_ID: Ihre Projekt-ID, die im Bereich Projektinformationen des Google Cloud -Konsolendashboards aufgeführt ist.