Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si accede a origini dati esterne tramite JDBC, l'autenticazione è spesso necessaria. Anziché immettere le credenziali direttamente nei notebook, è possibile archiviare in modo sicuro le credenziali usando i segreti di Databricks e farvi riferimento nei notebook e nei processi. Questo approccio migliora la sicurezza e semplifica la gestione delle credenziali. Questa pagina offre una panoramica dei segreti di Databricks.
Nota
Databricks consiglia di usare Unity Catalog per configurare l'accesso ai dati nell'archiviazione cloud. Vedete Connettersi all'archiviazione di oggetti cloud usando Unity Catalog.
Panoramica dei segreti
Per configurare e utilizzare le informazioni riservate:
- Creare un ambito segreto. Un ambito segreto è una raccolta di segreti identificati da un nome.
- Aggiungi segreti all'ambito
- Assegnare le autorizzazioni per lo spazio segreto.
- Riferisci i segreti nel tuo codice.
Per un esempio end-to-end di come usare i segreti nei flussi di lavoro, vedere Esercitazione: Creare e usare un segreto Databricks. Per usare un segreto in una proprietà di configurazione Spark o in una variabile di ambiente, vedere Usare un segreto in una proprietà di configurazione Spark o in una variabile di ambiente.
Avviso
Gli amministratori dell'area di lavoro, gli autori di segreti e gli utenti a cui è stata concessa l'autorizzazione possono accedere e leggere i segreti di Databricks. Sebbene Databricks tenti di oscurare i valori dei segreti negli output dei notebook, non è possibile impedire completamente agli utenti di visualizzare il contenuto dei segreti. Assegnare sempre le autorizzazioni di accesso segreto con attenzione per proteggere le informazioni riservate.
Gestire gli spazi riservati
Un ambito segreto è una raccolta di segreti identificati da un nome. Databricks consiglia di allineare gli ambiti dei segreti ai ruoli o alle applicazioni anziché ai singoli utenti.
Esistono due tipi di ambito segreto:
- Supportati da Azure Key Vault: è possibile fare riferimento ai segreti archiviati in un Azure Key Vault usando gli ambiti segreti supportati da Azure Key Vault. L'ambito del segreto supportato da Azure Key Vault è un'interfaccia di sola lettura per Key Vault. È necessario gestire i segreti negli ambiti segreti supportati da Azure Key Vault in Azure.
- Basato su Databricks: uno scope segreto basato su Databricks viene archiviato in un database crittografato di proprietà e gestito da Azure Databricks.
Dopo aver creato un ambito segreto, è possibile assegnare autorizzazioni per concedere agli utenti l'accesso a ambiti di lettura, scrittura e gestione dei segreti.
Creare un ambito segreto supportato da Azure Key Vault
Questa sezione descrive come creare un ambito segreto supportato da Azure Key Vault usando il portale di Azure e l'interfaccia utente dell'area di lavoro di Azure Databricks. È anche possibile creare un ambito segreto supportato da Azure Key Vault usando l'interfaccia della riga di comando di Databricks.
Requisiti
- È necessario disporre di un'istanza di Azure Key Vault. Se non si dispone di una istanza di Key Vault, seguire le istruzioni in creare un Key Vault usando il portale di Azure.
- È necessario avere il ruolo di Collaboratore del Key Vault, Collaboratore o Proprietario sull'istanza del key vault di Azure che si vuole usare per supportare l'ambito del segreto.
Nota
La creazione di un ambito di segreti basato su Azure Key Vault richiede il ruolo di Collaboratore o Proprietario sull'istanza di Azure Key Vault, anche se al servizio Azure Databricks è stato precedentemente concesso l'accesso al Key Vault.
Se l'insieme di credenziali delle chiavi esiste in un tenant diverso rispetto all'area di lavoro di Azure Databricks, l'utente di Azure AD che crea l'ambito segreto deve avere l'autorizzazione per creare entità servizio nel tenant dell'insieme di credenziali delle chiavi. In caso contrario, si verifica l'errore seguente:
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Configurare l'istanza di Azure Key Vault per Azure Databricks
Accedere al portale di Azure e selezionare l'istanza di Azure Key Vault.
In Impostazioni fare clic sulla scheda Configurazione di Accesso.
Impostare Modello di autorizzazione su politica di accesso al Vault.
Nota
La creazione di un ambito dei segreti basato su Azure Key Vault concede le autorizzazioni di Get e List all'ID applicazione per il servizio Azure Databricks usando i criteri di accesso di Key Vault. Il modello di autorizzazione per il controllo degli accessi in base al ruolo di Azure non è supportato con Azure Databricks.
In Impostazioni, selezionare Rete.
In Firewall e reti virtuali impostare Consentire l'accesso da: a Consentire l'accesso pubblico da reti virtuali e indirizzi IP specifici.
In Eccezione selezionare Consenti alle servizi Microsoft attendibili di ignorare il firewall.
Nota
È anche possibile impostare Consenti l'accesso da: su Consenti l'accesso pubblico da tutte le reti.
Creare un ambito dei segreti supportato da Azure Key Vault
Vai a
https://<databricks-instance>#secrets/createScope. Sostituire<databricks-instance>con l'URL dell'area di lavoro della distribuzione di Azure Databricks. Questo URL fa distinzione tra maiuscole e minuscole. Ad esempio,scopeincreateScopedeve usare un carattere maiuscoloS.
Inserire il nome dell'ambito riservato. I nomi degli ambiti dei segreti non fanno distinzione tra maiuscole e minuscole.
In Gestisci Principale selezionare Creator o Tutti gli utenti dell'area di lavoro per specificare quali utenti dispongono dell'autorizzazione MANAGE nell'ambito del segreto.
L'autorizzazione MANAGE consente agli utenti di leggere, scrivere e concedere autorizzazioni per l'ambito. L'account deve avere il piano Premium per scegliere Creator.
Immettere il Nome DNS (ad esempio,
https://databrickskv.vault.azure.net/) e l'ID Risorsa, ad esempio:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKVQueste proprietà sono disponibili nella scheda > di un Key Vault di Azure nel tuo portale di Azure.
Cliccare su Crea.
Utilizza il comando Databricks CLI
databricks secrets list-scopesper verificare che l'ambito sia stato creato correttamente.
Creare un ambito segreto supportato da Databricks
Questa sezione descrive come creare un ambito segreto usando l'interfaccia della riga di comando di Databricks (versione 0.205 e successive). È anche possibile usare l'API Segreti.
Nomi degli ambiti segreti:
- Deve essere univoco all'interno di un'area di lavoro.
- Deve essere costituito da caratteri alfanumerici, trattini, caratteri di sottolineatura, punti e
@e non può superare i 128 caratteri. - Non fa distinzione tra maiuscole e minuscole.
I nomi di ambito segreto sono considerati non sensibili e sono accessibili da tutti gli utenti nell'area di lavoro.
Per creare un ambito usando l'interfaccia della riga di comando di Databricks:
databricks secrets create-scope <scope-name>
Per impostazione predefinita, gli ambiti vengono creati con l'autorizzazione MANAGE per l'utente che ha creato l'ambito. Dopo aver creato un ambito segreto supportato da Databricks, è possibile aggiungervi segreti.
Elencare gli scope segreti
Per elencare gli ambiti esistenti in un'area di lavoro usando l'interfaccia della riga di comando:
databricks secrets list-scopes
È anche possibile elencare gli ambiti segreti usando l'API dei Segreti .
Eliminare un ambito segreto
L'eliminazione di un ambito segreto elimina tutti i segreti e gli elenchi di controllo di accesso applicati all'ambito. Per eliminare un ambito usando l'interfaccia della riga di comando, eseguire quanto segue:
databricks secrets delete-scope <scope-name>
È anche possibile eliminare un ambito segreto usando l'API Segreti.
Gestire i segreti
Un segreto è una coppia chiave-valore che archivia materiale sensibile usando un nome di chiave univoco all'interno di un ambito segreto.
Questa sezione descrive come creare un ambito segreto usando l'interfaccia della riga di comando di Databricks (versione 0.205 e successive). È anche possibile usare l'API Segreti. I nomi segreti sono insensibili al carattere.
Creare un segreto
Il metodo per la creazione di un segreto dipende dall'uso di un ambito supportato da Azure Key Vault o da un ambito supportato da Databricks.
Creare un segreto in un ambito supportato da Azure Key Vault
Per creare un segreto in Azure Key Vault, usa il portale di Azure o la REST API Azure Set Secret. Per un esempio, vedere Passaggio 4: Aggiungere il segreto client ad Azure Key Vault.
Creare un segreto in un'area gestita da Databricks
Questa sezione descrive come creare un segreto usando l'interfaccia della riga di comando di Databricks (versione 0.205 e successive) o in un notebook usando Databricks SDK per Python. È anche possibile usare l'API Segreti. I nomi segreti sono insensibili al carattere.
Interfaccia della riga di comando di Databricks
Quando si crea un segreto in un ambito supportato da Databricks, è possibile specificare il valore del segreto in uno dei tre modi seguenti:
- Specificare il valore come stringa usando il flag –string-value.
- Immettere il segreto quando richiesto in modo interattivo (segreti a riga singola).
- Passare il segreto usando l'input standard (segreti su più righe).
Ad esempio:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Se si crea un segreto su più righe, è possibile passare il segreto usando l'input standard. Ad esempio:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>
Databricks Kit di Sviluppo Software per Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Leggere un segreto
Questa sezione descrive come leggere un segreto usando l'interfaccia della riga di comando di Databricks (versione 0.205 e successive) o in un notebook usando l'utilità Secrets (dbutils.secrets).
Interfaccia della riga di comando di Databricks
Per leggere il valore di un segreto usando l'interfaccia della riga di comando di Databricks, è necessario decodificare il valore con codifica Base64. È possibile usare jq per estrarre il valore e base --decode decodificarlo:
databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode
Utilità dei segreti (dbutils.secrets)
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
Elenca segreti
Per elencare i segreti in un determinato ambito:
databricks secrets list-secrets <scope-name>
La risposta visualizza le informazioni sui metadati relativi ai segreti, ad esempio i nomi delle chiavi dei segreti. Usi l'utilità Segreti (dbutils.secrets) in un notebook o in un'attività per elencare questi metadati. Ad esempio:
dbutils.secrets.list('my-scope')
Elimina un segreto
Per eliminare un segreto da un ambito con l'interfaccia della riga di comando di Databricks:
databricks secrets delete-secret <scope-name> <key-name>
È anche possibile usare l'API Segreti.
Per eliminare un segreto da un ambito supportato da Azure Key Vault, usare l'interfaccia utente del portale di Azure o l'API REST di Azure SetSecret.
Gestire le autorizzazioni per l'ambito del segreto
Per impostazione predefinita, all'utente che crea le scope segrete viene concesso il permesso MANAGE. Ciò consente al creatore dell'ambito di leggere i segreti nell'ambito, scrivere segreti nell'ambito e gestire le autorizzazioni sull'ambito.
Nota
Gli ACL dei segreti sono a livello di ambito. Se si utilizzano ambiti supportati dal Key Vault di Azure, gli utenti a cui viene concesso l'accesso all'ambito possono accedere a tutti i segreti nel Key Vault di Azure. Per limitare l'accesso, usare istanze separate di Azure Key Vault.
Questa sezione descrive come gestire il controllo di accesso segreto usando l'interfaccia della riga di comando di Databricks (versione 0.205 e successive). È anche possibile usare l'API Segreti. Per i livelli di autorizzazione segreti, vedere ACL dei segreti
Concedere a un utente le autorizzazioni per un ambito segreto
Per concedere a un utente le autorizzazioni per un ambito segreto usando l'interfaccia della riga di comando di Databricks:
databricks secrets put-acl <scope-name> <principal> <permission>
L'esecuzione di una richiesta di tipo PUT per un'entità principale che dispone già di un'autorizzazione applicata sovrascrive il livello di autorizzazione esistente.
Il principal campo specifica un principale di Azure Databricks esistente. Un utente viene specificato usando il proprio indirizzo di posta elettronica, un principale del servizio utilizzando il valore applicationId associato e un gruppo usando il nome del gruppo. Per altre informazioni, vedere Principal.
Visualizzare le autorizzazioni per l'ambito segreto
Per visualizzare tutte le autorizzazioni dell'ambito segreto per un determinato ambito segreto:
databricks secrets list-acls <scope-name>
Per ottenere le autorizzazioni dell'ambito segreto applicate a un'entità per un determinato ambito segreto:
databricks secrets get-acl <scope-name> <principal>
Se non esiste un ACL per l'entità e l'ambito specificati, la richiesta non riesce.
Eliminare un'autorizzazione per l'ambito del segreto
Per eliminare un'autorizzazione di ambito segreto applicata a un'entità per un determinato ambito segreto:
databricks secrets delete-acl <scope-name> <principal>
Redazione segreta
L'archiviazione delle credenziali come segreti di Azure Databricks semplifica la protezione delle credenziali quando si eseguono notebook e processi. Tuttavia, è facile stampare accidentalmente un segreto nei buffer di output standard o visualizzare il valore durante l'assegnazione di una variabile.
Per evitare questo problema, Azure Databricks redige tutti i valori segreti letti usando dbutils.secrets.get() e a cui viene fatto riferimento in una proprietà di configurazione spark. Quando vengono visualizzati, i valori del segreto vengono sostituiti con [REDACTED].
Ad esempio, se si imposta una variabile su un valore segreto usando dbutils.secrets.get() e quindi si stampa tale variabile, tale variabile viene sostituita con [REDACTED].
Avviso
La redazione si applica solo ai valori segreti letterali. La funzionalità di rimozione dei segreti non impedisce trasformazioni intenzionali e arbitrarie di un valore letterale segreto. Per garantire il corretto controllo dei segreti, è consigliabile usare elenchi di controllo di accesso per limitare le autorizzazioni per eseguire i comandi. In questo modo si impedisce l'accesso non autorizzato ai contesti del notebook condiviso.
Redazione segreta in SQL
Azure Databricks tenta di redigere tutti i comandi SQL DQL (Data Query Language) che invocano la funzione segreta, incluse le viste a cui si fa riferimento e le funzioni definite dall'utente. Quando viene usata la secret funzione, l'output viene sostituito con [REDACTED] laddove possibile. Come la redazione del notebook, questo vale solo per i valori letterali, non per i segreti trasformati o indirettamente a cui si fa riferimento.
Per i comandi SQL DML (Data Manipulation Language), Azure Databricks consente ricerche segrete se il segreto è considerato sicuro—a esempio quando viene annidato in una funzione crittografica come sha() o aes_encrypt()—che impedisce l'archiviazione non crittografata dei valori non elaborati.
Convalida dei segreti in SQL
Azure Databricks applica anche la convalida per bloccare i comandi SQL DML che potrebbero comportare il salvataggio di segreti non crittografati nelle tabelle. L'analizzatore di query tenta di identificare e prevenire questi scenari, evitando l'archiviazione accidentale di informazioni riservate in testo non crittografato.