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 l'ID Microsoft Entra (in precedenza 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 noto come Azure Active Directory (Azure AD).

Metodi di autenticazione Microsoft Entra.

Microsoft Entra ID supporta i metodi di autenticazione seguenti:

  • Identità solo cloud di Microsoft Entra
  • Identità ibride di Microsoft Entra che supportano:
    • Autenticazione cloud con due opzioni abbinate all'accesso Single Sign-On facile (SSO)
      • Autenticazione dell'hash delle password di Microsoft Entra
      • 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 gestione delle identità ibrida Di Microsoft Entra.

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

Creare e popolare un tenant di Microsoft Entra

Creare un tenant di 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 Active Directory locale.

Per altre informazioni, vedi:

Associare o aggiungere una sottoscrizione di Azure all'ID Microsoft Entra

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

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

    Importante

    Ogni sottoscrizione di Azure ha una relazione di trust con un'istanza di Microsoft Entra. Considera attendibile tale directory per autenticare utenti, servizi e dispositivi. Più sottoscrizioni possono considerare attendibile la stessa directory, ma una sottoscrizione considera attendibile una sola directory. Questa relazione di trust che una sottoscrizione ha con una directory è diversa da quella di una sottoscrizione con tutte le altre risorse in Azure (siti Web, database e così via), che sono più simili alle risorse figlio di una sottoscrizione. Se la sottoscrizione scade, non sarà più possibile accedere a tutte queste altre risorse associate alla sottoscrizione Tuttavia, la directory rimane in Azure ed è possibile associare un'altra sottoscrizione a tale directory 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 attendibile, vedere Come associare o aggiungere una sottoscrizione di Azure all'ID Microsoft Entra.

Amministratore di 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 è l'amministratore dell'intero server. Creare un secondo account amministratore come account Microsoft Entra. Questa entità viene creata come utente di database indipendente nel master database del server. Amministrazione istrator sono membri del ruolo db_owner in ogni database utente e ogni database utente viene immesso come utente dbo. Per altre informazioni sugli account amministratore, vedere Gestione di database e account di accesso.

L'amministratore di Microsoft Entra deve essere configurato sia per i server primari che per i server 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 errore del server.

Nota

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

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

Importante

Seguire questi passaggi solo se si esegue il provisioning di un Istanza gestita di SQL di Azure. Questa operazione può essere eseguita solo da Global Amministrazione istrator o da un Amministrazione istrator con privilegi in Microsoft Entra ID.

È possibile assegnare il ruolo Lettori directory a un gruppo 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 il Istanza gestita di SQL. Per altre informazioni su questa funzionalità, vedere Ruolo lettori directory in Microsoft Entra for Azure SQL.

Il Istanza gestita di SQL deve disporre dell'autorizzazione per leggere l'ID Di Microsoft Entra per eseguire attività quali l'autenticazione degli utenti tramite l'appartenenza al gruppo di sicurezza o la creazione di nuovi utenti. Per il funzionamento, è necessario concedere all'Istanza gestita di SQL l'autorizzazione per leggere Microsoft Entra ID. A tale scopo, è possibile usare il portale di Azure o PowerShell.

Azure portal

Per concedere al Istanza gestita di SQL autorizzazioni di lettura per Microsoft Entra ID usando il portale di Azure, accedere come global Amministrazione istrator e seguire questa procedura:

  1. Nell'angolo superiore destro della portale di Azure selezionare l'account e quindi scegliere Cambia directory per verificare quale directory sia la directory Corrente. Cambiare directory, se necessario.

    Screenshot of the Azure portal showing where to switch your directory.

  2. Scegliere la directory Microsoft Entra corretta come directory Corrente.

    Questo passaggio collega la sottoscrizione associata all'ID di Microsoft Entra al Istanza gestita di SQL, assicurandosi che il tenant di Microsoft Entra e Istanza gestita di SQL usare la stessa sottoscrizione.

  3. È ora possibile scegliere l'amministratore di Microsoft Entra per il Istanza gestita di SQL. A tale scopo, passare alla risorsa dell'istanza gestita nel portale di Azure e selezionare Amministratore di Microsoft Entra in Impostazioni.

    Screenshot of the Azure portal showing the Microsoft Entra admin page open for the selected SQL managed instance.

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

    Screenshot of the dialog for granting permissions to a SQL managed instance for accessing Microsoft Entra ID with the Grant permissions button selected.

  5. Al termine dell'operazione, viene visualizzata la notifica seguente nell'angolo in alto a destra:

    Screenshot of a notification confirming that Microsoft Entra ID read permissions have been successfully updated for the managed instance.

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

    Screenshot showing the Set admin command highlighted on the Microsoft Entra admin page for the selected SQL managed instance.

  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 di amministrazione di Microsoft Entra per l'istanza gestita.

    Il riquadro ID Entra di Microsoft mostra tutti i membri e i gruppi all'interno della directory corrente. Gli utenti o i gruppi disattivati 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 o Azure Synapse.

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

    Screenshot of the Microsoft Entra admin page with the Save button in the top row next to the Set admin and Remove admin buttons.

    Il processo di modifica dell'amministratore potrebbe richiedere alcuni minuti. Il nuovo amministratore viene quindi visualizzato nella casella di amministrazione 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.

