Connettersi a una posizione esterna di Azure Data Lake Storage Gen2 (ADLS Gen2)

Questa pagina descrive come connettersi a una posizione esterna Azure Data Lake Storage Gen2 (ADLS Gen2). Dopo aver completato questa connessione, è possibile gestire l'accesso a questi oggetti ADLS Gen2 usando Unity Catalog.

Per connettersi a un percorso di un container ADLS Gen2, sono necessari due oggetti proteggibili di Unity Catalog. Il primo è una credenziale storage, che specifica un'identità gestita Azure che consente l'accesso al contenitore ADLS Gen2. Questa credenziale di archiviazione è necessaria per il secondo oggetto obbligatorio: una posizione esterna, che definisce il percorso del percorso di archiviazione di ADLS Gen2 e le credenziali necessarie per accedere a tale posizione.

Requirements

In Azure Databricks:

  • Area di lavoro di Azure Databricks abilitata per Unity Catalog.
  • CREATE STORAGE CREDENTIAL privilegio sul metastore di Unity Catalog associato all'area di lavoro. Gli amministratori dell'account e gli amministratori del metastore hanno questo privilegio per impostazione predefinita.
  • CREATE EXTERNAL LOCATION privilegio sia sul metastore di Unity Catalog sia sulla credenziale di archiviazione a cui si riferisce la posizione esterna. Per impostazione predefinita, gli amministratori metastore e gli amministratori dell'area di lavoro hanno questo privilegio.

Nel tuo account Azure:

  • Un account di archiviazione e un contenitore ADLS Gen2. Per evitare addebiti in uscita, deve trovarsi nella stessa area dell'area di lavoro da cui si vuole accedere ai dati.

    • I percorsi di posizione esterna devono contenere solo caratteri ASCII standard (lettere , , cifre A–Ze simboli comuni come a–z, , 0–9/). _-

    • Gli account di archiviazione di Azure Data Lake Storage usati come posizioni esterne devono avere uno spazio dei nomi gerarchico.

    • Non è possibile usare i contenitori di archiviazione di Azure con criteri di immutabilità (WORM - Write Once, Read Many) abilitati come percorsi esterni. Il Catalogo Unity richiede autorizzazioni DELETE per i contenitori di archiviazione, che i criteri di immutabilità impediscono. Per altre informazioni sui criteri di immutabilità, vedere Configurare i criteri di immutabilità per i contenitori.

    • Se l'accesso alla rete pubblica è disabilitato nell'account di archiviazione, è necessario abilitare l'opzione Consenti ai servizi attendibili di Azure di consentire ad Azure Databricks di connettersi all'account di archiviazione. È possibile configurare questa impostazione usando il interfaccia della riga di comando di Azure:

      # Check current network rule set
      az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet"
      
      # Set bypass for Azure Services
      az storage account update \
        --name <storage_account_name> \
        --resource-group <resource_group_name> \
        --bypass AzureServices
      
  • Autorizzazione per creare un connettore di accesso per Azure Databricks nella sottoscrizione Azure. A tale scopo, è necessario essere un Contributor o Owner di un gruppo di risorse Azure.

  • Autorizzazione per modificare i criteri di accesso per l'account di archiviazione. Per eseguire questa operazione, devi essere il proprietario o un utente con il ruolo Azure RBAC User Access Administrator nel tuo account di archiviazione.

Creare credenziali di archiviazione che accedono ad ADLS Gen2

Per creare credenziali di archiviazione per l'accesso a un contenitore ADLS Gen2, creare prima un connettore di accesso per Azure Databricks con un'identità gestita, quindi concedere all'identità gestita l'accesso all'account di archiviazione.

Passaggio 1: Creare un connettore di accesso per Azure Databricks

