Condividi tramite


Esercitazione: Connettersi ad Azure Data Lake Storage

Nota

Questo articolo descrive i modelli legacy per la configurazione dell'accesso ad Azure Data Lake Storage. Databricks consiglia di usare Unity Catalog. Vedere Creare un metastore del Catalogo Unity e Connettersi all'archiviazione di oggetti cloud utilizzando il Catalogo Unity.

Questa esercitazione illustra tutti i passaggi necessari per connettersi da Azure Databricks ad Azure Data Lake Storage usando OAuth 2.0 con un principale del servizio di Microsoft Entra ID.

Requisiti

Completare queste attività prima di iniziare questa esercitazione:

Passaggio 1: Creare un principale del servizio Microsoft Entra ID

Per usare i principali del servizio per connettersi ad Azure Data Lake Storage, un utente amministratore deve creare una nuova applicazione Microsoft Entra ID. Se è già disponibile un'entità principale del servizio Microsoft Entra ID, passare al Passaggio 2: Creare un segreto client per l'entità principale del servizio.

Sono riportate di seguito le istruzioni per creare un'entità del servizio Microsoft Entra ID:

  1. 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.

  2. Se si ha accesso a più tenant, sottoscrizioni o directory, fare clic sull'icona Directory + sottoscrizioni (directory con filtro) nel menu in alto per passare alla directory in cui si vuole effettuare il provisioning dell'entità servizio.

  3. Cerca e seleziona <Microsoft Entra ID.

  4. Alla voce Gestisci, fare clic u Registrazioni app > Nuova registrazione.

  5. In Nome immettere un nome per l'applicazione.

  6. Nella sezione Tipi di account supportati, seleziona Account solo in questa directory organizzativa (tenant singolo).

  7. Fare clic su Registra.

Passaggio 2: Creare un client secret per il principale del servizio

  1. In Gestisci fare clic su Certificati e segreti.

  2. Nella scheda Segreti client selezionare Nuovo segreto client.

    Nuovo segreto del client

  3. Nella riquadro Aggiungi un segreto client, per Descrizione, immettere una descrizione del segreto client.

  4. Per Scadenza selezionare un periodo di scadenza per il segreto client e quindi fare clic su Aggiungi.

  5. Copiare e archiviare il valore del segreto client in un luogo sicuro, perché questo segreto client è la password per l'applicazione.

  6. Nella pagina dell'applicazione Panoramica, nella sezione Essenziali, copiare i valori seguenti:

    • ID applicazione (cliente)
    • ID della directory (tenant)

Passaggio 3: Concedere al principale del servizio l'accesso ad Azure Data Lake Storage

Concedi l'accesso alle risorse di archiviazione assegnando ruoli all'entità servizio. In questa esercitazione, si assegna il ruolo di Collaboratore ai dati di archiviazione di BLOB all'entità servizio sul tuo account di Azure Data Lake Storage. Potrebbe essere necessario assegnare altri ruoli in base a requisiti specifici.

  1. Nel portale di Azure passare al servizio Account di archiviazione.
  2. Selezionare un account di archiviazione di Azure da utilizzare.
  3. Fare clic su Controllo di accesso (IAM).
  4. Fare clic su + Aggiungi dal menu a discesa, selezionare Aggiungi assegnazione di ruolo.
  5. Impostare il campo Seleziona sul nome dell'applicazione Microsoft Entra ID creato nel passaggio 1 e impostare il Ruolo su Collaboratore dati BLOB di archiviazione.
  6. 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.

  1. Nel portale di Azure, passare al servizio Vault delle chiavi.
  2. Selezionare un Azure Key Vault da utilizzare.
  3. Nella pagina di impostazioni di Key Vault selezionare Segreti.
  4. Fare clic su + Genera/Importa.
  5. In Opzioni di caricamento selezionare Manuale.
  6. In Nome immettere un nome per il segreto. Il nome del segreto deve essere univoco all'interno di un Key Vault.
  7. In Valore incollare il segreto client archiviato nel passaggio 1.
  8. Cliccare su Crea.

