Esercitazioni: Connettersi a Azure Data Lake Storage Gen2
Nota
Questo articolo descrive i modelli legacy per la configurazione dell'accesso ad Azure Data Lake Storage Gen2. Databricks consiglia di usare Unity Catalog. Vedere Creare un metastore del catalogo Unity e Connettersi all'archiviazione di oggetti cloud e ai servizi usando Il catalogo unity.
Questa esercitazione illustra tutti i passaggi necessari per connettersi da Azure Databricks ad Azure Data Lake Storage Gen2 usando OAuth 2.0 con un'entità servizio Microsoft Entra ID.
Requisiti
Completare queste attività prima di iniziare questa esercitazione:
- Creare un'area di lavoro di Azure Databricks. Si veda Avvio rapido: creare un'area di lavoro di Azure Databricks.
- Creare un account di archiviazione di Azure Data Lake Storage Gen2. Vedere Avvio rapido: Creare un account di archiviazione di Azure Data Lake Storage Gen2.
- Creare un insieme di credenziali delle chiavi di Azure. Vedere Avvio rapido: Creare un'istanza di Azure Key Vault
Passaggio 1: Creare un'entità servizio Microsoft Entra ID
Per usare le entità servizio per connettersi ad Azure Data Lake Storage Gen2, un utente amministratore deve creare una nuova applicazione Microsoft Entra ID. Se è già disponibile un'entità servizio Microsoft Entra ID, passare al passaggio 2: Creare un segreto client per l'entità servizio.
Seguire le istruzioni i riportate di seguito per creare un oggetto entità servizio di Microsoft Entra:
Accedere al portale di Azure.
Nota
Il portale da usare è diverso a seconda che l'applicazione di Microsoft Entra ID venga eseguita nel cloud pubblico di Azure o in un cloud nazionale o sovrano. Per altre informazioni, vedere Cloud nazionali.
Se si ha accesso a più tenant, sottoscrizioni o directory, fare clic sull'icona Directory e sottoscrizioni (directory con filtro) nel menu in alto per passare alla directory in cui si vuole effettuare il provisioning dell'entità servizio.
Cerca e seleziona <Microsoft Entra ID.
Alla voce Gestisci, fare clic u Registrazioni app > Nuova registrazione.
In Nome immettere un nome per l'applicazione.
Nella sezione Tipi di account supportati, seleziona l'opzione Solo account in questa directory organizzativa (single tenant).
Fare clic su Registra.
Passaggio 2: Creare un segreto client per l'entità servizio
In Gestisci fare clic su Certificati e segreti.
Nella scheda Segreti client selezionare Nuovo segreto client.
Nella riquadro Aggiungi un segreto client, per Descrizione, immettere una descrizione del segreto client.
Per Scadenza selezionare un periodo di scadenza per il segreto client e quindi fare clic su Aggiungi.
Copiare e archiviare il Valore del segreto client in un luogo sicuro, perché questo segreto client è la password per l'applicazione.
Nella pagina Panoramica della pagina dell'applicazione copiare i seguenti valori nella sezione Informazioni di base:
- ID applicazione (client)
- ID della directory (tenant)
Passaggio 3: Concedere all'entità servizio l'accesso ad Azure Data Lake Storage Gen2
Concedere l'accesso alle risorse di archiviazione assegnando ruoli all'entità servizio. In questa esercitazione si assegna collaboratore ai dati dei BLOB di archiviazione all'entità servizio nell'account Azure Data Lake Storage Gen2. Potrebbe essere necessario assegnare altri ruoli in base a requisiti specifici.
- Nel portale di Azure passare al servizio Account di archiviazione.
- Selezionare un account di archiviazione di Azure da utilizzare.
- Fare clic su Controllo di accesso (IAM).
- Fare clic su + Aggiungi dal menu a discesa, selezionare Aggiungi assegnazione di ruolo.
- Impostare il campo Seleziona sul nome dell'applicazione Microsoft Entra ID creato nel passaggio 1 e impostare Ruolo su Collaboratore ai dati del BLOB di archiviazione.
- Fare clic su Salva.
Passaggio 4: Aggiungere il segreto client ad Azure Key Vault
È possibile archiviare il segreto client dal passaggio 1 in Azure Key Vault.
- Nel portale di Azure passare al servizio Insieme di credenziali delle chiavi.
- Selezionare un insieme di credenziali delle chiavi di Azure da usare.
- Nella pagina di impostazioni di Key Vault selezionare Segreti.
- Fare clic su + Genera/Importa.
- In Opzioni di caricamento selezionare Manuale.
- In Nome immettere un nome per il segreto. Il nome del segreto deve essere univoco all'interno di un'istanza di Key Vault.
- In Valore incollare il segreto client archiviato nel passaggio 1.
- Cliccare su Crea.
Passaggio 5: Configurare l'istanza di Azure Key Vault per Azure Databricks
- Nel portale di Azure passare all'istanza di Azure Key Vault.
In Impostazioni selezionare la scheda Configurazione di accesso.
Impostare Il modello di autorizzazione su Criteri di accesso dell'insieme di credenziali.
Nota
La creazione di un ruolo di ambito segreto supportato da Azure Key Vault concede le autorizzazioni Get e List all'ID applicazione per il servizio Azure Databricks usando i criteri di accesso dell'insieme di credenziali delle chiavi. 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 Consenti l'accesso da: per 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: per Consentire l'accesso pubblico da tutte le reti.
Passaggio 6: Creare un ambito segreto supportato da Azure Key Vault nell'area di lavoro di Azure Databricks
Per fare riferimento al segreto client archiviato in un insieme di credenziali delle chiavi di Azure, è possibile creare un ambito segreto supportato da Azure Key Vault in Azure Databricks.
Vai a
https://<databricks-instance>#secrets/createScope
. Questo URL fa distinzione tra maiuscole e minuscole; l'ambito increateScope
deve essere maiuscolo.Immettere il nome dell'ambito del segreto. I nomi degli ambiti dei segreti non fanno distinzione tra maiuscole e minuscole.
Usare il menu a discesa Gestisci entità per specificare se tutti gli utenti dispongono
MANAGE
dell'autorizzazione per questo ambito segreto o solo creatore dell'ambito del segreto, ad esempio l'utente.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/databricksKV
Queste proprietà sono disponibili nella scheda *> delle impostazioni di un insieme di credenziali delle chiavi di Azure nel portale di Azure.
Fare clic sul pulsante Crea.
Passaggio 7: Connettersi ad Azure Data Lake Storage Gen2 usando Python
È ora possibile accedere in modo sicuro ai dati nell'account di archiviazione di Azure usando OAuth 2.0 con l'entità servizio dell'applicazione Microsoft Entra ID per l'autenticazione da un notebook di Azure Databricks.
Passare all'area di lavoro Azure Databricks e creare un nuovo notebook Python.
Eseguire il codice Python seguente, con le sostituzioni seguenti, per connettersi ad Azure Data Lake Storage Gen2.
service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>") spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth") spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider") spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>") spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential) spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
Sostituzione
-
<scope>
con il nome dell'ambito del segreto del passaggio 5. -
<service-credential-key>
con il nome della chiave contenente il segreto client. -
<storage-account>
con il nome dell'account di archiviazione Azure. -
<application-id>
con l’ID applicazione (client) dell'applicazione Microsoft Entra ID. -
<directory-id>
con l’ID della directory (tenant) per l'applicazione Microsoft Entra ID.
L'area di lavoro di Azure Databricks è stata connessa all'account Azure Data Lake Storage Gen2.
-
Concedere all'area di lavoro di Azure Databricks l'accesso ad Azure Data Lake Storage Gen2
Se si configura un firewall in Azure Data Lake Storage Gen2, è necessario configurare le impostazioni di rete per consentire all'area di lavoro di Azure Databricks di connettersi ad Azure Data Lake Storage Gen2. Assicurarsi prima di tutto che l'area di lavoro di Azure Databricks sia distribuita nella propria rete virtuale seguendo Distribuire Azure Databricks nella rete virtuale di Azure (VNet injection). È quindi possibile configurare gli endpoint privati o l'accesso dalla rete virtuale per consentire le connessioni dalle subnet all'account Azure Data Lake Storage Gen2.
Se si usa un ambiente di calcolo serverless come sql warehouse serverless, è necessario concedere l'accesso dal piano di calcolo serverless ad Azure Data Lake Storage Gen2. Vedere Rete del piano di calcolo serverless.
Concedere l'accesso usando endpoint privati
È possibile usare endpoint privati per l'account Azure Data Lake Storage Gen2 per consentire all'area di lavoro di Azure Databricks di accedere in modo sicuro ai dati tramite un collegamento privato.
Per creare un endpoint privato usando il portale di Azure, vedere Esercitazione: Connettersi a un account di archiviazione usando un endpoint privato di Azure. Assicurarsi di creare l'endpoint privato nella stessa rete virtuale in cui è distribuita l'area di lavoro di Azure Databricks.
Concedere l'accesso dalla rete virtuale
Rete virtuale gli endpoint di servizio consentono di proteggere le risorse critiche del servizio di Azure solo nelle reti virtuali. È possibile abilitare un endpoint di servizio per Archiviazione di Azure all'interno della rete virtuale usata per l'area di lavoro di Azure Databricks.
Per altre informazioni, incluse le istruzioni sull'interfaccia della riga di comando di Azure e PowerShell, vedere Concedere l'accesso da una rete virtuale.
- Accedere al portale di Azure come utente con il ruolo Collaboratore account di archiviazione nell'account Azure Data Lake Storage Gen2.
- Passare all'account Archiviazione di Azure e passare alla scheda Rete.
- Verificare di aver selezionato per consentire l'accesso da Reti virtuali selezionate e indirizzi IP.
- In Reti virtuali selezionare Aggiungi rete virtuale esistente.
- Nel pannello laterale, in Sottoscrizione selezionare la sottoscrizione in cui si trova la rete virtuale.
- In Reti virtuali selezionare la rete virtuale in cui è distribuita l'area di lavoro di Azure Databricks.
- In Subnet selezionare Seleziona tutto.
- Fare clic su Abilita.
- Seleziona Salva per applicare le modifiche.
Risoluzione dei problemi
Errore: IllegalArgumentException: Il segreto non esiste con ambito: KeyVaultScope e chiave
Questo errore significa probabilmente:
- L'ambito supportato da Databricks a cui si fa riferimento nel codice non è valido.
Esaminare il nome del segreto nel passaggio 4 di questo articolo.
Errore: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks non è riuscito ad accedere all'insieme di credenziali delle chiavi
Questo errore significa probabilmente:
- L'ambito supportato da Databricks a cui si fa riferimento nel codice non è valido. o il segreto archiviato nell'insieme di credenziali delle chiavi è scaduto.
Esaminare il passaggio 3 per assicurarsi che il segreto di Azure Key Vault sia valido. Esaminare il nome del segreto nel passaggio 4 di questo articolo.
Errore: ADAuthenticator$HttpException: Errore HTTP 401: token non riuscito per il recupero del token dalla risposta di AzureAD
Questo errore significa probabilmente:
- La chiave privata client dell'entità servizio è scaduta.
Creare un nuovo segreto client seguendo il passaggio 2 di questo articolo e aggiornare il segreto in Azure Key Vault.