Usare le identità gestite di Azure nel catalogo unity per accedere all'archiviazione

Questo articolo descrive come usare le identità gestite di Azure per la connessione ai contenitori di archiviazione per conto degli utenti di Unity Catalog.

Che cosa sono le identità gestite di Azure?

Il catalogo unity può essere configurato per l'uso di un'identità gestita di Azure per accedere ai contenitori di archiviazione per conto degli utenti di Unity Catalog. Le identità gestite forniscono un'identità per le applicazioni da usare quando si connettono alle risorse che supportano l'autenticazione con ID Microsoft Entra.

È possibile usare le identità gestite in Unity Catalog per supportare due casi d'uso principali:

  • Come identità per connettersi agli account di archiviazione gestiti del metastore (in cui sono archiviate le tabelle gestite).
  • Come identità per connettersi ad altri account di archiviazione esterni (per l'accesso basato su file o per l'accesso ai set di dati esistenti tramite tabelle esterne).

La configurazione di Unity Catalog con un'identità gestita offre i vantaggi seguenti rispetto alla configurazione di Unity Catalog con un'entità servizio:

Configurare un'identità gestita per il catalogo unity

Per configurare un'identità gestita da usare con Unity Catalog, creare prima un connettore di accesso per Azure Databricks in Azure. Per impostazione predefinita, il connettore di accesso verrà distribuito con un'identità gestita assegnata dal sistema. È invece possibile scegliere di associare un'identità gestita assegnata dall'utente. Si concede quindi all'identità gestita l'accesso all'account Azure Data Lake Storage Gen2 e si usa il connettore di accesso quando si creano metastore o credenziali di archiviazione di Unity Catalog.

Requisiti

L'utente o l'entità servizio di Azure che crea il connettore di accesso deve:

  • Essere collaboratore o proprietario di un gruppo di risorse di Azure.

L'utente o l'entità servizio di Azure che concede l'identità gestita all'account di archiviazione deve:

  • Essere un proprietario o un utente con il ruolo controllo degli accessi in base al ruolo di Amministratore accesso utenti di Azure nell'account di archiviazione.

Passaggio 1: Creare un connettore di accesso per Azure Databricks

Il connettore di accesso per Azure Databricks è una risorsa di Azure di prima parte che consente di connettere le identità gestite a un account Azure Databricks.

Ogni connettore di accesso per Azure Databricks può contenere un'identità gestita assegnata dal sistema o un'identità gestita assegnata dall'utente. Se si vogliono usare più identità gestite, creare un connettore di accesso separato per ognuno di essi.

Usare un'identità gestita assegnata dal sistema

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

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

  3. Cercare Access Connector per Azure Databricks e selezionarlo.

  4. Cliccare su Crea.

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

    • Sottoscrizione: sottoscrizione di Azure in cui verrà creato il connettore di accesso. Il valore predefinito è la sottoscrizione di Azure in uso. Può trattarsi di qualsiasi sottoscrizione nel tenant.
    • Gruppo di risorse: gruppo di risorse di 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 Rivedi e crea.

  7. Quando viene visualizzato il messaggio Convalida superata , fare clic su Crea.

    Quando la distribuzione ha esito positivo, il connettore di accesso viene distribuito con un'identità gestita assegnata dal sistema.

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

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