Dopo il provisioning di un amministratore di Microsoft Entra per il 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 Istanza gestita di SQL panoramica.

Suggerimento

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

PowerShell

Per usare PowerShell per concedere alle 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

Istanza gestita di SQL di Azure supporta ancora il modulo Azure Resource Manager (RM) di PowerShell, ma tutto lo sviluppo futuro riguarda il modulo Az.Sql. Il modulo AzureRM riceverà correzioni di bug fino ad almeno 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 effettuare 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 il Istanza gestita di SQL sono elencati nella tabella seguente:

Nome del cmdlet Descrizione
Set-AzSqlInstanceActiveDirectory Amministrazione istrator Effettua il provisioning di un amministratore di Microsoft Entra per il Istanza gestita di SQL nella sottoscrizione corrente. (Deve essere dalla sottoscrizione corrente)
Remove-AzSqlInstanceActiveDirectory Amministrazione istrator Rimuove un amministratore di Microsoft Entra per il Istanza gestita di SQL nella sottoscrizione corrente.
Get-AzSqlInstanceActiveDirectory Amministrazione istrator Restituisce informazioni su un amministratore di Microsoft Entra per il Istanza gestita di SQL nella sottoscrizione corrente.

Il comando seguente ottiene informazioni su un amministratore di Microsoft Entra per un Istanza gestita di SQL denominato ManagedInstance01 associato 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 DBAs per il Istanza gestita di SQL denominato ManagedInstance01. Questo server è associato al 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 il Istanza gestita di SQL denominato ManagedInstanceName01 associato al gruppo di risorse ResourceGroup01.

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

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

Importante

Seguire questa procedura solo se si esegue il provisioning di un server per database SQL o Azure Synapse.