Un connettore di accesso per Azure Databricks è una risorsa Azure di prima parte che consente di connettere le identità gestite a un account Azure Databricks. Ogni connettore di accesso per Azure Databricks può includere un'identità gestita assegnata dal sistema, una o più identità gestite assegnate dall'utente o entrambe.

  1. Accedere al portale di Azure come collaboratore o proprietario di un gruppo di risorse.

  2. Fare clic su + Crea o Crea una risorsa.

  3. Effettuare una ricerca per Access Connector per Azure Databricks e selezionarlo.

  4. Clicca su Crea.

  5. Nella scheda Informazioni di base accettare, selezionare o immettere i valori per i campi seguenti:

    • Subscription: si tratta della sottoscrizione Azure in cui verrà creato il connettore di accesso. Il valore predefinito è la sottoscrizione Azure in uso. Può trattarsi di qualsiasi sottoscrizione nel tenant.
    • Gruppo di risorse: si tratta del gruppo di risorse Azure in cui verrà creato il connettore di accesso.
    • Nome: immettere un nome che indica lo scopo del connettore.
    • Area: deve essere la stessa area dell'account di archiviazione a cui ci si connetterà.
  6. Fare clic su Avanti, immettere i tag e fare clic su Avanti.

  7. Nella scheda "Identità gestite" di, creare le identità gestite come segue:

    • Per usare un'identità gestita assegnata dal sistema, impostare Stato su .
    • Per aggiungere identità gestite assegnate dall'utente, fare clic su + Aggiungi e selezionare una o più identità gestite assegnate dall'utente.

    Configurare le identità gestite per un connettore di accesso.

  8. Clicca su Rivedi e crea.

  9. Esaminare le impostazioni di configurazione e quindi fare clic su Crea.

  10. Una volta completata la distribuzione, fare clic su Vai alla risorsa.

  11. Prendere nota dell'ID risorsa.

    L'ID risorsa è nel formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Passaggio 2: Concedere all'identità gestita l'accesso all'account di archiviazione

Per concedere le autorizzazioni in questo passaggio, è necessario avere il ruolo Azure RBAC Owner o User Access Administrator nel tuo account di archiviazione.

Quando si concede all'identità gestita l'accesso all'account di archiviazione e al contenitore, sono disponibili le opzioni seguenti:

  • Concedere l'accesso in lettura e scrittura all'intero account di archiviazione usando il ruolo Storage Blob Data Contributor.
  • Concedere un ruolo più limitato all'account di archiviazione usando il ruolo Storage Blob Delegator e l'accesso in lettura e scrittura a un contenitore specifico usando il ruolo Storage Blob Data Contributor.

Le istruzioni seguenti presuppongono che si assegni il ruolo Storage Blob Data Contributor sull'account di archiviazione, ma è possibile sostituire le altre opzioni in base alle esigenze.

  1. Accedi al tuo account Azure Data Lake Storage.
  2. Passare a Controllo di accesso (IAM), fare clic su + Aggiungi e selezionare Aggiungi assegnazione di ruolo.
  3. Selezionare il ruolo Collaboratore ai dati dei BLOB di archiviazione e fare clic su Avanti.
  4. In Assegna accesso a, selezionare Identità gestita.
  5. Fare clic su +Seleziona membri e selezionare Connettore di accesso per Azure Databricks o Identità gestita assegnata dall'utente.
  6. Cercare il nome del connettore o l'identità assegnata dall'utente, selezionarlo e fare clic su Rivedi e assegna.

Passaggio 3: Concedere all'identità gestita l'accesso agli eventi di file

La concessione dell'accesso all'identità gestita agli eventi di file consente ad Azure Databricks di sottoscrivere le notifiche degli eventi di file generate dai provider di servizi cloud. In questo modo l'elaborazione dei file risulta più efficiente. Per altre informazioni, vedere Configurare gli eventi di file per un percorso esterno.

Per concedere le autorizzazioni in questo passaggio, devi avere il ruolo RBAC di Azure "Proprietario" o "Amministratore Accesso Utenti" sul tuo account di archiviazione.

  1. Accedi al tuo account Azure Data Lake Storage.
  2. Passare a Controllo di accesso (IAM), fare clic su + Aggiungi e selezionare Aggiungi assegnazione di ruolo.
  3. Selezionare il ruolo Collaboratore dati della coda di archiviazione e fare clic su Avanti.
  4. In Assegna accesso a, selezionare Identità gestita.
  5. Fare clic su +Seleziona membri e selezionare Connettore di accesso per Azure Databricks o Identità gestita assegnata dall'utente.
  6. Cercare il nome del connettore o l'identità assegnata dall'utente, selezionarlo e fare clic su Rivedi e assegna.

Passaggio 4: Concedi ad Azure Databricks l'accesso per configurare gli eventi dei file per conto dell'utente

Annotazioni

Se non si concede l'accesso ad Azure Databricks per configurare gli eventi di file per conto dell'utente, è necessario configurare manualmente gli eventi di file per ogni posizione. Ignorare questa configurazione manuale limita l'accesso a diverse funzionalità di Databricks. Per altre informazioni sugli eventi di file, vedere Configurare gli eventi di file per un percorso esterno.

