Condividi tramite


Configurare e gestire l'autenticazione a Microsoft Entra con Azure SQL

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Questo articolo illustra come creare e popolare un tenant di Microsoft Entra e usare Microsoft Entra ID (precedentemente Azure Active Directory) con database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics. Per una panoramica, vedere Autenticazione di Microsoft Entra.

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Metodi di autenticazione Microsoft Entra.

Microsoft Entra ID supporta i metodi di autenticazione di seguenti:

  • Identità solo cloud di Microsoft Entra
  • Identità ibride Microsoft Entra che supportano:
    • Autenticazione cloud con due opzioni abbinate all'accesso Single Sign-On (SSO) facile
      • Autenticazione Microsoft Entra con hash della password
      • Autenticazione pass-through di Microsoft Entra
    • Autenticazione federata

Per altre informazioni sui metodi di autenticazione di Microsoft Entra e su quale scegliere, vedere Scegliere il metodo di autenticazione corretto per la soluzione di identità ibrida di Microsoft Entra.

Per altre informazioni sulle identità ibride di Microsoft Entra, la configurazione e la sincronizzazione, vedere:

Creare e popolare un tenant di Microsoft Entra

Creare un tenant Microsoft Entra e popolarlo con utenti e gruppi. I tenant di Microsoft Entra possono essere gestiti interamente all'interno di Azure o usati per la federazione di un servizio di dominio di Active Directory locale.

Per altre informazioni, vedi:

Associare o aggiungere una sottoscrizione di Azure a Microsoft Entra ID

  1. Associare la sottoscrizione di Azure a Microsoft Entra ID impostando la directory come directory attendibile per la sottoscrizione di Azure che ospita il database. Per informazioni dettagliate, vedere Associare o aggiungere una sottoscrizione di Azure al tenant Microsoft Entra.

  2. Usare il controllo per cambiare directory nel portale di Azure per passare alla sottoscrizione associata al dominio.

    Importante

    Tutte le sottoscrizioni di Azure hanno una relazione di trust con un'istanza di Microsoft Entra. Considera attendibile quella directory per l'autenticazione di utenti, servizi e dispositivi. Più sottoscrizioni possono considerare attendibile la stessa directory, ma una sottoscrizione considera attendibile una sola directory. Questa relazione di trust tra la sottoscrizione e la directory è diversa da quella tra una sottoscrizione e tutte le altre risorse in Azure, ad esempio siti Web, database e così via, le quali sono da considerarsi più come risorse figlio di una sottoscrizione. Se la sottoscrizione scade, non sarà più possibile accedere a tutte queste altre risorse associate alla sottoscrizione anche se la directory rimane in Azure, quindi sarà possibile associarvi un'altra sottoscrizione e continuare a gestire gli utenti della directory. Per altre informazioni sulle risorse, vedere Informazioni sull'accesso alle risorse di Azure. Per altre informazioni su questa relazione di trust, vedere Come associare o aggiungere una sottoscrizione di Azure a Microsoft Entra ID.

Amministrazione Microsoft Entra con un server in database SQL

Ogni server logico in Azure (che ospita Database SQL o Azure Synapse) inizia con un singolo account amministratore del server, che corrisponde all'amministratore dell'intero server. Creare un secondo account amministratore come account Microsoft Entra. Questa entità di sicurezza viene creata come utente di database indipendente nel database master del server. Gli account amministratore sono membri del ruolo db_owner in ogni database utente e accedono a ogni database utente come utente dbo. Per altre informazioni sugli account amministratore, vedere Gestione di database e account di accesso.

L'amministratore Microsoft Entra deve essere configurato per i server primari e secondari quando si usa Microsoft Entra ID con la replica geografica. Se un server non dispone di un amministratore di Microsoft Entra, gli account di accesso e gli utenti di Microsoft Entra ricevono un Cannot connect a un errore del server.

Nota

Gli utenti che non dispongono di un account Microsoft Entra, incluso l'account amministratore del server, non possono creare utenti basati su Microsoft Entra, perché non hanno l'autorizzazione per convalidare con Microsoft Entra ID gli utenti di database proposti.

Effettuare il provisioning dell'amministratore Microsoft Entra (Istanza gestita di SQL)

Importante

Seguire questi passaggi solo se si effettua il provisioning di Istanza gestita di SQL di Azure. Questa operazione può essere eseguita solo da un amministratore globale o da un amministratore ruolo con privilegi in Microsoft Entra ID.

