Questo documento descrive come utilizzare Secret Manager come archivio delle credenziali con Google Cloud Serverless per Apache Spark per archiviare e accedere in modo sicuro ai dati sensibili elaborati dai workload serverless.
Panoramica
Il Secret Manager può proteggere i tuoi dati sensibili, come chiavi API, password e certificati. Puoi utilizzarlo per gestire, accedere e controllare i tuoi secret in Google Cloud.
Quando esegui un workload batch di Serverless per Apache Spark, puoi configurarlo in modo che utilizzi un secret di Secret Manager utilizzando il provider di credenziali di Secret Manager di Dataproc.
Disponibilità
Questa funzionalità è disponibile per le versioni di runtime di Serverless per Apache Spark 1.2.29+, 2.2.29+ o versioni di runtime principali successive .
Terminologia
La seguente tabella descrive i termini utilizzati in questo documento.
| Termine | Descrizione |
|---|---|
Secret |
Un secret di Secret Manager è un oggetto di progetto globale che contiene una raccolta di metadati e versioni del secret. Puoi archiviare, gestire e accedere ai secret come blob binari o stringhe di testo. |
Credential |
In Hadoop e in altri workload Dataproc, una credenziale è costituita da un nome (ID) e un valore (password). Un ID e un valore della credenziale corrispondono a un Secret Manager ID e a un valore del secret (versione del secret) di Secret Manager. |
Autorizzazioni
Dataproc verifica l'esistenza dei seguenti secret facoltativi:
- fs-gs-encryption-key
- fs-gs-encryption-key-hash
- fs-gs-proxy-password
- fs-gs-proxy-username
Per assicurarti che il service account della VM Dataproc
abbia l'autorizzazione per controllare i secret fs-gs, aggiungi il
ruolo Accessore secret di Secret Manager
con la seguente condizione al service account, come indicato di seguito:
{
"expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")",
"title": "gsmkeycondition",
"description": "Permission to access Dataproc secrets"
}
Utilizzo
Puoi configurare i componenti Hadoop e altri componenti OSS supportati in modo che funzionino con Secret Manager impostando le seguenti proprietà quando invii un workload Serverless per Apache Spark:
Percorso del provider (obbligatorio): la proprietà del percorso del provider,
spark.hadoop.hadoop.security.credential.provider.path, è un elenco separato da virgole di uno o più URI del provider di credenziali che viene attraversato per risolvere una credenziale.--properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Lo
schemenel percorso del provider indica il tipo di provider di credenziali. Gli schemi Hadoop includonojceks://,user://,localjceks://. Utilizza lo schemagsm://per cercare le credenziali in Secret Manager.
- Lo
Operatore punto sostitutivo : il servizio Secret Manager non consente l'utilizzo di punti (
.) nei nomi dei secret. Tuttavia, alcuni componenti software open source (OSS) utilizzano i punti nelle chiavi delle credenziali. Per risolvere questa limitazione, attiva questa proprietà per sostituire i punti (.) con trattini (-) nei nomi delle credenziali. In questo modo, le credenziali OSS con punti nei nomi possono essere archiviate e recuperate correttamente da Secret Manager.Ad esempio, se una chiave di credenziale OSS è
a.b.c, devi modificarla ina-b-cquando la memorizzi in Secret Manager.--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Questa è una proprietà facoltativa. Per impostazione predefinita, il valore è
false. Per le chiavi delle credenziali che non hanno un operatore punto (.) nel nome della credenziale, questa proprietà può essere ignorata in sicurezza.Versione del secret : i secret in Secret Manager possono avere più versioni (valori). Utilizza questa proprietà per accedere a una versione specifica del secret per un accesso stabile negli ambienti di produzione.
--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
Questa è una proprietà facoltativa. Per impostazione predefinita, Secret Manager accede alla versione
LATEST, che viene risolta nel valore più recente del secret in fase di runtime. Se il tuo caso d'uso prevede l'accesso sempre alla versioneLATESTdi un secret, questa proprietà può essere ignorata in sicurezza.
Eseguire un workload batch con il provider di credenziali di Secret Manager
Per inviare un workload batch che utilizza il provider di credenziali di Secret Manager, esegui il seguente comando localmente o in Cloud Shell.
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...
Sostituisci quanto segue:
- REGION: una regione Compute Engine in cui viene eseguito il workload
- JARS: percorso del jar del workload
- MAIN_CLASS: la classe principale del jar
- PROJECT_ID: l'ID progetto, elencato nella sezione Informazioni sul progetto della Google Cloud dashboard della console