Le due procedure seguenti illustrano come effettuare 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 della 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 i server SQL e selezionare il server logico per il database SQL di Azure.

    Search for and select SQL servers.

    Nota

    In questa pagina, prima di selezionare SQL Server, è possibile selezionare la stella accanto al nome alla categoria preferita e aggiungere SQL Server al menu di spostamento a sinistra.

    Prendere in considerazione anche la visita al dashboard sql di Azure.

  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 shows the option to set the Microsoft Entra admin for SQL servers.

  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. (L'oggetto Il riquadro ID Microsoft Entra mostra tutti i membri e i gruppi della directory corrente. Gli utenti o i gruppi disattivati 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 shows the option to save a Microsoft Entra admin.

    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 potrebbe 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 amministratore (utente o gruppo) non può essere già presente nel database virtuale master come utente di autenticazione server. Se presente, l'installazione dell'amministratore di Microsoft Entra ha esito negativo ed esegue il rollback, a indicare che tale amministratore (nome) esiste già. Poiché un utente di autenticazione 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, quindi selezionare Salva. In questo modo viene disabilitata l'autenticazione di 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 effettuare 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 di Microsoft Entra per database SQL e Azure Synapse:

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

Usare il comando get-help di PowerShell per visualizzare altre informazioni per ognuno di questi comandi. Ad esempio: get-help Set-AzSqlServerActiveDirectoryAdministrator.

Lo script seguente effettua il provisioning di un gruppo di amministratori di Microsoft Entra denominato DBA_Group (ID 40b79501-b343-44ed-9ce7-da4c8cc7353foggetto ) 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 dell'ID Entra Microsoft o il nome dell'entità utente. Ad esempio, DisplayName="John Smith" e DisplayName="johns@contoso.com". Per i gruppi di Microsoft Entra è supportato solo il nome visualizzato microsoft Entra ID.

Nota

Il comando Set-AzSqlServerActiveDirectoryAdministrator di Azure PowerShell non impedisce di effettuare il provisioning degli amministratori di Microsoft Entra per utenti non supportati. È possibile effettuare il provisioning di un utente non supportato, ma non 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

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 ID di Microsoft Entra del portale di Azure.

Nell'esempio seguente vengono restituite informazioni sull'amministratore corrente di Microsoft Entra per il server:

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

Nell'esempio seguente viene rimosso un amministratore di Microsoft Entra:

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

Nota

È anche possibile effettuare il provisioning di microsoft Entra Amministrazione istrator 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 Azure Active Directory Authentication Library (ADAL), deprecato. 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 Uso dell'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 di ADAL.DLL più recente.

In tutti i computer client da cui le applicazioni o gli utenti si connettono a database SQL o Azure Synapse usando le identità di Microsoft Entra, è necessario installare il software seguente:

È possibile soddisfare questi requisiti tramite:

  • L'installazione della versione più recente 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.
    • La versione più recente di Visual Studio dai download di Visual Studio soddisfa il requisito .NET Framework 4.6, ma non installa la versione amd64 richiesta di ADAL.DLL.

Creare utenti indipendenti mappati alle identità di Microsoft Entra

Questa sezione esamina i requisiti e 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 indipendenti basati su un'identità di Microsoft Entra. Un utente del database indipendente non dispone di un account di accesso nel master database e esegue il mapping a un'identità nell'ID Microsoft Entra associato al database. L'identità di Microsoft Entra può essere un singolo account utente, gruppo o 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 indipendenti basati sulle identità di Microsoft Entra, vedere CREATE U edizione Standard R (Transact-SQL).

  • Poiché Istanza gestita di SQL supporta le entità server (account di accesso) di Microsoft Entra, l'uso di utenti di database indipendenti non è obbligatorio. In questo modo è possibile creare account di accesso da utenti, gruppi o applicazioni di Microsoft Entra. Ciò significa che è possibile eseguire l'autenticazione con il Istanza gestita di SQL usando l'account di accesso del server Microsoft Entra anziché un utente del database indipendente. Per altre informazioni, vedere Istanza gestita di SQL panoramica. Per la sintassi sulla 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 usando il portale di Azure. I ruoli di Microsoft Entra non vengono propagati al database in database SQL, Istanza gestita di SQL o Azure Synapse. I ruoli di Microsoft Entra gestiscono le risorse di Azure e non si applicano alle autorizzazioni del database. Ad esempio, il ruolo Collaboratore SQL Server non concede 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 di database per un'identità gestita in un tenant Di Microsoft Entra diverso da quello associato alla sottoscrizione di Azure. Tuttavia, gli utenti in altre directory possono essere importati nella directory associata come utenti esterni. Possono quindi essere usati per creare utenti di database indipendenti che possano accedere al database SQL. Gli utenti esterni possono anche ottenere l'accesso tramite l'appartenenza ai gruppi di Microsoft Entra che contengono utenti di database.

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

Importante

Gli utenti di Microsoft Entra e le entità servizio (applicazioni Microsoft Entra) membri di più di 2048 gruppi di sicurezza di Microsoft Entra non sono supportati per accedere 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 U edizione Standard R. Nell'esempio T-SQL seguente può Microsoft_Entra_principal_name essere il nome dell'entità utente 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 federato o gestito 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 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 Microsoft Entra:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Il CREATE USER ... FROM EXTERNAL PROVIDER comando richiede l'accesso SQL a Microsoft Entra ID (il "provider esterno") per conto dell'utente connesso. In alcuni casi, si verificano circostanze che causano la restituzione di un'eccezione a SQL da parte dell'ID Entra di Microsoft.

  • È possibile che venga visualizzato l'errore SQL 33134, che contiene il messaggio di errore specifico dell'ID Microsoft Entra. L'errore indica in genere che l'accesso viene negato, che l'utente deve registrarsi in MFA per accedere alla risorsa o che l'accesso tra le applicazioni proprietarie deve essere gestito tramite la preautenticazione. Nei primi due casi, il problema è in genere causato dai criteri di accesso condizionale impostati nel tenant di 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-00000000000000' (ID applicazione dell'API Microsoft Graph) deve risolvere il problema. Se l'errore indica che l'accesso tra le applicazioni di prima parte deve essere gestito tramite la preautenticazione, il problema è dovuto al fatto che l'utente ha eseguito l'accesso come entità servizio. Il comando dovrebbe avere esito positivo se viene eseguito da un utente.
  • Se si riceve un timeout di Connessione scaduto, potrebbe essere necessario impostare il TransparentNetworkIPResolution parametro del 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 di Microsoft Entra per il server impedisce a qualsiasi utente di autenticazione di Microsoft Entra di connettersi al server. Se necessario, un amministratore database SQL può eliminare 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 in cui sono membri. La concessione di autorizzazioni agli utenti di database indipendenti basati su Microsoft Entra funziona allo stesso modo di concedere l'autorizzazione a qualsiasi altro tipo di utente. È consigliabile concedere autorizzazioni ai ruoli del database e aggiungere utenti a tali ruoli anziché concedere direttamente le 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 tipo E (EXTERNAL_U edizione Standard R) e per i gruppi con tipo X (EXTERNAL_GROUPS). Per altre informazioni, vedere sys.database_principals.

