Autenticare tabelle esterne con identità gestite

Una tabella esterna è un'entità dello schema che fa riferimento ai dati archiviati all'esterno del database Esplora dati di Azure. Le tabelle esterne possono essere definite per fare riferimento ai dati in Archiviazione di Azure o SQL Server e supportano vari metodi di autenticazione.

Questo articolo illustra come creare una tabella esterna che esegue l'autenticazione con un'identità gestita.

Prerequisiti

1 - Configurare un'identità gestita da usare con tabelle esterne

Sono disponibili due tipi di identità gestite:

  • Assegnata dal sistema: un'identità assegnata dal sistema è connessa al cluster e viene rimossa quando il cluster viene rimosso. È consentita una sola identità assegnata dal sistema per ogni cluster.

  • Assegnata dall'utente: un'identità gestita assegnata dall'utente è una risorsa di Azure autonoma. È possibile assegnare più identità assegnate dall'utente al cluster.

Selezionare una delle schede seguenti per configurare il tipo di identità gestita preferito.

  1. Seguire la procedura per aggiungere un'identità assegnata dall'utente al cluster e salvare l'ID oggetto (entità) per usarlo in un secondo momento.

  2. Eseguire il comando .alter-merge policy managed_identity . Questo comando imposta un criterio di identità gestita nel cluster che consente l'uso dell'identità gestita con tabelle esterne. Sostituire <objectId> con l'ID oggetto (entità).

    .alter-merge cluster policy managed_identity ```[
        {
          "ObjectId": "<objectId>",
          "AllowedUsages": "ExternalTable"
        }
    ]```
    

    Nota

    Per impostare i criteri in un database specifico, usare database <DatabaseName> invece di cluster.

2 - Concedere le autorizzazioni per le risorse esterne per l'identità gestita

Per eseguire correttamente l'autenticazione, l'identità gestita deve disporre delle autorizzazioni per la risorsa esterna.

Selezionare la scheda per il tipo pertinente di risorsa esterna e assegnare le autorizzazioni necessarie.

La tabella seguente illustra le autorizzazioni necessarie per risorsa esterna. Per importare o eseguire query sui dati dalla risorsa esterna, concedere all'identità gestita le autorizzazioni di lettura. Per esportare i dati nella risorsa esterna, concedere le autorizzazioni di scrittura dell'identità gestita.

Archivio dati esterno Autorizzazioni di lettura Autorizzazioni di scrittura Concedere le autorizzazioni
Archiviazione BLOB di Azure Lettore dei dati del BLOB di archiviazione Collaboratore dati BLOB di archiviazione Assegnare un ruolo di Azure
Data Lake Storage Gen2 Lettore dei dati del BLOB di archiviazione Collaboratore dati BLOB di archiviazione Assegnare un ruolo di Azure
Data Lake Storage Gen1 Lettore Collaboratore Assegnare un ruolo di Azure

3 - Creare una tabella esterna

Esistono due tipi di tabelle esterne che supportano l'autenticazione con identità gestite: Archiviazione di Azure tabelle esterne e tabelle esterne di SQL Server.

Selezionare una delle schede seguenti per configurare un Archiviazione di Azure o una tabella esterna di SQL Server.

Per creare una tabella esterna Archiviazione di Azure, seguire questa procedura:

  1. Creare un stringa di connessione basato sui modelli di stringa di connessione di archiviazione. Questa stringa indica la risorsa a cui accedere e le relative informazioni di autenticazione. Specificare il metodo di autenticazione dell'identità gestita.

  2. Eseguire la tabella .create o .alter external per creare la tabella. Usare il stringa di connessione del passaggio precedente come argomento storage Connessione ionString.

Esempio

Il comando seguente crea MyExternalTable che fa riferimento a dati in formato CSV in in mystorageaccount mycontainer in Archiviazione BLOB di Azure. La tabella include due colonne, una per un numero intero x e una per una stringa s. Il stringa di connessione termina con ;managed_identity=system, che indica di usare un'identità gestita assegnata dal sistema per l'autenticazione per accedere all'archivio dati.

.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv 
( 
    h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system' 
)

Nota

Per eseguire l'autenticazione con un'identità gestita assegnata dall'utente, sostituire system con l'ID oggetto identità gestita.