Configura e gestisci l'autenticazione Microsoft Entra con Azure Synapse Analytics

Questo articolo ti mostra come utilizzare Microsoft Entra ID per l'autenticazione con Azure Synapse Analytics.

Nota

Le entità di sicurezza del server di Microsoft Entra sono attualmente in anteprima per Azure Synapse Analytics.

Prerequisites

Per utilizzare l'autenticazione Microsoft Entra con Azure Synapse Analytics, sono necessari i seguenti prerequisiti:

  • Un tenant di Microsoft Entra popolato di utenti e gruppi.
  • Un workspace Azure Synapse esistente o un pool SQL dedicato standalone.

Creare e popolare un tenant Microsoft Entra

Prima di poter configurare l'autenticazione Microsoft Entra per Azure Synapse Analytics, devi creare un tenant Microsoft Entra e popolarlo con utenti e gruppi. Puoi gestire i tenant Microsoft Entra interamente all'interno di Azure oppure usarli per la federazione di Servizi di dominio Active Directory on-premise.

Per ulteriori informazioni consulta:

Impostare l'amministratore di Microsoft Entra

Per utilizzare l'autenticazione Microsoft Entra, la tua risorsa Azure Synapse richiede un amministratore Microsoft Entra.

Puoi anche configurare l'amministratore di Microsoft Entra quando crei la risorsa. Se hai già configurato un amministratore, salta questa sezione.

Area di lavoro di Azure Synapse

Per uno spazio di lavoro Azure Synapse, configura l'amministratore Microsoft Entra sullo spazio di lavoro. Per ulteriori informazioni, vedi Struttura dell’amministratore.

Pool SQL dedicato standalone

Quando imposti l'amministratore Microsoft Entra, abiliti l'autenticazione Microsoft Entra per il server logico che ospita un pool SQL dedicato standalone. Puoi impostare l'amministratore usando il portale Azure, PowerShell, interfaccia della riga di comando di Azure o API REST.

Nel portale di Azure è possibile trovare il nome del server logical

  • Nel campo server name nella pagina Overview del pool SQL dedicato autonomo in Azure Synapse Analytics.

Per impostare l'amministratore Microsoft Entra per il server logico nel portale di Azure, seguire questa procedura:

  1. Nel riquadro del portale Azure Directories + abbonamenti, scegli la directory che contiene la tua risorsa Azure Synapse come directory corrente.

  2. Cerca server SQL e poi seleziona il server logico per il tuo pool SQL dedicato per aprire il pannello del server SQL .

  3. Nel riquadro SQL server per il server logico selezionare Microsoft Entra ID in Settings per aprire il riquadro Microsoft Entra ID.

  4. Nel riquadro Microsoft Entra ID selezionare Set admin per aprire il riquadro Microsoft Entra ID.

  5. Il riquadro Microsoft Entra ID mostra tutti gli utenti, i gruppi e le applicazioni nella directory corrente e consente di eseguire ricerche in base al nome, all'alias o all'ID. Trovare l'identità desiderata per l'amministratore Microsoft Entra e selezionarla, quindi selezionare Selezionare per chiudere il riquadro.

  6. Nella parte superiore della pagina Microsoft Entra ID per il server logico selezionare Salva.

    L'ID Object viene visualizzato accanto al nome dell'amministratore per Microsoft Entra utenti e gruppi. Per le applicazioni (entità servizio), viene visualizzato l'ID applicazione.

Il processo di modifica dell'amministratore può richiedere alcuni minuti. Il nuovo amministratore viene quindi visualizzato nel campo Microsoft Entra admin.

Per rimuovere l'amministratore, nella parte superiore della pagina Microsoft Entra ID selezionare Amministratore , quindi selezionare Salva. La rimozione dell'amministratore Microsoft Entra disabilita l'autenticazione Microsoft Entra per il server logico.

Nota

L'amministratore Microsoft Entra viene archiviato nel database master del server come utente (entità di database). Poiché i nomi principali del database devono essere univoci, il nome visualizzato dell'amministratore non può essere uguale al nome di qualsiasi utente nel database del server master. Se un utente con questo nome esiste già, la configurazione dell'amministratore di Microsoft Entra fallisce ed esegue il rollback, indicando che il nome è già in uso.