È possibile assegnare al gruppo il ruolo amministratori che leggono la directory in Microsoft Entra ID. I proprietari del gruppo possono quindi aggiungere l'identità dell'istanza gestita come membro di questo gruppo, che consente di effettuare il provisioning di un amministratore di Microsoft Entra per Istanza gestita di SQL. Per altre informazioni su questa funzionalità, vedere Ruolo amministratori che leggono la directory in Microsoft Entra per Azure SQL.

Per poter completare task quali l'autenticazione degli utenti tramite l'appartenenza al gruppo di sicurezza o la creazione di nuovi utenti, Istanza gestita di SQL deve disporre di autorizzazioni per la lettura di Microsoft Entra ID. Per il funzionamento di questa operazione, è necessario concedere all'Istanza gestita di SQL l'autorizzazione di lettura per Microsoft Entra ID. Questa operazione può essere eseguita tramite il portale di Azure o PowerShell.

Azure portal

Per concedere all'Istanza gestita di SQL autorizzazioni di lettura per Microsoft Entra ID usando il portale di Azure, accedere come amministratore globale e seguire questa procedura:

  1. Nell'angolo superiore destro del portale di Azure selezionare l'account e quindi scegliere Cambia directory per verificare quale directory sia la Directory corrente. Se necessario, cambiare directory.

    Screenshot del portale di Azure che mostra dove cambiare la directory.

  2. Scegliere la directory Microsoft Entra corretta come Directory corrente.

    Questo passaggio collega la sottoscrizione associata a Microsoft Entra ID e Istanza gestita di SQL, assicurandosi che il tenant di Microsoft Entra e Istanza gestita di SQL usino la stessa sottoscrizione.

  3. È ora possibile scegliere l'amministratore di Microsoft Entra per Istanza gestita di SQL. Per fare ciò, passare alla risorsa dell'istanza gestita nel portale di Azure e selezionare Amministratore di Microsoft Entra in Impostazioni.

    Screenshot del portale di Azure che mostra la pagina di amministrazione di Microsoft Entra aperta per l'istanza gestita di SQL selezionata.

  4. Selezionare il banner nella parte superiore della pagina di amministrazione di Microsoft Entra e concedere l'autorizzazione all'utente corrente.

    Screenshot della finestra di dialogo per la concessione delle autorizzazioni a un'istanza gestita di SQL per l'accesso a Microsoft Entra ID con il pulsante Concedi autorizzazioni selezionato.

  5. Al completamento dell'operazione, nell'angolo in alto a destra verrà visualizzata la notifica seguente:

    Screenshot di una notifica che conferma che le autorizzazioni di lettura di Microsoft Entra ID sono state aggiornate correttamente per l'istanza gestita.

  6. Nella pagina Amministratore di Microsoft Entra, selezionare Imposta amministratore dalla barra di spostamento per aprire il riquadro Microsoft Entra ID.

    Screenshot che mostra il comando Imposta amministratore evidenziato nella pagina di amministrazione di Microsoft Entra per l'istanza gestita di SQL selezionata.

  7. Nel riquadro Microsoft Entra ID cercare un utente, selezionare la casella accanto all'utente o al gruppo come amministratore, quindi premere Seleziona per chiudere il riquadro e tornare alla pagina Amministratore di Microsoft Entra per l'istanza gestita.

    Il riquadro Microsoft Entra ID mostra tutti i membri e i gruppi all'interno della directory corrente. Gli utenti e i gruppi in grigio non possono essere selezionati perché non sono supportati come amministratori di Microsoft Entra. Vedere l'elenco degli amministratori supportati in Funzionalità e limitazioni di Microsoft Entra. Il Controllo degli accessi in base al ruolo di Azure si applica solo al portale di Azure e non viene propagato a Database SQL, Istanza gestita di SQL e Azure Synapse.

  8. Nella barra di spostamento della pagina Amministratore di Microsoft Entra per l'istanza gestita, selezionare Salva per confermare l'amministratore di Microsoft Entra.

    Screenshot della pagina di amministrazione di Microsoft Entra con il pulsante Salva nella riga superiore accanto ai pulsanti Imposta amministratore e Rimuovi amministratore.

    Il processo di modifica dell'amministratore può richiedere alcuni minuti. Al termine del processo, nella casella Amministratore di Microsoft Entra verrà visualizzato il nome del nuovo amministratore.

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