Questo passaggio consente ad Azure Databricks di configurare automaticamente gli eventi di file. Per concedere le autorizzazioni in questo passaggio, è necessario avere i ruoli Azure RBAC di Proprietario o Amministratore accesso utenti sulla propria identità gestita e sul gruppo di risorse in cui si trova l'account Azure Data Lake Storage.

  1. Seguire le istruzioni in Passaggio 3: Concedere all'identità gestita l'accesso agli eventi relativi ai file e assegnare il ruolo Storage Account Contributor alla propria identità gestita.

    Questo ruolo non sostituisce i ruoli concessi nei passaggi 2 o 3 in questa pagina, ma è in aggiunta a essi.

  2. Passare al gruppo di risorse di Azure in cui si trova l'account azure Data Lake Storage.

  3. Passare a Controllo di accesso (IAM), fare clic su + Aggiungi e selezionare Aggiungi assegnazione di ruolo.

  4. Selezionare il ruolo Collaboratore EventGrid EventSubscription e fare clic su Avanti.

  5. In Assegna accesso a, selezionare Identità gestita.

  6. Fare clic su +Seleziona membri e selezionare Connettore di accesso per Azure Databricks o Identità gestita assegnata dall'utente.

  7. Cercare il nome del connettore o l'identità assegnata dall'utente, selezionarlo e fare clic su Rivedi e assegna.

Passaggio 5: Creare le credenziali di archiviazione in Databricks

