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.
Puoi configurare un cluster o un job Dataproc per utilizzare un secret di Secret Manager utilizzando il fornitore di credenziali Secret Manager.
Disponibilità
Questa funzionalità è disponibile per l'utilizzo con i cluster Dataproc creati con le versioni immagine Dataproc principali 2.0.97 e successive, 2.1.41 e successive o 2.2.6 e successive.
Terminologia
La seguente tabella descrive i termini utilizzati in questo documento.
Termine | Descrizione |
---|---|
Secret |
Un secret di Secret Manager è un oggetto del progetto globale che contiene una raccolta di metadati e versioni dei secret. Puoi archiviare, gestire e accedere ai secret come blob binari o stringhe di testo. |
Credential |
In Hadoop e in altre applicazioni ospitate da Dataproc, una credenziale è composta da un nome (ID) e da un valore (password). Un ID e un valore della credenziale vengono mappati a un ID secret e a un valore secret di Secret Manager (versione del secret). |
Utilizzo
Puoi configurare Hadoop e altri componenti OSS per lavorare con Secret Manager impostando le seguenti proprietà quando crei un cluster Dataproc o invii un job.
Percorso del provider (obbligatorio): la proprietà percorso del provider,
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=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Il carattere
scheme
nel percorso del provider indica il tipo di provider delle credenziali. Gli schemi Hadoop includonojceks://
,user://
,localjceks://
. Utilizza lo schemagsm://
per cercare le credenziali in Secret Manager.
- Il carattere
Operatore punto sostitutivo (facoltativo): Secret Manager non supporta l'operatore punto(
.
) nei nomi dei secret, ma le chiavi delle credenziali dei componenti OSS possono contenere questo operatore. Quando questa proprietà è impostata sutrue
. puoi sostituire i punti(.
) con i trattini(-
) nei nomi delle credenziali. Ad esempio, quando questa proprietà è impostata sutrue
, puoi specificare il nome della credenzialea.b.c
comea-b-c
quando la passi a Secret Manager.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Versione del secret (facoltativa): i secret in Secret Manager possono avere più versioni (valori). Utilizza questa proprietà per accedere a una versione del secret. Per impostazione predefinita, Secret Manager accede alla versione
LATEST
, che si risolve nel valore più recente del secret in fase di esecuzione. Una best practice consiste nel definire questa proprietà per l'accesso stabile negli ambienti di produzione. Per informazioni su come creare un secret, consulta Creare e accedere a un secret utilizzando Secret Manager e Comandi per le credenziali Hadoop.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Crea un cluster Dataproc con il provider di credenziali Secret Manager
- Esegui il seguente comando in locale o in Cloud Shell per
creare un cluster Dataproc
con le proprietà richieste.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Note:
- CLUSTER_NAME: il nome del nuovo cluster.
- REGION: una regione Compute Engine in cui verrà eseguito il carico di lavoro.
- PROJECT_ID: l'ID progetto è elencato nella sezione Informazioni sul progetto della dashboard della console Google Cloud.
Invia un provider di credenziali Dataproc con Secret Manager
Esegui il seguente comando in locale o in Cloud Shell per inviare un job Dataproc con le proprietà richieste.
gcloud dataproc jobs submit CLUSTER_NAME \ --region=REGION \ --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed... \ -- job-args
Note:
- CLUSTER_NAME: il nome del cluster che eseguirà il job.
- REGION: una regione Compute Engine in cui verrà eseguito il carico di lavoro.
- PROJECT_ID: l'ID progetto è elencato nella sezione Informazioni sul progetto della dashboard della console Google Cloud.
Utilizzare Secret Manager con Hive Metastore
La proprietà Hive Metastore, javax.jdo.option.ConnectionPassword
, contiene la password utilizzata per autenticare l'accesso al database metastore. La password viene salvata in formato di testo in hive-site.xml
, il che rappresenta un rischio per la sicurezza. Una best practice di produzione è archiviare la password in Secret Manager, quindi aggiornare il file di configurazione hive-site.xml
per consentire al servizio metastore Hive di leggere la password da Secret Manager.
Gli esempi riportati di seguito mostrano come utilizzare Secret Manager in diversi scenari di Hive Metastore.
Creare un cluster con un metastore locale
- Esegui il seguente comando in locale o in Cloud Shell per
creare un cluster Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Note:
- CLUSTER_NAME: il nome del nuovo cluster.
- REGION: una regione Compute Engine in cui verrà eseguito il carico di lavoro.
Crea un secret utilizzando Secret Manager o il comando
hadoop credential
.Alternativa 1: utilizza Secret Manager per creare un secret.
- Nome segreto:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valore secret:
METASTORE_PASSWORD
.
- Nome segreto:
Alternativa 2: utilizza il comando
hadoop credential
per creare un segreto.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: poiché Secret Manager non supporta l'operatore punto(
.
), sostituisci i punti(.
) nella password con i trattini(-
).
- METASTORE_PASSWORD: poiché Secret Manager non supporta l'operatore punto(
Verifica che il segreto esista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Utilizza un editor di testo per rimuovere la proprietà
javax.jdo.option.ConnectionPassword
dal filehive-site.xml
e poi aggiungi le proprietàhadoop.security.credential.provider.path
ehadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
al file.Proprietà di esempio:
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Riavviare Hive Metastore.
sudo systemctl restart hive-metastore
Creare un cluster con un metastore Hive esterno
Esegui il seguente comando localmente o in Cloud Shell per creare un cluster Dataproc con le seguenti proprietà del cluster. Utilizza questo cluster come metastore Hive esterno per i job Hive eseguiti da altri cluster Dataproc per i carichi di lavoro Spark Hive.
gcloud dataproc clusters create METASTORE_CLUSTER_NAME \ --region=REGION \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \ ...other flags as needed...
Crea un secret utilizzando Secret Manager o il comando
hadoop credential
.- Alternativa 1: utilizza Secret Manager per creare un secret.
- Nome segreto:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valore secret:
METASTORE_PASSWORD
.
- Nome segreto:
- Alternativa 2: utilizza il comando
hadoop credential
per creare un segreto.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: poiché Secret Manager non supporta l'operatore punto(
.
), sostituisci i punti(.
) nella password con i trattini(-
).
- METASTORE_PASSWORD: poiché Secret Manager non supporta l'operatore punto(
- Alternativa 1: utilizza Secret Manager per creare un secret.
Verifica che il segreto esista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Creare un cluster per eseguire job Hive che si connettono a un metastore esterno
- Esegui il seguente comando localmente o in Cloud Shell per
creare un cluster Dataproc
con le seguenti proprietà del cluster.
Utilizza questo cluster per eseguire job Hive che si connettono al metastore esterno su un altro cluster Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://METASTORE_CLUSTER_NAME-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Comandi per le credenziali Hadoop
Puoi utilizzare SSH per connetterti al nodo principale Dataproc per utilizzare il comando hadoop credential
per creare, elencare e gestire i secret.
I comandi hadoop credential
utilizzano il seguente formato:
hadoop credential SUBCOMMAND OPTIONS
.
Negli esempi seguenti, il flag -provider
viene aggiunto per specificare il tipo e la posizione del fornitore (il negozio del fornitore). Lo schema gsm://
specifica Secret Manager.
Crea un secret con l'ID secret specificato. Il comando non crea il secret se l'ID secret specificato esiste. Questo comportamento è coerente con l'API Hadoop
CredentialProvider
.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Elenca i secret archiviati in un progetto.
hadoop credential list -provider gsm://projects/PROJECT_ID
Controlla se in un progetto esiste un secret con un valore specificato.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Cerca una versione del secret specifica in un file di configurazione.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
CONFIG_FILE: il file XML che imposta
hadoop.security.credstore.google-secret-manager.secret-version
.Elimina tutte le versioni di un segreto in un progetto.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Per ulteriori informazioni, consulta la Guida ai comandi Hadoop.
Per ulteriori informazioni
- Consulta la documentazione di Hive.