Usare un'identità gestita assegnata dall'utente

  1. Se non si ha già un'identità gestita assegnata dall'utente, crearne una nuova e prendere nota del relativo ID risorsa.

    Vedere Gestire le identità gestite assegnate dall'utente.

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

    Il gruppo di risorse deve trovarsi nella stessa area dell'account di archiviazione a cui connettersi.

  3. Cercare Deploy a custom template (Distribuisci un modello personalizzato) e selezionarlo.

  4. Selezionare Compila un modello personalizzato e incollare il modello seguente nell'editor:

    {
     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "connectorName": {
             "defaultValue": "testConnector",
             "type": "String",
             "metadata": {
                 "description": "The name of the Azure Databricks Access Connector to create."
             }
         },
         "accessConnectorRegion": {
             "defaultValue": "[resourceGroup().location]",
             "type": "String",
             "metadata": {
                 "description": "Location for the access connector resource."
             }
         },
         "userAssignedManagedIdentiy": {
             "type": "String",
             "metadata": {
                 "description": "The resource Id of the user assigned managed identity."
             }
         }
     },
     "resources": [
         {
             "type": "Microsoft.Databricks/accessConnectors",
             "apiVersion": "2023-05-01",
             "name": "[parameters('connectorName')]",
             "location": "[parameters('accessConnectorRegion')]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[parameters('userAssignedManagedIdentiy')]": {}
                 }
              }
          }
       ]
    }
    
  5. Nella scheda Informazioni di base accettare, selezionare o immettere i valori per i campi seguenti:

    • Sottoscrizione: sottoscrizione di Azure in cui verrà creato il connettore di accesso. Il valore predefinito è la sottoscrizione di Azure in uso. Può trattarsi di qualsiasi sottoscrizione nel tenant.
    • Gruppo di risorse: gruppo di risorse nella stessa area dell'account di archiviazione a cui ci si connetterà.
    • Nome: nome che indica lo scopo del connettore.
    • Area: deve essere la stessa area dell'account di archiviazione a cui ci si connetterà. È possibile scegliere il valore prepopolato '[resourceGroup().location]' se il gruppo di risorse è stato creato nella stessa area dell'account di archiviazione a cui ci si connetterà.
    • Identità gestita assegnata dall'utente: ID risorsa dell'identità gestita assegnata dall'utente da usare.
  6. Fare clic su Rivedi e crea.

  7. Quando viene visualizzato il messaggio Convalida superata , fare clic su Crea.

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

  9. 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 Controllo degli accessi in base al ruolo di Azure proprietario o amministratore accesso utenti nell'account di archiviazione.

  1. Accedere all'account Azure Data Lake Storage Gen2.
  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.

In alternativa, è possibile limitare l'accesso all'account di archiviazione concedendo all'identità gestita l'accesso a un contenitore specifico. Seguire gli stessi passaggi precedenti, ma concedere il ruolo delegato del BLOB di archiviazione nell'account di archiviazione e il ruolo Collaboratore ai dati dei BLOB di archiviazione nel contenitore.

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 concedere le autorizzazioni in questo passaggio, è necessario avere il ruolo Controllo degli accessi in base al ruolo di Azure proprietario o amministratore accesso utenti nell'account di archiviazione.

  1. Accedere all'account Azure Data Lake Storage Gen2.
  2. Passare a Controllo di accesso (IAM), fare clic su + Aggiungi e selezionare Aggiungi assegnazione di ruolo.
  3. Selezionare il ruolo Collaboratore dati coda 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: Concedere ad Azure Databricks l'accesso per configurare gli eventi di file per conto dell'utente

Nota

Questo passaggio è facoltativo ma altamente consigliato. 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. In caso contrario, si avrà accesso limitato alle funzionalità critiche che Databricks potrebbe rilasciare in futuro.

Questo passaggio consente ad Azure Databricks di configurare automaticamente gli eventi di file. Per concedere le autorizzazioni in questo passaggio, è necessario avere i ruoli Controllo degli accessi in base al ruolo di Proprietario o Amministratore accesso utenti di Azure per l'identità gestita e il gruppo di risorse in cui si trova l'account Azure Data Lake Storage Gen2.

  1. Seguire le istruzioni in Passaggio 3: Concedere all'identità gestita l'accesso agli eventi di file e assegnare il ruolo Collaboratore account di archiviazione, insieme al ruolo Collaboratore ai dati della coda di archiviazione, all'identità gestita.
  2. Passare al gruppo di risorse di Azure in cui si trova l'account Azure Data Lake Storage Gen2.
  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.

Usare un'identità gestita per accedere all'account di archiviazione radice del catalogo Unity

Questa sezione descrive come concedere all'identità gestita l'accesso all'account di archiviazione radice quando si crea un metastore del catalogo Unity.

Per informazioni su come aggiornare un metastore del catalogo Unity esistente per usare un'identità gestita, vedere Aggiornare il metastore del catalogo Unity esistente per usare un'identità gestita per accedere alla risorsa di archiviazione radice.

  1. Come amministratore dell'account Azure Databricks, accedere alla console dell'account Azure Databricks.
  2. Fare clic su Icona catalogo Catalogo.
  3. Fare clic su Crea metastore.
  4. Immettere i valori per i campi seguenti:
    • Nome del metastore.

    • Area in cui verrà distribuito il metastore.

      Per ottenere prestazioni ottimali, individuare il connettore di accesso, le aree di lavoro, il metastore e la posizione di archiviazione cloud nella stessa area cloud.

    • Percorso di ADLS Gen 2: immettere il percorso del contenitore di archiviazione che verrà usato come risorsa di archiviazione radice per il metastore.

      Il abfss:// prefisso viene aggiunto automaticamente.

    • ID connettore di accesso: immettere l'ID risorsa del connettore di accesso di Azure Databricks nel formato:

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

  5. Cliccare su Crea.
  6. Quando richiesto, selezionare aree di lavoro da collegare al metastore.