Passaggio 5: Configurare l'istanza di Azure Key Vault per Azure Databricks

  1. Nel portale di Azure, passare all'istanza di Azure Key Vault.

    1. In Impostazioni selezionare la scheda Configurazione di accesso.

    2. Impostare Modello di autorizzazione su criterio 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.

    3. In Impostazioni, selezionare Rete.

    4. 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.

Passaggio 6: Creare un ambito segreto supportato da Azure Key Vault nell'area di lavoro di Azure Databricks

Per fare riferimento al segreto del client archiviato in un Azure Key Vault, è possibile creare un ambito segreto supportato da Azure Key Vault in Azure Databricks.

  1. Vai a https://<databricks-instance>#secrets/createScope. Questo URL fa distinzione tra maiuscole e minuscole; l'ambito in createScope deve essere maiuscolo.

    Creare l'ambito

  2. Immettere il nome dell'ambito del segreto. I nomi degli ambiti segreti non sono sensibili alle maiuscole.

  3. Usare il menu a discesa Gestisci Principal per specificare se tutti gli utenti dispongono MANAGE dell'autorizzazione per questo ambito segreto o solo il creatore dell'ambito segreto, cioè te.

  4. 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 *Impostazioni > Proprietà di un Azure Key Vault nel portale di Azure.

  5. Fare clic sul pulsante Crea.

Passaggio 7: Connettersi ad Azure Data Lake Storage con Python

È ora possibile accedere in modo sicuro ai dati nell'account di archiviazione di Azure utilizzando OAuth 2.0 con il principale del servizio dell'applicazione Microsoft Entra ID per l'autenticazione da un notebook di Azure Databricks.

  1. Passare all'area di lavoro Azure Databricks e creare un nuovo notebook Python.

  2. Eseguire il codice Python seguente, con le sostituzioni seguenti, per connettersi ad Azure Data Lake Storage.

    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 della portata segreta del passaggio 5.
    • <service-credential-key> con il nome della chiave contenente il segreto del 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.

    Ora hai connesso con successo il tuo spazio di lavoro Azure Databricks al tuo account Azure Data Lake Storage.

Concedere all'area di lavoro di Azure Databricks l'accesso ad Azure Data Lake Storage

Se si configura un firewall in Azure Data Lake Storage, è necessario configurare le impostazioni di rete per consentire all'area di lavoro di Azure Databricks di connettersi ad Azure Data Lake Storage. 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 endpoint privati o l'accesso dalla vostra rete virtuale per consentire le connessioni dalle subnet all'account Azure Data Lake Storage.

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. Vedere Rete per il piano di calcolo senza server.

Garantire l'accesso utilizzando endpoint privati

È possibile usare endpoint privati per l'account Azure Data Lake Storage 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

Gli endpoint di servizio della rete virtuale consentono di proteggere le risorse critiche del servizio di Azure esclusivamente alle vostre 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.

  1. Accedi al portale di Azure come utente con il ruolo di Collaboratore dell'account di archiviazione nel tuo account Azure Data Lake Storage.
  2. Vai al tuo Account di Archiviazione di Azure e accedi alla scheda Rete.
  3. Verificare di aver selezionato per consentire l'accesso da Reti virtuali selezionate e indirizzi IP.
  4. In Reti virtuali selezionare Aggiungi rete virtuale esistente.
  5. Nel pannello laterale, in Sottoscrizione selezionare la sottoscrizione in cui si trova la rete virtuale.
  6. In Reti virtuali selezionare la rete virtuale in cui è distribuita l'area di lavoro di Azure Databricks.
  7. In Subnet selezionare Seleziona tutto.
  8. Fare clic su Abilita.
  9. 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.

Rivedere il nome del tuo segreto nel passaggio 4 di questo articolo.

Errore: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks non è riuscito ad accedere al Key Vault

Questo errore significa probabilmente:

  • L'ambito supportato da Databricks a cui si fa riferimento nel codice non è valido. o il segreto archiviato nel Key Vault è scaduto.

Esaminare il passaggio 3 per assicurarsi che il segreto di Azure Key Vault sia valido. Rivedere il nome del tuo 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.

Risorse