Connessione al database usando SSMS o SSDT

Per verificare che l'amministratore di Microsoft Entra sia configurato correttamente, connettersi al master database 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à Microsoft Entra per connettersi usando SSMS o SSDT

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

MICROSOFT Entra ID - Integrato

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

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

    Screenshot from SSMS showing Microsoft Entra Integrated authentication.

  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 from SSMS of the Options menu.

Microsoft Entra ID - Password

Utilizzare questo metodo per la connessione con un nome dell'entità di sicurezza Microsoft Entra usando il dominio gestito di Microsoft Entra. È anche possibile usarlo per gli account federati senza accesso al dominio, ad esempio quando si lavora in remoto.

Usare questo metodo per eseguire l'autenticazione al database in database SQL o nel 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 di 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, nel Istanza gestita di SQL o in Azure Synapse.

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

  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 per l'account Microsoft Entra o l'account di dominio gestito/federato.

    Screenshot from SSMS using Microsoft Entra Password authentication.

  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 l'autenticazione a più fattori (MFA), con la password richiesta in modo interattivo. Questo metodo può essere usato per eseguire l'autenticazione ai database in database SQL, Istanza gestita di SQL e Azure Synapse per gli utenti di identità solo cloud di Microsoft Entra o per gli utenti che usano identità ibride di Microsoft Entra.

Per altre informazioni, vedere Uso dell'autenticazione a più fattori di Microsoft Entra con database SQL e Azure Synapse (supporto 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 Microsoft Entra (applicazioni Microsoft Entra). Per altre informazioni, vedere Entità servizio Microsoft Entra con Azure SQL.

ID Microsoft Entra - Identità gestita

Utilizzare questo metodo per eseguire l'autenticazione al database in database SQL o Istanza gestita di SQL con identità gestite di Microsoft Entra. Per altre informazioni, vedere Identità gestite in Microsoft Entra for 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 portale di Azure Editor di query per database SQL di Azure

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

  1. Passare al database SQL nel portale di Azure. Ad esempio, visitare il dashboard SQL di Azure.

  2. Nella pagina Panoramica del database SQL nella portale di Azure selezionare Editor di query dal menu a sinistra.

  3. Nella schermata di accesso in Benvenuto in database SQL Editor di query selezionare Continua come <ID> utente o gruppo.

    Screenshot showing sign-in to the Azure portal Query editor with Microsoft Entra authentication.

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

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

Autenticazione integrata di Microsoft Entra

Per usare la autenticazione di Windows integrata, l'istanza di 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 per l'autenticazione pass-through o dell'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 a un dominio con le credenziali di dominio di un utente.

Per connettersi a un database usando l'autenticazione integrata e un'identità di Microsoft Entra, la parola chiave Authentication nel database stringa di connessione 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 stringa di connessione non è supportata per la connessione a database SQL di Azure. Quando si effettua una connessione ODBC, è necessario rimuovere gli spazi e impostare l'autenticazione su ActiveDirectoryIntegrated.

Tipo di autenticazione della password Microsoft Entra

Per connettersi a un database usando gli account utente di identità solo cloud di Microsoft Entra o quelli che usano identità ibride di 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();

Altre informazioni sui metodi di autenticazione di Microsoft Entra usando gli esempi di codice demo disponibili in Microsoft Entra authentication GitHub Demo.

Token di accesso 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, l'Istanza gestita di SQL o Azure Synapse ottenendo un token dall'ID Microsoft Entra. 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 token di Microsoft Entra, è necessario completare quattro passaggi di base:

  1. Registrare l'applicazione con 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 in Microsoft Entra ID.

sqlcmd

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

Nota

sqlcmd con il -G comando 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.