Provider di credenziali Secret Manager

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 a dati sensibili elaborati da carichi di lavoro serverless.

Panoramica

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 Serverless per Apache Spark, puoi configurarlo per utilizzare un secret di Secret Manager utilizzando il provider di credenziali Secret Manager di Dataproc.

Disponibilità

Questa funzionalità è disponibile per le versioni del runtime Serverless per Apache Spark 1.2.29+, 2.2.29+ o versioni principali successive del runtime.

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 carichi di lavoro Dataproc, una credenziale è costituita da un nome (ID) e da un valore (password). Un ID credenziale e un valore corrispondono a un ID secret e a un valore 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 VM Dataproc disponga dell'autorizzazione per controllare i secret fs-gs, aggiungi il ruolo Accessore secret Secret Manager con la seguente condizione al account di servizio:

{
  "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 per funzionare con Secret Manager impostando le seguenti proprietà quando invii un workload Serverless for Apache Spark:

  • Provider path (obbligatorio): la proprietà del percorso del fornitore, spark.hadoop.hadoop.security.credential.provider.path, è un elenco separato da virgole di uno o più URI del fornitore di credenziali attraversati per risolvere una credenziale.

    --properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    
    • scheme nel percorso del fornitore indica il tipo di fornitore di credenziali. Gli schemi Hadoop includono jceks://, user://,localjceks://. Utilizza lo schema gsm:// per cercare le credenziali in Secret Manager.
  • Operatore punto sostitutivo : il servizio Secret Manager non consente i 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 i 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 delle credenziali OSS è a.b.c, devi modificarla in a-b-c quando 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 contengono l'operatore punto (.) nel nome della credenziale, questa proprietà può essere ignorata in sicurezza.

  • Versione 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 di accedere sempre alla versione LATEST di un secret, questa proprietà può essere ignorata in sicurezza.

Esegui un carico di lavoro batch con il provider di credenziali Secret Manager

Per inviare un carico di lavoro batch che utilizza il provider di credenziali Secret Manager, esegui questo 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 di Compute Engine in cui viene eseguito il carico di lavoro
  • JARS: percorso del file JAR del workload
  • MAIN_CLASS: la classe principale del file JAR
  • PROJECT_ID: il tuo ID progetto, elencato nella sezione Informazioni progetto della dashboard della consoleGoogle Cloud