Panoramica
Secret Manager può salvaguardare i tuoi dati sensibili, come chiavi API, password e certificati. Usala per gestire, accedere e controllare i tuoi secret in Google Cloud.
L'API GoogleHadoopSecretManagerCredentialProvider
, che si integra con
Secret Manager, è un'implementazione
API Hadoop CredentialProvider, una soluzione per proteggere le credenziali sensibili
l'accesso pubblico.
Puoi utilizzare l'API del provider di credenziali Hadoop nei seguenti modi:
- Utilizza i comandi per le credenziali Hadoop.
- Configura i componenti OSS, come Hive, in modo che funzionino con Secret Manager.
Terminologia
La seguente tabella descrive i termini utilizzati in questo documento.
Termine | Descrizione |
---|---|
Secret |
Un secret è un oggetto globale del progetto che contiene una raccolta di metadati e versioni del secret. Secret Manager ti consente di 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 è costituita 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 (versione del secret) in Secret Manager. |
Comandi delle credenziali Hadoop
Puoi utilizzare il comando hadoop credential
per creare, elencare e gestire i secret.
I comandi hadoop credential
utilizzano questo formato generale:
hadoop credential SUBCOMMAND OPTIONS
.
Nei seguenti esempi, viene aggiunto il flag -provider
per specificare
il tipo e la località del provider (l'archivio del provider). 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 secret in un progetto.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Consulta le Guida ai comandi di Android per ulteriori informazioni.
Configurare i componenti OSS
Puoi configurare Hadoop e altri componenti OSS supportati per lavorare con Secret Manager impostando il seguente componente proprietà:
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
- Un
scheme
viene utilizzato per indicare il tipo di provider di credenziali. Gli schemi Hadoop includono:jceks://
,user://
elocaljceks://
. Utilizza lo schemagsm://
come mostrato nell'esempio precedente per cercare la credenziale in Secret Manager.
- Un
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. Questa proprietà è necessaria solo per specificare una credenziale utilizzando i comandi per le credenziali Hadoop o quando un componente OSS tenta di risolvere le credenziali. Non ha alcun effetto sulla creazione, sull'elenco o sull'eliminazione dei comandi per le credenziali Hadoop.--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 Secret Manager, accede alla versione
LATEST
, che si risolve al valore più recente del secret in fase di runtime. Una best practice consiste nel definire questa proprietà per l'accesso stabile negli ambienti di produzione.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Esempi di Metastore Hive
La proprietà Hive Metastore, javax.jdo.option.ConnectionPassword
, contiene la password utilizzata per autenticare l'accesso a un database metastore. Questa password viene salvata in formato di testo non criptato in hive-site.xml
, il che rappresenta un rischio per la sicurezza. Una best practice per la produzione è memorizzare la password in Secret Manager, quindi aggiornare il file di configurazione hive-site.xml
per consentire al servizio Hive Metastore di leggere la password da Secret Manager.
Le sezioni che seguono forniscono istruzioni su come utilizzare Secret Manager in diversi scenari di Hive Metastore.
Cluster Hive con metastore locale
Esegui questo comando in locale o in Cloud Shell per crea un cluster Dataproc con le proprietà del cluster richieste.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Creare un secret Puoi creare 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 del 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: dato che Secret Manager
non supporta l'operatore punto(
.
), sostituisci qualsiasi punto(.
) nella password con trattini(-
).
- METASTORE_PASSWORD: dato che Secret Manager
non supporta l'operatore punto(
Verifica che il secret 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
Riavvia Hive Metastore.
sudo systemctl restart hive-metastore
Cluster Hive con un metastore esterno
Esegui il seguente comando in locale o in Cloud Shell per creare un cluster Dataproc con le seguenti proprietà del cluster.
gcloud dataproc clusters create 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...
Creare un secret Puoi creare un secret utilizzando Secret Manager o il comando
hadoop credential
.- Alternativa 1: utilizza Secret Manager per creare un secret.
- Nome secret:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valore del secret:
METASTORE_PASSWORD
.
- Nome secret:
- Alternativa 2: utilizza il comando
hadoop credential
per creare un secret.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 secret esista.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Esegui questo comando in locale o in Cloud Shell per crea un cluster Dataproc con le seguenti proprietà del cluster. Utilizza questo cluster per eseguire job Hive e connetterti al metastore esterno.
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...
Per ulteriori informazioni
- Consulta la documentazione di Hive.