Dopo aver creato un connettore di accesso con un'identità gestita e aver concesso le autorizzazioni per l'account di archiviazione, è possibile creare le credenziali di archiviazione in Azure Databricks.

  1. Accedere all'area di lavoro di Azure Databricks abilitata per Unity Catalog come utente con il privilegio CREATE STORAGE CREDENTIAL nel metastore.

  2. Nella barra laterale fare clic sull'icona Dati.Catalogo.

  3. Fare clic sull'icona Aggiungi o più e quindi su Crea credenziali.

  4. Selezionare un tipo di credenziale di Azure Managed Identity.

  5. Immettere un nome credenziali di archiviazione e un commento facoltativo.

  6. Immettere l'ID connettore di accesso (ID risorsa annotato nel passaggio 1).

    L'ID risorsa è nel formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (Facoltativo) Se il connettore di accesso è stato creato usando un'identità gestita assegnata dall'utente, immettere l'ID identità gestita (ID risorsa dell'identità gestita).

  8. (Facoltativo) Se si vuole che gli utenti abbiano accesso in sola lettura alle posizioni esterne che usano questa credenziale di archiviazione, fare clic su Opzioni avanzate e selezionare Limita all'uso di sola lettura. Per altre informazioni, vedere Contrassegnare le credenziali di archiviazione come di sola lettura.

  9. Clicca su Crea.

  10. (Facoltativo) Associare le credenziali di archiviazione a aree di lavoro specifiche.

    Per impostazione predefinita, qualsiasi utente con privilegi può usare le credenziali di archiviazione in qualsiasi area di lavoro collegata al metastore. Se si vuole consentire l'accesso solo da aree di lavoro specifiche, passare alla scheda Aree di lavoro e assegnare le aree di lavoro. Vedere Assegnare credenziali di archiviazione a aree di lavoro specifiche.

È ora possibile creare un percorso esterno che faccia riferimento alle credenziali di archiviazione.

Creare una posizione esterna per un contenitore di ADLS Gen2

Questa sezione descrive come creare una posizione esterna usando Esplora cataloghi o SQL. Si presuppone che si disponga già di credenziali di archiviazione che consentano l'accesso al contenitore ADLS Gen2. Se non si dispone di credenziali di archiviazione, seguire la procedura descritta in Creare credenziali di archiviazione che accedono ad ADLS Gen2.

Opzione 1: Creare manualmente una posizione esterna usando Esplora cataloghi

È possibile creare manualmente una posizione esterna usando Esplora cataloghi.

Per creare il percorso esterno:

  1. Accedi a un'area di lavoro collegata al metastore.

  2. Nella barra laterale fare clic sull'icona Dati.Catalogo.

  3. Fare clic sull'icona Aggiungi o più e quindi su Crea una posizione esterna.

  4. Immettere un nome di una posizione esterna.

  5. In Tipo di archiviazione selezionare Azure.

  6. In URL immettere il percorso del contenitore ADLS Gen2. Ad esempio: abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.

  7. In Credenziali di archiviazione selezionare le credenziali di archiviazione che concedono l'accesso alla posizione esterna.

  8. (Facoltativo) Se si vuole che gli utenti abbiano accesso in sola lettura alla posizione esterna, fare clic su Opzioni avanzate e selezionare Limita all'uso di sola lettura. Per altre informazioni, vedere Contrassegnare una posizione esterna come di sola lettura.

  9. (Facoltativo) Se la destinazione esterna è destinata a un catalogo metastore Hive federato, fare clic su Opzioni avanzate e abilitare la modalità di fallback.

    Consultare Abilitare la modalità di fallback nei percorsi esterni.

  10. (Facoltativo) Per abilitare la possibilità di iscriversi alle notifiche di modifica nel percorso esterno, fare clic su Opzioni avanzate e selezionare Abilita notifiche di eventi sui file.

    Per informazioni dettagliate, vedere Configurare gli eventi di file per una posizione esterna.

  11. Clicca su Crea.

  12. (Facoltativo) Associare la posizione esterna a aree di lavoro specifiche.

    Per impostazione predefinita, qualsiasi utente con privilegi può usare la posizione esterna in qualsiasi area di lavoro collegata al metastore. Se si vuole consentire l'accesso solo da aree di lavoro specifiche, passare alla scheda Aree di lavoro e assegnare le aree di lavoro. Vedere Assegnare una posizione esterna a aree di lavoro specifiche.

  13. Passare alla scheda Autorizzazioni per concedere l'autorizzazione per l'uso della posizione esterna.

    Per consentire a chiunque di usare la posizione esterna, è necessario concedere le autorizzazioni:

    • Per utilizzare l'ubicazione esterna per aggiungere un'ubicazione di archiviazione gestita al metastore, al catalogo o allo schema, concedere il CREATE MANAGED LOCATION privilegio.
    • Per creare tabelle o volumi esterni, concedere CREATE EXTERNAL TABLE o CREATE EXTERNAL VOLUME.

    Segui questi passaggi:

    1. Fare clic su "Concedi".
    2. Nella finestra di dialogo Grant on <external location>, selezionare utenti, gruppi o entità servizio nel campo Principals e selezionare il privilegio che si vuole concedere.
    3. Fare clic su "Concedi".

Opzione 2: Creare un percorso esterno usando SQL

Per creare un percorso esterno usando SQL, eseguire il comando seguente in un notebook o nell'editor di query SQL. Sostituire i valori dei segnaposto. Per le autorizzazioni e i prerequisiti necessari, vedere Requisiti.

  • <location-name>: Un nome per la posizione esterna. Se location_name include caratteri speciali, ad esempio trattini (-), deve essere racchiuso da backticks (` `). Consulta Nomi.
  • <container-path>: Il percorso nel tenant cloud a cui questa posizione esterna consente l'accesso. Ad esempio: abfss://mycontainer@mystorageaccount.dfs.core.windows.net/.
  • <storage-credential-name>: nome delle credenziali di archiviazione che autorizza la lettura e la scrittura nel contenitore. Se il nome delle credenziali di archiviazione include caratteri speciali, ad esempio trattini (-), deve essere racchiuso da apici inversi (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Se vuoi limitare l'accesso alla località esterna a specifiche aree di lavoro nel tuo account, operazione nota anche come associazione alle aree di lavoro o isolamento della località esterna, consulta Assegnare una località esterna a specifiche aree di lavoro.

Verificare la connessione

Per verificare di aver creato correttamente il percorso esterno, provare a leggere un file dal percorso esterno. Si supponga, ad esempio, di avere un percorso abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ esterno contenente un file CSV denominato example.csv. Per leggere dal abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv file, seguire questa procedura:

  1. Nella barra laterale fare clic sull'icona Notebook.Area di lavoro.

  2. Fare clic su Crea, quindi selezionare Notebook.

  3. Eseguire il frammento di codice Python seguente:

    display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))
    

    Visualizza un elenco di percorsi dei file nella posizione esterna. In questo esempio il abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv file viene visualizzato nell'output.

  4. Per leggere un file specifico nella posizione esterna, eseguire il seguente frammento di codice Python:

    spark.read.format("csv") \
       .option("header", "true") \
       .option("delimiter", ";") \
       .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \
       .display()
    

    Vengono visualizzati i dati nel abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv file.

Passaggi successivi