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 di Microsoft Entra ID (in precedenza Azure Active Directory).

È 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 di tutto 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 Archiviazione 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 Azure Amministrazione istrator di Azure nell'account di archiviazione.

Passaggio 1: Creare un connettore di accesso per Azure Databricks

Access Connessione or 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 Connessione or per Azure Databricks e selezionarlo.

  4. Fai clic 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 disporre del ruolo Proprietario o Accesso utenti Amministrazione istrator di Azure nell'account di archiviazione.

  1. Accedere all'account Azure Data Lake Archiviazione Gen2.
  2. Passare a Controllo di accesso (IAM), fare clic su + Aggiungi e selezionare Aggiungi assegnazione di ruolo.
  3. Selezionare il ruolo Collaboratore dati BLOB 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 la stessa procedura descritta in precedenza, ma concedere al ruolo delegare BLOB Archiviazione nell'account di archiviazione e al ruolo Collaboratore ai dati BLOB 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 disporre del ruolo Proprietario o Accesso utenti Amministrazione istrator di Azure nell'account di archiviazione.

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

Questo passaggio consente ad Azure Databricks di configurare automaticamente gli eventi di file. 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. Per concedere le autorizzazioni in questo passaggio, è necessario disporre dei ruoli Proprietario o Accesso utenti Amministrazione istrator di Azure per l'identità gestita e il gruppo di risorse in cui si trova l'account Azure Data Lake Archiviazione Gen2.

  1. Seguire i passaggi precedenti nel passaggio 3: Concedere all'identità gestita l'accesso agli eventi di file e assegnare il ruolo collaboratore account Archiviazione, insieme al ruolo collaboratore ai dati della coda Archiviazione, all'identità gestita.
  2. Passare al gruppo di risorse di Azure in cui si trova l'account Azure Data Lake Archiviazione 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 Catalog iconCatalogo.
  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.

    • Accedere Connessione or ID: 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. Fai clic 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. Archiviazione credenziali archivia l'identità gestita e le posizioni esterne 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 riportate in Connessione all'archiviazione di oggetti cloud usando Il catalogo unity.

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 Archiviazione 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 Archiviazione Gen2. È possibile configurare endpoint privati o accedere dalla rete virtuale in Azure Data Lake Archiviazione Gen2 per consentire le connessioni dalle subnet all'account Azure Data Lake Archiviazione Gen2.

Per istruzioni, vedere Concedere all'area di lavoro di Azure Databricks l'accesso ad Azure Data Lake Archiviazione 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/access Connessione ors 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 Archiviazione Gen2 e si prevede di usare sql warehouse serverless, è necessario configurare il firewall per consentire l'accesso da sql warehouse serverless.

Per istruzioni, vedere Configurare un firewall per l'accesso alle risorse di calcolo serverless.

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 Connessione or di Accesso per Azure Databricks e assegnargli le autorizzazioni per il contenitore di archiviazione usato per l'archiviazione radice del metastore del catalogo Unity usando 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.

    Prendere nota dell'URL dell'area di lavoro, ovvero la prima parte dell'URL, dopo https:// e inclusiva di azuredatabricks.net.

  3. Generare un token di accesso personale.

  4. Aggiungere il token di accesso personale al .netrc file nella home directory. Ciò migliora la sicurezza impedendo la visualizzazione del token di accesso personale nella cronologia dei comandi della shell. Vedere l'API di gestione dei token.

  5. Eseguire il comando cURL seguente per ricreare le credenziali di archiviazione.

    Sostituire i valori segnaposto:

    • <databricks-instance>: URL dell'area di lavoro dell'area di lavoro in cui è stato generato il token di accesso personale.
    • <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.
    curl -n -X POST --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/storage-credentials --data "{
      \"name\": \"<credential-name>\",
      \"azure_managed_identity\": {
        \"access_connector_id\": \"<access-connector-id>\",
        \"managed_identity_id\": \"<managed-identity-id>\"
      }
    }"
    
  6. Prendere nota dell'ID credenziale di archiviazione nella risposta.

  7. Eseguire il comando cURL seguente per recuperare , metastore_iddove <databricks-instance> è l'URL dell'area di lavoro dell'area di lavoro in cui è stato generato il token di accesso personale.

    curl -n GET--header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastore_summary
    
  8. Eseguire il comando cURL seguente per aggiornare il metastore con le nuove credenziali di archiviazione radice.

    Sostituire i valori segnaposto:

    • <databricks-instance>: URL dell'area di lavoro dell'area di lavoro in cui è stato generato il token di accesso personale.
    • <metastore-id>: ID metastore recuperato nel passaggio precedente.
    • <storage-credential-id>: ID credenziale di archiviazione.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"