Dopo il provisioning di un amministratore di Microsoft Entra per Istanza gestita di SQL, è possibile iniziare a creare entità server (account di accesso) di Microsoft Entra con la sintassi CREATE LOGIN. Per altre informazioni, vedere Panoramica di Istanza gestita di SQL.

Suggerimento

Per rimuovere un amministratore in un secondo momento, nella parte superiore della pagina Amministratore di Microsoft Entra selezionare Rimuovi amministratore e quindi Salva.

PowerShell

Per usare PowerShell per concedere a Istanza gestita di SQL autorizzazioni di lettura per Microsoft Entra ID, eseguire questo script:

# This script grants "Directory Readers" permission to a service principal representing the SQL Managed Instance.
# It can be executed only by a user who is a member of the **Global Administrator** or **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$managedInstanceName = "<ManagedInstanceName>" # Enter the name of your managed instance
$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 SQL Managed Instance
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$managedInstanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($managedInstanceName)' found, make sure that managedInstanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($managedInstanceName)'"
    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 '$($managedInstanceName)' 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 "'$($managedInstanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($managedInstanceName)' is already member of 'Directory Readers' role."
}

PowerShell per Istanza gestita di SQL

Per eseguire i cmdlet di PowerShell, è necessario che Azure PowerShell sia installato e in esecuzione. Per informazioni dettagliate, vedere Panoramica di Azure PowerShell.

Importante

Il modulo Azure Resource Manager (RM) di PowerShell è ancora supportato da Istanza gestita di SQL di Azure, ma tutte le attività di sviluppo future sono incentrate sul modulo Az.Sql. Il modulo AzureRM riceverà correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del nuovo modulo Az di Azure PowerShell.

Per eseguire il provisioning di un amministratore di Microsoft Entra, eseguire i comandi di Azure PowerShell seguenti:

  • Connect-AzAccount
  • Select-AzSubscription

I cmdlet usati per effettuare il provisioning e gestire l'amministratore di Microsoft Entra per Istanza gestita di SQL sono elencati nella tabella seguente:

Nome del cmdlet Descrizione
Set-AzSqlInstanceActiveDirectoryAdministrator Effettua il provisioning di un amministratore di Microsoft Entra per Istanza gestita di SQL nella sottoscrizione corrente. (Deve far parte della sottoscrizione corrente)
Remove-AzSqlInstanceActiveDirectoryAdministrator Rimuove un amministratore di Microsoft Entra per Istanza gestita di SQL nella sottoscrizione corrente.
Get-AzSqlInstanceActiveDirectoryAdministrator Restituisce informazioni su un amministratore di Microsoft Entra per Istanza gestita di SQL nella sottoscrizione corrente.

Il comando seguente ottiene informazioni su un amministratore di Microsoft Entra per un'Istanza gestita di SQL denominata ManagedInstance01 associata a un gruppo di risorse denominato ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

Il comando seguente effettua il provisioning di un gruppo di amministratori di Microsoft Entra denominato DBA per l'Istanza gestita di SQL denominata ManagedInstance01. Questo server è associato con il gruppo di risorse ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

Il comando seguente rimuove l'amministratore di Microsoft Entra per l'Istanza gestita di SQL denominata ManagedInstanceName01 associata al gruppo di risorse ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Effettuare il provisioning dell'amministratore Microsoft Entra (database SQL)

Importante

Seguire questi passaggi solo se si effettua il provisioning di un server per database SQL o Azure Synapse.

Le due procedure seguenti illustrano come eseguire il provisioning di un amministratore di Microsoft Entra per il server nel portale di Azure e usando PowerShell.

