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 umfassenjceks://
,user://
undlocaljceks://
. Verwenden Sie dasgsm://
-Schema,um in Secret Manager nach Anmeldedaten zu suchen.
- Das
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 ina-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 dieLATEST
-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.