Usare un'identità gestita per accedere all'archiviazione esterna gestita nel catalogo unity

Unity Catalog offre la possibilità di accedere ai dati esistenti negli account di archiviazione usando le credenziali di archiviazione e le posizioni esterne. Le credenziali di archiviazione archiviano l'identità gestita e i percorsi esterni definiscono un percorso di archiviazione insieme a un riferimento alle credenziali di archiviazione. È possibile usare questo approccio per concedere e controllare l'accesso ai dati esistenti nell'archiviazione cloud e registrare tabelle esterne in Unity Catalog.

Una credenziale di archiviazione può contenere un'identità gestita o un'entità servizio. L'uso di un'identità gestita offre il vantaggio di consentire a Unity Catalog di accedere agli account di archiviazione protetti dalle regole di rete, che non è possibile usare le entità servizio e rimuove la necessità di gestire e ruotare i segreti.

Per creare credenziali di archiviazione usando un'identità gestita e assegnare tale credenziale di archiviazione a una posizione esterna, seguire le istruzioni in Connettersi all'archiviazione di oggetti cloud e ai servizi usando Unity Catalog.

Se l'area di lavoro di Azure Databricks viene distribuita nella propria rete virtuale di Azure, nota anche come "inserimento reti virtuali" e si usa un firewall di archiviazione per proteggere un account Azure Data Lake Storage Gen2, è necessario:

  1. Abilitare l'area di lavoro di Azure Databricks per accedere alle Archiviazione di Azure.
  2. Abilitare l'identità gestita per accedere alle Archiviazione di Azure.

Passaggio 1: Abilitare l'area di lavoro di Azure Databricks per accedere alle Archiviazione di Azure

È necessario configurare le impostazioni di rete per consentire all'area di lavoro di Azure Databricks di accedere ad Azure Data Lake Storage Gen2. È possibile configurare endpoint privati o accedere dalla rete virtuale in Azure Data Lake Storage Gen2 per consentire le connessioni dalle subnet all'account Azure Data Lake Storage Gen2.

Per istruzioni, vedere Concedere all'area di lavoro di Azure Databricks l'accesso ad Azure Data Lake Storage Gen2.

Passaggio 2: Abilitare l'identità gestita per accedere alle Archiviazione di Azure

Questo passaggio è necessario solo se "Consenti ai servizi di Azure nell'elenco dei servizi attendibili di accedere a questo account di archiviazione" è disabilitato per l'account Archiviazione di Azure. Se la configurazione è abilitata:

  • Qualsiasi connettore di accesso per Azure Databricks nello stesso tenant dell'account di archiviazione può accedere all'account di archiviazione.
  • Qualsiasi servizio attendibile di Azure può accedere all'account di archiviazione. Vedere Concedere l'accesso ai servizi di Azure attendibili.

Le istruzioni seguenti includono un passaggio in cui si disabilita questa configurazione. È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure.

Usare il portale di Azure

  1. Accedere al portale di Azure, trovare e selezionare l'account Archiviazione di Azure e passare alla scheda Rete.

  2. Impostare Accesso alla rete pubblica su Abilitato da reti virtuali e indirizzi IP selezionati.

    Come opzione, è invece possibile impostare Accesso alla rete pubblica su Disabilitato. L'identità gestita può essere usata per ignorare il controllo sull'accesso alla rete pubblica.

  3. In Istanze di risorse selezionare un tipo di risorsa di Microsoft.Databricks/accessConnectors e selezionare il connettore di accesso di Azure Databricks.

  4. In Eccezioni deselezionare la casella di controllo Consenti ai servizi di Azure nell'elenco servizi attendibili di accedere a questo account di archiviazione.