Azure portal

  1. Nell'angolo superiore destro del portale di Azure, selezionare l'account e quindi scegliere Cambia directory per aprire la pagina Directory e sottoscrizioni. Scegliere la directory Microsoft Entra, che contiene il database SQL di Azure o Azure Synapse Analytics come Directory corrente.

  2. Cercare SQL Server e selezionare il server logico per il database SQL di Azure.

    Cercare e selezionare Server SQL.

    Nota

    In questa pagina, prima di selezionare SQL Server è possibile selezionare la stella accanto al nome per aggiungere ai preferiti la categoria e aggiungere SQL Server al menu di spostamento sinistro.

    Prendere in considerazione anche la visita alla dashboard di Azure SQL.

  3. Nella pagina SQL Server, selezionare Microsoft Entra ID.

  4. Nella pagina Microsoft Entra ID, selezionare Imposta amministratore per aprire il riquadro Microsoft Entra ID

    Screenshot che mostra l'opzione per impostare l'amministratore di Microsoft Entra per i server SQL.

  5. Nel riquadro Microsoft Entra ID cercare un utente e quindi selezionare l'utente o il gruppo come amministratore. Usare Seleziona per confermare la scelta e chiudere il riquadro per tornare alla pagina Microsoft Entra ID del server logico. (Il riquadro Microsoft Entra ID mostra tutti i membri e i gruppi della directory corrente. Gli utenti o i gruppi in grigio non possono essere selezionati perché non sono supportati come amministratori di Microsoft Entra. Vedere l'elenco degli amministratori supportati nella sezione Funzionalità e limitazioni di Microsoft Entra di Usare l'autenticazione di Microsoft Entra con database SQL o Azure Synapse.) Il Controllo degli accessi in base al ruolo di Azure si applica solo al portale e non viene propagato al server.

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

    Screenshot che mostra l'opzione per salvare un amministratore di Microsoft Entra.

    L'ID oggetto viene visualizzato accanto al nome amministratore per utenti e gruppi di Microsoft Entra. 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 Amministratore di Microsoft Entra.

Nota

Quando si configura l'amministratore di Microsoft Entra il nuovo nome dell'amministratore (utente o gruppo) non può essere già presente nel database virtuale master come un utente dell'autenticazione del server. Se presente, la configurazione dell'amministratore di Microsoft Entra non riesce e verrà eseguito il rollback, a indicare che tale (nome di) amministratore esiste già. Poiché un utente di autenticazione del server non fa parte di Microsoft Entra ID, qualsiasi sforzo per connettersi al server tramite l'autenticazione di Microsoft Entra ha esito negativo.

Per rimuovere l'amministratore in un secondo momento, nella parte superiore della pagina Microsoft Entra ID, selezionare Rimuovi amministratore e quindi Salva. In questo modo viene disabilitata l'autenticazione Microsoft Entra per il server logico.

PowerShell per Database SQL e Azure Synapse

Per eseguire i cmdlet di PowerShell, è necessario che Azure PowerShell sia installato e in esecuzione. Per informazioni dettagliate, vedere Panoramica di Azure PowerShell. Per eseguire il provisioning di un amministratore di Microsoft Entra, eseguire i comandi di Azure PowerShell seguenti:

  • Connect-AzAccount
  • Select-AzSubscription

Cmdlet usati per effettuare il provisioning e gestire l'amministratore Microsoft Entra per database SQL e Azure Synapse:

Nome del cmdlet Descrizione
Set-AzSqlServerActiveDirectoryAdministrator Effettua il provisioning di un amministratore Microsoft Entra per il server che ospita database SQL o Azure Synapse. (Deve far parte della sottoscrizione corrente)
Remove-AzSqlServerActiveDirectoryAdministrator Rimuove un amministratore Microsoft Entra per il server che ospita database SQL o Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Restituisce informazioni su un amministratore Microsoft Entra attualmente configurato per il server che ospita database SQL o Azure Synapse.

Per visualizzare altre informazioni su ognuno di questi comandi, usare il comando get-help di PowerShell. Ad esempio, get-help Set-AzSqlServerActiveDirectoryAdministrator.

Lo script seguente effettua il provisioning di un gruppo di amministratori di Microsoft Entra denominato DBA_Group (ID oggetto 40b79501-b343-44ed-9ce7-da4c8cc7353f) per il server demo_server in un gruppo di risorse denominato Group-23:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

Il parametro di input DisplayName accetta il nome visualizzato di Microsoft Entra ID o lo User Principal Name. Ad esempio, DisplayName="John Smith" e DisplayName="johns@contoso.com". Per i gruppi di Microsoft Entra è supportato solo il nome visualizzato di Microsoft Entra ID.

Nota

Il comando di Azure PowerShell Set-AzSqlServerActiveDirectoryAdministrator non impedisce di eseguire il provisioning degli amministratori di Microsoft Entra per gli utenti non supportati. È possibile eseguire il provisioning di un utente non supportato il quale non può tuttavia connettersi a un database.

L'esempio seguente usa il valore ObjectIDopzionale:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Nota

Il valore ObjectID è obbligatorio quando DisplayName non è univoco. Per recuperare i valori ObjectID e DisplayName, è possibile visualizzare le proprietà di un utente o di un gruppo nella sezione Microsoft Entra ID del portale di Azure.

L'esempio seguente restituisce informazioni sull'amministratore di Microsoft Entra corrente per il server:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

Nell'esempio seguente viene rimosso un amministratore Microsoft Entra:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Nota

