Usare un segreto in una proprietà di configurazione Spark o in una variabile di ambiente
Questo articolo fornisce informazioni dettagliate su come fare riferimento a un segreto in una proprietà di configurazione Spark o in una variabile di ambiente. I segreti recuperati vengono elaborati dall'output del notebook e dai log del driver Spark e dell'executor.
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Considerazioni relative alla sicurezza
Databricks non consiglia di archiviare segreti nelle variabili di ambiente del cluster se non devono essere disponibili per tutti gli utenti del cluster. Tenere presenti le implicazioni di sicurezza seguenti quando si fa riferimento ai segreti in una proprietà di configurazione Spark o in una variabile di ambiente:
Qualsiasi utente con autorizzazioni CAN ATTACH TO per un cluster o Le autorizzazioni Esegui in un notebook possono leggere le variabili di ambiente del cluster dall'interno del notebook.
Se il controllo di accesso alle tabelle non è abilitato in un cluster, qualsiasi utente con autorizzazioni CAN ATTACH TO per un cluster o Le autorizzazioni Esegui in un notebook possono leggere le proprietà di configurazione di Spark dall'interno del notebook. Sono inclusi gli utenti che non dispongono dell'autorizzazione diretta per leggere un segreto.
I segreti non vengono elaborati dal log
stdout
estderr
dai flussi del driver Spark. Per proteggere i dati sensibili, per impostazione predefinita, i log dei driver Spark sono visualizzabili solo dagli utenti con l'autorizzazione CAN MANAGE per il processo, la modalità di accesso utente singolo e i cluster in modalità di accesso condiviso.Nei cluster in modalità di accesso condiviso senza isolamento i log del driver Spark possono essere visualizzati dagli utenti con l'autorizzazione CAN ATTACH TO o CAN MANAGE. Per limitare la lettura dei log ai soli utenti con l'autorizzazione CAN MANAGE, impostare
spark.databricks.acl.needAdminPermissionToViewLogs
sutrue
.
Requisiti
I requisiti seguenti si applicano per fare riferimento ai segreti nelle proprietà di configurazione di Spark e nelle variabili di ambiente:
- I proprietari del cluster devono disporre dell'autorizzazione CAN READ per l'ambito del segreto.
- È necessario essere un proprietario del cluster per aggiungere o modificare un segreto in una proprietà di configurazione Spark o in una variabile di ambiente.
- Se un segreto viene aggiornato, è necessario riavviare il cluster per recuperare nuovamente il segreto.
- È necessario disporre dell'autorizzazione CAN MANAGE per il cluster per eliminare una proprietà di configurazione spark privata o una variabile di ambiente.
Fare riferimento a un segreto con una proprietà di configurazione spark
Specificare un riferimento a un segreto in una proprietà di configurazione Spark nel formato seguente:
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}
Sostituire:
<scope-name>
con il nome dell'ambito del segreto.<secret-name>
con il nome univoco del segreto nell'ambito.<property-name>
con la proprietà di configurazione di Spark
Ogni proprietà di configurazione spark può fare riferimento a un solo segreto, ma è possibile configurare più proprietà spark per fare riferimento ai segreti.
Ad esempio:
spark.password {{secrets/scope1/key1}}
Per recuperare il segreto nel notebook e usarlo:
Python
spark.conf.get("spark.password")
SQL
SELECT ${spark.password};
Fare riferimento a un segreto in una variabile di ambiente
Specificare un percorso segreto in una variabile di ambiente nel formato seguente:
<variable-name>={{secrets/<scope-name>/<secret-name>}}
Quando si fa riferimento a un segreto possibile usare qualsiasi nome di variabile valido. L'accesso ai segreti a cui si fa riferimento nelle variabili di ambiente è determinato dalle autorizzazioni dell'utente che ha configurato il cluster. Anche se i segreti archiviati nelle variabili di ambiente sono accessibili a tutti gli utenti del cluster, vengono elaborati dalla visualizzazione in testo non crittografato, in modo analogo ad altri riferimenti ai segreti.
Le variabili di ambiente che fanno riferimento ai segreti sono accessibili da uno script init con ambito cluster. Vedere Impostare e usare le variabili di ambiente con script init.
Ad esempio:
Impostare una variabile di ambiente per fare riferimento a un segreto:
SPARKPASSWORD={{secrets/scope1/key1}}
Per recuperare il segreto in uno script init, accedere $SPARKPASSWORD
usando il modello seguente:
if [ -n "$SPARKPASSWORD" ]; then
# code to use ${SPARKPASSWORD}
fi