Assegnare autorizzazioni Microsoft Graph

Per alcune operazioni, Azure Synapse Analytics richiede permessi per interrogare Microsoft Graph, come spiegato nei permessi di Microsoft Graph. Azure Synapse Analytics supporta autorizzazioni API di Microsoft Graph granulari come User.Read.All, GroupMember.Read.All e Application.Read.All sull'identità della risorsa. Questo approccio segue il principio dei privilegi minimi ed è consigliato. Puoi anche utilizzare il ruolo dei Lettori della Directory come alternativa più ampia. Per maggiori informazioni, vedi Managed identities in Microsoft Entra for Azure Synapse Analytics.

Ruolo Lettori della Directory

Per una procedura guidata, vedi Assegna il ruolo dei Lettori di Directory a un gruppo Microsoft Entra.

Il seguente script PowerShell aggiunge un'identità di risorsa Azure Synapse al ruolo di Directory Readers.

# This script grants "Directory Readers" permission to an Azure Synapse service principal.
# It can be executed only by a user who is a member of the **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$instanceName = "<InstanceName>"        # Enter the name of your managed instance or server
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"

# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your logical server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$instanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($instanceName)' found, make sure that instanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($instanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($instanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($instanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($instanceName)' is already member of 'Directory Readers' role."
}

L'amministratore di Microsoft Entra ora può creare le entità di sicurezza del server Microsoft Entra (login) e le entità di sicurezza del database (utenti).

Creare entità di Microsoft Entra in SQL

Per connettersi a un database in Azure Synapse Analytics con l'autenticazione Microsoft Entra, devi configurare un'entità di sicurezza nel database per quell'identità con almeno l'autorizzazione CONNECT.

Autorizzazioni per utenti di database

Quando crei un utente del database, riceve di default il CONNECT permesso per il database. Un utente del database eredita le autorizzazioni anche in altre due circostanze:

  • L'utente è membro di un gruppo Microsoft Entra a cui sono stati assegnati permessi sul server.
  • Si crea l'utente da un login e l'utente eredita i permessi assegnati dal server per il login che si applicano al database.

La gestione delle autorizzazioni per server e entità di database funziona allo stesso modo indipendentemente dal tipo di entità (Microsoft Entra ID, autenticazione SQL e così via). Concedere permessi ai ruoli del database invece di concedere direttamente permessi agli utenti. Poi aggiungi gli utenti ai ruoli con i permessi appropriati. Questo approccio semplifica la gestione dei permessi a lungo termine e riduce la probabilità che un'identità mantenga l'accesso quando non è più appropriato.

Per ulteriori informazioni consulta:

Utenti di database con restrizioni

Un utente del database contenuto è un tipo di utente SQL che non è connesso a un login nel database master. Per creare un utente del database contenuto di Microsoft Entra, collegati al database con un'identità Microsoft Entra che abbia almeno l'autorizzazione ALTER ANY USER. Il seguente esempio T-SQL crea un'entità di sicurezza del database denominata Microsoft_Entra_principal_name da Microsoft Entra ID.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Per creare un utente di database contenuto per un gruppo di Microsoft Entra, immettere il nome visualizzato del gruppo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Per creare un utente di database indipendente per un'identità gestita o un'entità servizio, immettere il nome visualizzato dell'identità:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Per creare un utente del database specifico per un utente Microsoft Entra, immettere il nome principale utente dell'identità:

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;

Utenti autenticati tramite accesso

Nota

Microsoft Entra server principals (login) sono attualmente in anteprima per Azure Synapse Analytics.

Principali del server Microsoft Entra (o account di accesso) sono supportati, il che significa che gli utenti del database contenuti non sono necessari. Le entità di database (utenti) possono essere create in base a un'entità server, il che significa che gli utenti di Microsoft Entra possono ereditare le autorizzazioni assegnate a livello di server per un account di accesso.

CREATE USER [appName] FROM LOGIN [appName];