È anche possibile effettuare il provisioning di un amministratore di Microsoft Entra usando le API REST. Per altre informazioni, vedere Service Management REST API Reference and Operations for Azure SQL Database (Informazioni di riferimento e operative sull'API REST di gestione dei servizi per le operazioni del database SQL di Azure)

Configurare i computer client

Nota

System.Data.SqlClient usa Active Directory Authentication Library (ADAL) di Azure, che è deprecata. Se si usa lo spazio dei nomi System.Data.SqlClient per l'autenticazione di Microsoft Entra, eseguire la migrazione delle applicazioni a Microsoft.Data.SqlClient e Microsoft Authentication Library (MSAL). Per altre informazioni, vedere Usare l’autenticazione di Microsoft Entra con SqlClient.

Se è necessario continuare a usare ADAL.DLL nelle applicazioni, è possibile usare i collegamenti in questa sezione per installare il driver ODBC o OLE DB più recente, che contiene la libreria ADAL.DLL più recente.

È necessario installare il software seguente in tutti i computer client da cui le applicazioni o gli utenti si connettono al database SQL o ad Azure Synapse con le identità di Microsoft Entra:

È possibile soddisfare questi requisiti tramite:

  • L'installazione dell'ultima versione di SQL Server Management Studio o SQL Server Data Tools soddisfa i requisiti di .NET Framework 4.6.
    • SSMS installa la versione x86 di ADAL.DLL.
    • SSDT installa la versione amd64 di ADAL.DLL.
    • L'ultima versione di Visual Studio disponibile nella pagina Download di Visual Studio soddisfa i requisiti di .NET Framework 4.6, ma non installa la versione amd64 di ADAL.DLL richiesta.

Creare utenti indipendenti mappati alle identità di Microsoft Entra

Questa sezione esamina i requisiti e le considerazioni importanti sull'uso dell'autenticazione di Microsoft Entra con database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse.

  • L'autenticazione di Microsoft Entra con database SQL e Azure Synapse richiede l'uso di utenti di database indipendente basati su un'identità di Microsoft Entra. Un utente del database indipendente non dispone di un account di accesso nel database master ed esegue il mapping a un'identità in Microsoft Entra ID associata al database. L'identità di Microsoft Entra può essere un singolo account utente, un gruppo o un'applicazione. Per altre informazioni sugli utenti di database indipendente, vedere Utenti di database indipendente: rendere portabile un database. Per altre informazioni sulla creazione di utenti di database indipendente basati su identità di Microsoft Entra, vedere CREATE USER (Transact-SQL).

  • Poiché Istanza gestita di SQL supporta le entità server (account di accesso) di Microsoft Entra, non è necessario usare gli utenti del database indipendente. In questo modo è possibile creare account di accesso da utenti, gruppi o applicazioni Microsoft Entra. Ciò significa che è possibile eseguire l'autenticazione con Istanza gestita di SQL usando l'account di accesso del server Microsoft Entra anziché un utente del database indipendente. Per altre informazioni, vedere Panoramica di Istanza gestita di SQL. Per la sintassi per la creazione di entità server (account di accesso) di Microsoft Entra, vedere CREATE LOGIN.

  • Gli utenti del database, ad eccezione degli amministratori, non possono creare un database tramite il portale di Azure. I ruoli Microsoft Entra non vengono propagati al database in database SQL, Istanza gestita di SQL o Azure Synapse. I ruoli Microsoft Entra gestiscono le risorse di Azure e non si applicano alle autorizzazioni del database. Ad esempio, il ruolo Collaboratore SQL Server non consente l'accesso per connettersi al database in database SQL, Istanza gestita di SQL o Azure Synapse. L'autorizzazione di accesso deve essere concessa direttamente nel database tramite istruzioni Transact-SQL.

  • Non è possibile creare direttamente un utente del database per un'identità gestita in un tenant di Microsoft Entra diverso da quello associato alla sottoscrizione di Azure. Tuttavia, gli utenti nelle altre directory possono essere importati nella directory associata come utenti esterni. Possono quindi essere usati per creare utenti di database indipendente che possano accedere al database SQL. Gli utenti esterni possono anche ottenere l'accesso tramite l'appartenenza ai gruppi Microsoft Entra che contengono utenti di database.

  • I caratteri speciali, come i due punti : o la e commerciale &, quando inclusi come nomi utente nelle istruzioni T-SQL CREATE LOGIN e CREATE USER, non sono supportati.

Importante

Gli utenti e le entità servizio di Microsoft Entra (applicazioni di Microsoft Entra) che fanno parte di più di 2048 gruppi di sicurezza di Microsoft Entra non sono supportati per l'accesso al database in database SQL, Istanza gestita di SQL o Azure Synapse.

Per creare un utente di database indipendente basato su Microsoft Entra ID, diverso dall'amministratore del server proprietario del database, connettersi al database con un'identità di Microsoft Entra come utente con almeno l'autorizzazione ALTER ANY USER. Nell'esempio T-SQL seguente, Microsoft_Entra_principal_name può essere lo User Principal Name di un utente di Microsoft Entra o il nome visualizzato per un gruppo Microsoft Entra.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Esempi: per creare un utente di database indipendente che rappresenta un utente di dominio gestito o federato di Microsoft Entra:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Per creare un utente di database indipendente che rappresenta un gruppo di Microsoft Entra, specificare il nome visualizzato del gruppo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Per creare un utente di database indipendente che rappresenta un'applicazione che si connette usando un token di Microsoft Entra:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Il comando CREATE USER ... FROM EXTERNAL PROVIDER richiede l'accesso SQL a Microsoft Entra ID (il "provider esterno") per conto dell'utente connesso. In alcuni casi, si verificano circostanze che fanno sì che Microsoft Entra ID restituisca un'eccezione a SQL.

  • È possibile che venga visualizzato l'errore SQL 33134, che contiene il messaggio di errore specifico di 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 dei criteri di accesso condizionale per consentire l'accesso all'applicazione "00000003-0000-0000-c000-000000000000" (ID applicazione dell'API Microsoft Graph) dovrebbe risolvere il problema. Se l'errore indica che l'accesso tra le applicazioni proprietarie deve essere gestito tramite pre-autorizzazione, il problema è dovuto al fatto che l'utente ha eseguito l'accesso come entità servizio. Il comando dovrebbe avere esito positivo se eseguito da un utente.
  • Se si riceve un messaggio di timeout della connessione scaduto, potrebbe essere necessario impostare il parametro TransparentNetworkIPResolution della stringa di connessione su false. Per altre informazioni, vedere Connection timeout issue with .NET Framework 4.6.1 - TransparentNetworkIPResolution (Problema di timeout della connessione con .NET Framework 4.6.1 - TransparentNetworkIPResolution).

