In diesem Dokument wird beschrieben, wie Sie Secret Manager als Anmeldedatenspeicher mit Google Cloud Serverless for 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 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
Wenn Sie eine Serverless for Apache Spark-Batcharbeitslast ausführen, können Sie sie so konfigurieren, dass sie ein Secret Manager-Secret verwendet. Dazu nutzen Sie den Dataproc Secret Manager-Anmeldedatenanbieter.
Verfügbarkeit
Diese Funktion ist für Serverless for Apache Spark-Laufzeitversionen 1.2.29 und 2.2.29 sowie für neuere Hauptversionen der Laufzeit 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-Arbeitslasten 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. |
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
Secret Manager Secret Accessor-Rolle
mit der folgenden Bedingung zum Dienstkonto 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 so konfigurieren, dass sie mit Secret Manager funktionieren. Dazu legen Sie die folgenden Eigenschaften fest, wenn Sie eine Serverless for Apache Spark-Arbeitslast senden:
Anbieterpfad (erforderlich): Die Eigenschaft für den Anbieterpfad,
spark.hadoop.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=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Das
schemeim Anbieterpfad gibt den Typ des Anmeldedatenanbieters an. Hadoop-Schemes sind unter anderemjceks://,user://undlocaljceks://. Verwenden Sie dasgsm://-Scheme,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 (Open-Source-Software) verwenden jedoch Punkte in ihren Anmeldedatenschlüsseln. Um diese Einschränkung zu beheben, aktivieren Sie diese Eigenschaft, 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.cist, 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 eine optionale Eigenschaft. Der Standardwert ist
false. Bei Anmeldedatenschlüsseln, deren Anmeldedatenname keinen Punkt (.) Operator enthält, kann diese Eigenschaft ignoriert werden.Secret-Version : Secrets in Secret Manager können mehrere Versionen (Werte) haben. Verwenden Sie diese Eigenschaft, um in Produktionsumgebungen auf eine bestimmte Secret-Version zuzugreifen.
--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
Dies ist eine optionale Eigenschaft. Standardmäßig greift Secret Manager auf die
LATESTVersion zu, die zur Laufzeit in den neuesten Wert des Secrets aufgelöst wird. Wenn Sie immer auf die VersionLATESTeines Secrets zugreifen möchten, können Sie diese Eigenschaft ignorieren.
Batcharbeitslast mit Secret Manager-Anmeldedatenanbieter 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 des JAR
- PROJECT_ID: Ihre Projekt-ID, die im Bereich Projektinformationen des Google Cloud Console-Dashboards aufgeführt ist