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.
Uno scope dei segreti del workspace è una raccolta denominata di segreti in un unico workspace. I permessi di scope dei segreti controllano chi può leggere, scrivere e gestire i segreti al suo interno. I permessi si applicano all'intero ambito, non ai singoli secret, quindi un utente che può leggere un secret in un ambito può leggerli tutti. Per confrontare gli scope dei segreti dello spazio di lavoro con quelli del Catalogo Unity, vedi Scegli dove memorizzare un segreto.
Per utilizzare un ambito segreto di workspace:
- Creare un ambito segreto.
- Aggiungi credenziali allo scope.
- Concedere i permessi sullo scope.
- Fai riferimento ai secrets nel tuo codice o in una proprietà di configurazione di Spark o in una variabile di ambiente. Si veda Usare un segreto in una proprietà di configurazione Spark o in una variabile di ambiente.
Warning
Gli amministratori di workspace, i creatori di segreti e gli utenti autorizzati possono accedere e leggere i segreti di Azure Databricks. Sebbene Azure Databricks tenti di oscurare i valori segreti negli output dei notebook, non è possibile impedire completamente a questi utenti di visualizzare contenuti segreti. Assegnare sempre le autorizzazioni di accesso segreto con attenzione per proteggere le informazioni riservate.
Gestire gli spazi riservati
Azure Databricks raccomanda di allineare gli scope dei segreti a ruoli o applicazioni piuttosto che a singoli individui.
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. Un ambito dei segreti supportato da Azure Key Vault è un'interfaccia di sola lettura per il Key Vault. Gestisci i segreti della risorsa in Azure.
- Basato su Databricks: uno scope segreto basato su Databricks viene archiviato in un database crittografato di proprietà e gestito da Azure Databricks.
Importante
Gli ambiti dei segreti con supporto di Azure Key Vault supportano solo il modello di autorizzazioni della criteri di accesso dell'insieme di credenziali, non il controllo degli accessi in base al ruolo di Azure (RBAC). I nuovi vault di chiavi Azure usano Azure RBAC di default. Se il tuo insieme di credenziali delle chiavi usa Azure RBAC, cambia il modello di autorizzazione in Criteri di accesso dell'insieme di credenziali prima di creare un ambito dei segreti basato su Azure Key Vault.
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
Crea un ambito dei segreti supportato da Azure Key Vault nel portale di Azure e nell'interfaccia utente dell'area di lavoro di Azure Databricks. Puoi anche usare la Databricks CLI.
Requirements
- È 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.
Note
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 il key vault esiste in un tenant diverso rispetto allo spazio di lavoro di Azure Databricks, l'utente Microsoft Entra ID che crea l'ambito segreto deve avere l'autorizzazione a creare entità servizio nel tenant del key vault. 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
Accedi al portale Azure, trova e seleziona l'istanza dell'insieme di credenziali delle chiavi di Azure.
In Impostazioni fare clic sulla scheda Configurazione di Accesso.
Impostare Modello di autorizzazione su politica di accesso al Vault. I nuovi key vault adottano di default il controllo di accesso basato sui ruoli di Azure, che non è supportato dagli scope dei segreti supportati da Azure Key Vault.
Note
La creazione di un ambito dei segreti basato su Azure Key Vault concede le autorizzazioni Get e List all'ID dell'applicazione per il servizio Azure Databricks tramite i criteri di accesso del vault.
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.
Note
È 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 una maiuscolaS.
Inserire il nome dell'ambito riservato. I nomi degli ambiti segreti non sono sensibili alle maiuscole.
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.
Clicca 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
Crea un scope segreto con la CLI Databricks (versione 0.205 e superiore) o con l'API Secrets.
Nomi degli ambiti segreti:
- Deve essere univoco all'interno di un'area di lavoro.
- Deve essere composta da caratteri alfanumerici, trattini, caratteri di sottolineatura,
@e punti, 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.
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.
Creare un segreto in un'area gestita da Databricks
Crea un segreto con la CLI Databricks (versione 0.205 e superiore), l'SDK Databricks per Python in un notebook, o l'API Secrets. I nomi segreti sono insensibili al carattere.
Interfaccia a 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:
- Specifica il valore come una stringa con il
--string-valueflag. - 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 SDK per il linguaggio Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Leggere un segreto
Leggi un segreto con la CLI Databricks (versione 0.205 e superiori), oppure in un notebook con l'utilità Secrets (dbutils.secrets).
Interfaccia a riga di comando di Databricks
Per leggere il valore di un segreto usando la CLI Databricks, devi decodificare il valore codificato base64. È possibile usare jq per estrarre il valore e base64 --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>")
Elenco dei segreti
Per elencare i segreti in un determinato ambito:
databricks secrets list-secrets <scope-name>
La risposta mostra i metadati sui segreti, come i loro nomi delle chiavi. Per elencare questi metadati in un notebook o un job, usa l'utilità Secrets (dbutils.secrets). 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, l'utente che crea un ambito segreto ha il MANAGE permesso su di esso, che gli permette di leggere i segreti nell'ambito, scriverli e gestirne i permessi.
Note
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.
Gestire i permessi dello scope dei segreti con la CLI Databricks (versione 0.205 e successive) o con l'API Secrets. Per i livelli di permesso segreti, vedi Secret ACLs.
Concedere a un utente le autorizzazioni per un ambito segreto
Note
Concedere permessi su un ambito segreto richiede il piano Premium.
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.
Ad esempio, per consentire a un gruppo come datascience di leggere i segreti in un ambito, concedigli READ:
databricks secrets put-acl <scope-name> <group> READ
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
Memorizzare le credenziali come segreti di Azure Databricks aiuta a proteggerle quando esegui notebook e processi. Tuttavia, puoi comunque stampare accidentalmente un dato segreto nei buffer di output standard o visualizzare il valore durante l'assegnazione delle variabili.
Per evitare ciò, Azure Databricks tenta di oscurare i valori segreti che vengono letti usando dbutils.secrets.get() e a cui si fa 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].
Warning
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 controllare i segreti, usa le liste di controllo accessi per limitare i permessi di esecuzione dei comandi. In questo modo si impedisce l'accesso non autorizzato ai contesti del notebook condiviso.
Redazione segreta in SQL
Azure Databricks tenta di oscurare tutti i comandi SQL data query language (DQL) che invocano la funzione segreta, inclusi le viste referenziate 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 del linguaggio di manipolazione dati SQL (DML), Azure Databricks consente la ricerca dei secret se il secret è considerato sicuro. Ad esempio, un segreto è sicuro quando è avvolto in una funzione crittografica come sha() o aes_encrypt(), che impediscono che i valori grezzi vengano memorizzati senza criptazione.
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.
Risorse aggiuntive
| Resource | Description |
|---|---|
| Gestione dei segreti | Confronta gli scope dei segreti dello spazio di lavoro con quelli del Catalogo Unity e vedi dove puoi usarli ciascuno. |
| Usa un segreto in una proprietà di configurazione Spark o in una variabile ambientale | Fare riferimento ai segreti nelle proprietà di configurazione di Spark e nelle variabili di ambiente. |