Importante

La rimozione dell'amministratore Microsoft Entra per il server impedisce a qualsiasi utente di autenticazione di Microsoft Entra di connettersi al server. Se necessario, un amministratore di database SQL può rimuovere manualmente gli utenti di Microsoft Entra inutilizzabili.

Quando si crea un database utente, questo riceve l'autorizzazione CONNECT e può connettersi al database come membro del ruolo PUBLIC. Inizialmente, le uniche autorizzazioni disponibili per l'utente vengono concesse al ruolo PUBLIC e a tutti i gruppi di Microsoft Entra di cui l'utente è membro. La concessione di autorizzazioni agli utenti di database indipendente basati su Microsoft Entra funziona allo stesso modo della concessione di autorizzazioni a qualsiasi altro tipo di utente. È consigliabile concedere autorizzazioni ai ruoli del database e aggiungere utenti a tali ruoli anziché concedere direttamente autorizzazioni ai singoli utenti. Per altre informazioni, vedere l'articolo relativo alle nozioni di base delle autorizzazioni per il motore di database. Per altre informazioni sui ruoli speciali del database SQL, vedere Gestione di database e account di accesso nel database SQL di Azure. Un account utente di dominio federato importato in un dominio gestito come utente esterno deve usare l'identità del dominio gestito.

Gli utenti di Microsoft Entra sono contrassegnati nei metadati del database con il tipo E (EXTERNAL_USER). I gruppi sono contrassegnati con il tipo X (EXTERNAL_GROUPS). Per altre informazioni, vedere sys.database_principals.

Connettersi al database usando SSMS o SSDT

Per verificare che l'amministratore di Microsoft Entra sia configurato correttamente, connettersi al database master usando l'account amministratore di Microsoft Entra. Per creare un utente di database indipendente basato su Microsoft Entra, connettersi al database con un'identità di Microsoft Entra con accesso al database e almeno l'autorizzazione ALTER ANY USER.

Usare un'identità di Microsoft Entra per connettersi usando SSMS o SSDT

Le procedure seguenti mostrano come connettersi a un database SQL con un'identità di Microsoft Entra usando SQL Server Management Studio (SSMS) o SQL Server Database Tools (SSDT).