Per la sintassi sulla creazione dei principali del server Microsoft Entra (logins), vedere CREATE LOGIN.

Utenti esterni

Non è possibile creare direttamente un utente di database per un'identità gestita in un tenant di Microsoft Entra diverso da quello associato alla sottoscrizione Azure. Tuttavia, puoi importare utenti da altre directory nella directory associata come utenti esterni. Puoi poi usarli per creare utenti indipendenti del database che possono accedere al database. Gli utenti esterni possono anche ottenere l'accesso tramite l'appartenenza a gruppi di Microsoft Entra.

Examples: Per creare un utente di database contenuto che rappresenti un utente di dominio federato o gestito di Microsoft Entra:

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
  • Un account utente di dominio federato che importi in un dominio gestito come utente esterno deve utilizzare l'identità del dominio gestito.

Considerazioni sul nome

Non puoi usare caratteri speciali come i due punti : o la e commerciale & nei nomi utente nelle istruzioni T-SQL CREATE LOGIN e CREATE USER.

Microsoft Entra ID e Azure Synapse Analytics differiscono nel design della gestione degli utenti in un aspetto chiave: Microsoft Entra ID consente nomi visualizzati duplicati all'interno di un tenant, mentre Azure Synapse Analytics richiede nomi entità server unici in un pool SQL dedicato e nomi entità di database unici in un database.

Autorizzazioni per Microsoft Graph

Il CREATE USER ... FROM EXTERNAL PROVIDER comando richiede che Azure Synapse Analytics acceda a Microsoft Entra ID (il provider esterno) per conto dell'utente connesso. A volte, Microsoft Entra ID restituisce un'eccezione.

  • È possibile che venga visualizzato l'errore SQL 33134, che contiene il messaggio di errore specifico del Microsoft Entra ID. L'errore indica in genere che l'accesso è stato negato, che l'utente deve registrarsi con il metodo di autenticazione a più fattori per accedere alla risorsa o che l'accesso tra le applicazioni proprietarie deve essere gestito tramite pre-autorizzazione. Nei primi due casi, il problema è in genere causato dai criteri di accesso condizionale impostati nel tenant Microsoft Entra dell'utente: impediscono all'utente di accedere al provider esterno. L'aggiornamento delle politiche di Accesso Condizionale per consentire l'accesso all'applicazione 00000003-0000-0000-c000-000000000000 (l'ID dell'applicazione della Microsoft API Graph) dovrebbe risolvere il problema. Se l'errore indica che l'accesso tra le applicazioni di prim'ordine deve essere gestito tramite pre-autorizzazione, il problema è dovuto al fatto che l'utente ha eseguito l'accesso come principale del servizio. Il comando dovrebbe avere esito positivo se eseguito da un utente.
  • Se viene visualizzato un timeout di connessione Scaduto, potrebbe essere necessario impostare il parametro TransparentNetworkIPResolution del stringa di connessione su false. Per altre informazioni, vedere Problema di timeout della connessione con .NET Framework 4.6.1 - TransparentNetworkIPResolution.

Per ulteriori informazioni sulla creazione di utenti contenuti di database basati su identità Microsoft Entra, vedere CREATE USER.

Configurare l'autenticazione a più fattori

Per migliorare la sicurezza, si consideri la configurazione dell'autenticazione multifattore (MFA), che invita l'utente a utilizzare un secondo metodo per autenticarsi nel database, come una telefonata o un'app autenticatrice.

Per utilizzare l'autenticazione multifattore con Azure Synapse Analytics, abilita prima l'autenticazione multifattoriale, poi usa una policy di Accesso Condizionale per far rispettare la MFA.

Connettersi con Microsoft Entra

Dopo aver configurato l'autenticazione Microsoft Entra, puoi usarla per connetterti ad Azure Synapse Analytics con SQL Server Management Studio o SQL Server Data Tools, e configurare le applicazioni client per connettersi usando le identità Microsoft Entra.

Risolvere i problemi di autenticazione Microsoft Entra

Per indicazioni, vedi Risoluzione problemi relativi all'autenticazione Microsoft Entra.