Usare l'interfaccia della riga di comando di Azure

  1. Installare l'interfaccia della riga di comando di Azure ed eseguire l'accesso.

    Per accedere usando un'entità servizio Microsoft Entra ID, vedere Accesso dell'interfaccia della riga di comando di Azure con un'entità servizio Microsoft Entra ID.

    Per accedere usando un account utente di Azure Databricks, vedere Accesso dell'interfaccia della riga di comando di Azure con un account utente di Azure Databricks.

  2. Aggiungere una regola di rete all'account di archiviazione:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    Aggiungere l'ID risorsa nel formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. Dopo aver creato la regola di rete, passare all'account Archiviazione di Azure nel portale di Azure e visualizzare l'identità gestita nella scheda Rete in Istanze di risorse, tipo di Microsoft.Databricks/accessConnectorsrisorsa .

  4. In Eccezioni deselezionare la casella di controllo Consenti ai servizi di Azure nell'elenco servizi attendibili di accedere a questo account di archiviazione.

  5. Facoltativamente, impostare Accesso alla rete pubblica su Disabilitato. L'identità gestita può essere usata per ignorare il controllo sull'accesso alla rete pubblica.

    L'approccio standard consiste nel mantenere questo valore impostato su Abilitato da reti virtuali e indirizzi IP selezionati.

I data warehouse SQL serverless sono risorse di calcolo eseguite nella sottoscrizione di Azure per Azure Databricks, non nella sottoscrizione di Azure. Se si configura un firewall in Azure Data Lake Storage Gen2 e si prevede di usare sql warehouse serverless, è necessario configurare il firewall per consentire l'accesso da sql warehouse serverless.

Per istruzioni, vedere Configure a Firewall for Report Server Access.

Aggiornare il metastore del catalogo Unity esistente per usare un'identità gestita per accedere all'archiviazione radice

Se si dispone di un metastore del catalogo Unity creato usando un'entità servizio e si vuole aggiornarlo per usare un'identità gestita, è possibile aggiornarlo usando una chiamata API.

  1. Creare un connettore di accesso per Azure Databricks e assegnargli le autorizzazioni per il contenitore di archiviazione usato per l'archiviazione radice del metastore del catalogo Unity, seguendo le istruzioni riportate in Configurare un'identità gestita per Il catalogo unity.

    È possibile creare il connettore di accesso con un'identità gestita assegnata dal sistema o un'identità gestita assegnata dall'utente.

    Prendere nota dell'ID risorsa del connettore di accesso. Se si usa un'identità gestita assegnata dall'utente, prendere nota anche del relativo ID risorsa.

  2. Come amministratore dell'account, accedere a un'area di lavoro di Azure Databricks assegnata al metastore.

    Non è necessario essere un amministratore dell'area di lavoro.

  3. Generare un token di accesso personale.

  4. Creare un profilo di configurazione di autenticazione di Azure Databricks nell'ambiente locale che contiene quanto segue:

    • Nome dell'istanza dell'area di lavoro e ID area di lavoro dell'area di lavoro in cui è stato generato il token di accesso personale.
    • Valore del token di accesso personale.

    Consultare Autenticazione con token di accesso personale di Azure Databricks.

  5. Usare l'interfaccia della riga di comando di Databricks per eseguire il comando seguente per ricreare le credenziali di archiviazione.

    Sostituire i valori segnaposto;

    • <credential-name>: nome per le credenziali di archiviazione.
    • <access-connector-id>: ID risorsa per il connettore di accesso di Azure Databricks nel formato /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: se è stato creato il connettore di accesso usando un'identità gestita assegnata dall'utente, specificare l'ID risorsa dell'identità gestita.
    • <profile-name>: nome del profilo di configurazione dell'autenticazione di Azure Databricks.
    databricks storage-credentials create --json '{
      "name\": "<credential-name>",
      "azure_managed_identity": {
        "access_connector_id": "<access-connector-id>",
        "managed_identity_id": "<managed-identity-id>"
      }
    }' --profile <profile-name>
    
  6. Prendere nota dell'ID credenziale di archiviazione nella risposta.

  7. Eseguire il comando seguente dell'interfaccia della riga di comando di Databricks per recuperare .metastore_id Sostituire <profile-name> con il nome del profilo di configurazione dell'autenticazione di Azure Databricks.

    databricks metastores summary --profile <profile-name>
    
  8. Eseguire il comando seguente dell'interfaccia della riga di comando di Databricks per aggiornare il metastore con le nuove credenziali di archiviazione radice.

    Sostituire i valori segnaposto;

    • <metastore-id>: ID metastore recuperato nel passaggio precedente.
    • <storage-credential-id>: ID credenziale di archiviazione.
    • <profile-name>: nome del profilo di configurazione dell'autenticazione di Azure Databricks.
    databricks metastores update <metastore-id> \
    --storage-root-credential-id <storage-credential-id> \
    --profile <profile-name>