Microsoft Entra ID - Integrato

Usare questo metodo se si è connessi a Windows con le credenziali Microsoft Entra da un dominio federato o un dominio gestito configurato per l'accesso Single Sign-On facile per l'autenticazione pass-through e con hash della password. Per altre informazioni, vedere Single Sign-On facile di Microsoft Entra.

  1. Avviare SSMS o SSDT e nella finestra di dialogo Connetti al server (o Connetti al motore di database), nella casella Autenticazione, selezionare Azure Active Directory - Integrata. Non è necessario immettere una password perché vengono presentate le credenziali esistenti per la connessione.

    Screenshot di SSMS che mostra l'autenticazione integrata di Microsoft Entra.

  2. Scegliere il pulsante Opzioni, quindi nella pagina Proprietà connessione digitare il nome del database utente a cui si desidera connettersi nella casella Connect to database (Connetti al database).

    Screenshot del menu Opzioni di SSMS.

Microsoft Entra ID - Password

Utilizzare questo metodo per la connessione con un nome di entità di sicurezza Microsoft Entra usando il dominio gestito di Microsoft Entra. Si può anche usarlo per account federati senza accesso al dominio, ad esempio quando si lavora in modalità remota.

Usare questo metodo per eseguire l'autenticazione al database in database SQL o in Istanza gestita di SQL con gli utenti di identità solo cloud di Microsoft Entra o quelli che usano le identità ibride di Microsoft Entra. Questo metodo supporta gli utenti che vogliono usare le credenziali Windows, ma il computer locale non è aggiunto al dominio, ad esempio usando l'accesso remoto. In questo caso, un utente di Windows può indicare l'account di dominio e la password e può eseguire l'autenticazione nel database in database SQL, in Istanza gestita di SQL o in Azure Synapse.

  1. Avviare SSMS o SSDT e nella finestra di dialogo Connetti al server (o Connetti al motore di database), nella casella Autenticazione, selezionare Azure Active Directory - Password.

  2. Nella casella Nome utente, digitare il nome utente di Microsoft Entra nel formato username\@domain.com. I nomi utente devono essere un account di Microsoft Entra ID o un account da un dominio gestito o federato con Microsoft Entra ID.

  3. Nella casella Password, digitare la password utente dell'account Microsoft Entra o dell'account di dominio gestito/federato.

    Screenshot di SSMS con l'autenticazione della password di Microsoft Entra.

  4. Scegliere il pulsante Opzioni, quindi nella pagina Proprietà connessione digitare il nome del database utente a cui si desidera connettersi nella casella Connect to database (Connetti al database). Vedere il grafico nell'opzione precedente.

Microsoft Entra ID - Universale con MFA

Usare questo metodo per l'autenticazione interattiva con autenticazione a più fattori (MFA), con la password richiesta in modo interattivo. Questo metodo può essere usato per eseguire l'autenticazione al database in database SQL, Istanza gestita di SQL e Azure Synapse per gli utenti di identità solo cloud di Microsoft Entra o quelli che usano le identità ibride di Microsoft Entra.

Per altre informazioni, vedere Usare l'autenticazione a più fattori di Microsoft Entra con database SQL e Azure Synapse (Supporto di SSMS per MFA).

Microsoft Entra ID - Entità servizio

Utilizzare questo metodo per eseguire l'autenticazione al database in database SQL o Istanza gestita di SQL con le entità servizio di Microsoft Entra (applicazioni di Microsoft Entra). Per altre informazioni, vedere Entità servizio di Microsoft Entra con Azure SQL.

Microsoft Entra ID - Identità gestita

Utilizzare questo metodo per eseguire l'autenticazione al database in database SQL o Istanza gestita di SQL con le identità gestite di Microsoft Entra. Per altre informazioni, vedere Identità gestite in Microsoft Entra per Azure SQL.

Microsoft Entra ID - Impostazione predefinita

L'opzione di autenticazione predefinita con Microsoft Entra ID abilita l'autenticazione eseguita tramite meccanismi senza password e non interattivi, incluse le identità gestite.

Usare l'identità di Microsoft Entra per connettersi usando l'Editor di query del portale di Azure per database SQL di Azure

Per altre informazioni sull'Editor di query del portale di Azure per database SQL di Azure, vedere Guida introduttiva: usare l'editor di query del portale di Azure per eseguire query sul database SQL di Azure.

  1. Nel portale di Azure raggiungere il database SQL. Ad esempio, accedere al dashboard SQL di Azure.

  2. Nella pagina Panoramica relativa al database SQL nel portale di Azure, scegliere Editor di query dal menu sinistro.

  3. Nella schermata di accesso in Benvenuto nell'editor di query del Database SQL, selezionare Continua come <ID utente o gruppo>.

    Screenshot che mostra l’accesso all’Editor di query del portale di Azure con l'autenticazione di Microsoft Entra.

Usare un'identità Microsoft Entra per connettersi da un'applicazione client

Le procedure seguenti mostrano come connettersi a un database SQL con un'identità di Microsoft Entra da un'applicazione client. Questo non è un elenco completo dei metodi di autenticazione quando si usa un'identità Microsoft Entra. Per altre informazioni, vedere Connettersi ad Azure SQL con l'autenticazione di Microsoft Entra e SqlClient.

Autenticazione integrata di Microsoft Entra

Per usare l'autenticazione integrata di Windows, l'Active Directory del dominio deve essere federata con Microsoft Entra ID, oppure deve essere un dominio gestito configurato per l'accesso Single Sign-On facile con autenticazione pass-through o con hash delle password. Per altre informazioni, vedere Single Sign-On facile di Microsoft Entra.

L'applicazione client (o un servizio) che si connette al database deve essere in esecuzione in un computer aggiunto al dominio con le credenziali di dominio dell'utente.

Per connettersi a un database usando l'autenticazione integrata e un'identità di Microsoft Entra, la parola chiave Authentication nella stringa di connessione al database deve essere impostata su Active Directory Integrated. Sostituire <database_name> con il nome del database. L'esempio di codice C# seguente usa ADO .NET.

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

La parola chiave Integrated Security=True della stringa di connessione non è supportata per la connessione al database SQL di Azure. Quando si esegue una connessione ODBC, è necessario rimuovere gli spazi e impostare l'autenticazione su ActiveDirectoryIntegrated.

Autenticazione con password di Microsoft Entra

Per connettersi a un database usando gli account utente di identità solo cloud di Microsoft Entra o quelli che usano identità ibride Microsoft Entra, la parola chiave Authentication deve essere impostata su Active Directory Password. La stringa di connessione deve contenere le parole chiave e i valori User ID/UID e Password/PWD. Sostituire <database_name>, <email_address> e <password> con i valori appropriati. L'esempio di codice C# seguente usa ADO .NET.

string ConnectionString =
@"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Per altre informazioni sui metodi di autenticazione di Microsoft Entra, usare gli esempi di codice dimostrativo disponibili in Dimostrazione GitHub dell'autenticazione di Microsoft Entra.

Token di accesso di Microsoft Entra ID

Questo metodo di autenticazione consente ai servizi di livello intermedio di ottenere token JSON Web (JWT) per connettersi al database in database SQL, Istanza gestita di SQL o Azure Synapse ottenendo un token da Microsoft Entra ID. Questo metodo consente diversi scenari di applicazione tra cui identità del servizio, entità servizio e applicazioni che usano l'autenticazione basata su certificati. Per usare l'autenticazione tramite token di Microsoft Entra, è necessario completare quattro passaggi fondamentali:

  1. Registrare l'applicazione in Microsoft Entra ID e ottenere l'ID client per il codice.
  2. Creare un utente del database che rappresenta l'applicazione. (Completato in precedenza nella sezione Creare utenti indipendenti mappati alle identità di Microsoft Entra.)
  3. Creare un certificato nel computer client che esegue l'applicazione.
  4. Aggiungere il certificato come chiave per l'applicazione.

Stringa di connessione di esempio. Sostituire <database_name> con il nome del database:

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Per altre informazioni, vedere SQL Server Security Blog(Blog sulla sicurezza del server SQL). Per informazioni sull'aggiunta di un certificato, vedere Introduzione all'autenticazione basata su certificati di Microsoft Entra ID.

sqlcmd

Le seguenti istruzioni si connettono usando la versione 13.1 di sqlcmd. Download di Microsoft Command Line Utilities 14.0 per SQL Server.

Nota

sqlcmd con il comando -G non funziona con le identità di sistema e richiede un account di accesso dell'entità utente.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Risolvere i problemi di autenticazione di Microsoft Entra

Per indicazioni sulla risoluzione dei problemi relativi all'autenticazione di Microsoft Entra, vedere Blog: risoluzione dei problemi relativi all'autenticazione di Azure AD con il database SQL di Azure e DW.