Condividi tramite


Abilitare l'autenticazione di Microsoft Entra per SQL Server nelle macchine virtuali di Azure

Si applica a:SQL Server su VM di Azure

Questo articolo illustra come abilitare l'autenticazione con Microsoft Entra ID (in precedenza Azure Active Directory) per SQL Server in macchine virtuali (VM) di Azure.

Note

È possibile configurare l'autenticazione di Microsoft Entra per le istanze non registrati di SQL Server, ad esempio quando si dispone di più istanze di SQL Server nella stessa macchina virtuale.

Overview

A partire da SQL Server 2022, è possibile connettersi a SQL Server in macchine virtuali di Azure usando uno dei seguenti metodi di autenticazione di Microsoft Entra:

  • Password offre l'autenticazione con le credenziali di Microsoft Entra
  • Universal con MFA aggiunge l'autenticazione a più fattori
  • L'integrazione usa provider federatici come Active Directory Federation Services (ADFS) per abilitare le esperienze di Single Sign-On (SSO)
  • Entità servizio abilita l'autenticazione con le applicazioni Azure
  • Identità gestita abilita l'autenticazione dalle applicazioni assegnate alle identità di Microsoft Entra

Quando si crea un account di accesso Microsoft Entra per SQL Server e quando un utente si connette usando tale account di accesso, SQL Server usa un'identità gestita per eseguire query su Microsoft Graph. Quando si abilita l'autenticazione di Microsoft Entra per SQL Server nella macchina virtuale di Azure, è necessario fornire un'identità gestita che SQL Server può usare per comunicare con Microsoft Entra ID. Questa identità gestita deve avere le autorizzazioni necessarie per eseguire query su Microsoft Graph.

Quando si abilita un'identità gestita per una risorsa in Azure, il limite di sicurezza dell'identità è la risorsa a cui è associata. Ad esempio, il limite di sicurezza per una macchina virtuale con le identità gestite per le risorse di Azure abilitate è la macchina virtuale. Qualsiasi codice in esecuzione su tale macchina virtuale può chiamare l'endpoint delle identità gestite e richiedere i token. Quando si abilita un'identità gestita per SQL Server in macchine virtuali di Azure, l'identità viene collegata alla macchina virtuale, quindi il limite di sicurezza è la macchina virtuale. L'esperienza è simile a quella di lavorare con altre risorse che supportano le identità gestite. Per altre informazioni, vedere Domande frequenti sulle identità gestite.

Le identità gestite assegnate dal sistema e assegnate dall'utente usate per l'autenticazione di Microsoft Entra con SQL Server in macchine virtuali di Azure offrono i vantaggi seguenti:

  • L'identità gestita assegnata dal sistema offre un processo di configurazione semplificato. Poiché l'identità gestita ha la stessa durata della macchina virtuale, non è necessario eliminarla separatamente quando viene eliminata la macchina virtuale.
  • L'identità gestita assegnata dall'utente offre scalabilità perché può essere collegata e usata per l'autenticazione di Microsoft Entra per più istanze di SQL Server in macchine virtuali di Azure.

Per iniziare a usare le identità gestite, vedere Configurare le identità gestite usando il portale di Azure.

Prerequisites

Per abilitare l'autenticazione di Microsoft Entra in SQL Server, sono necessari i seguenti prerequisiti:

Concedere le autorizzazioni

L'identità gestita scelta per facilitare l'autenticazione tra SQL Server e Microsoft Entra ID deve disporre delle tre autorizzazioni dell'applicazione Microsoft Graph seguenti (ruoli dell'app): User.Read.All, GroupMember.Read.All e Application.Read.All.

In alternativa, l'aggiunta dell'identità gestita al ruolo di amministratori che leggono la directory di Microsoft Entra concede autorizzazioni sufficienti. Un altro modo per assegnare il ruolo Lettori Directory a un'identità gestita consiste nell'assegnare il ruolo Lettori Directory a un gruppo in Microsoft Entra ID. I proprietari del gruppo possono quindi aggiungere l'identità gestita della macchina virtuale come membro di questo gruppo. Ciò riduce al minimo il coinvolgimento degli amministratori del ruolo Microsoft Entra e delega la responsabilità ai proprietari del gruppo.

Aggiungere l'identità gestita al ruolo

Questa sezione illustra come aggiungere la tua identità gestita al ruolo Directory Readers in Microsoft Entra ID. Devi avere i privilegi di Amministratore di Ruolo con Privilegi per apportare modifiche alle assegnazioni di ruolo dei Lettori della Directory. Se non si dispone di autorizzazioni sufficienti, rivolgersi all'amministratore di Microsoft Entra per seguire questa procedura.

Per concedere all'identità gestita il ruolo Lettori Directory, seguire questa procedura:

  1. Aprire i ruoli e gli amministratori di Microsoft Entra ID nel portale di Azure:

  2. Digitare Directory Readers nella casella di ricerca e quindi selezionare il ruolo Directory Readers per aprire la pagina Directory Readers | Assegnazioni :

    Screenshot della pagina Ruoli e amministratori del portale di Azure, cercare e selezionare il ruolo Lettori directory.

  3. Nella pagina amministratori che leggono la directory | Assegnazioni, selezionare + Aggiungi assegnazioni per aprire la pagina Aggiungi assegnazione.

    Screenshot della pagina Ruoli con autorizzazioni di lettura nella directory del portale di Azure.

  4. Nella pagina Aggiungi assegnazioni scegliere Nessun membro selezionato in Seleziona membri per aprire la pagina Seleziona un membro .

    Screenshot della pagina aggiungi assegnazione del portale di Azure, con Nessun membro selezionato evidenziato.

  5. Nella pagina Selezionare un membro cercare il nome dell'identità gestita da usare con la macchina virtuale di SQL Server e aggiungerla al ruolo di amministratori che leggono la directory. Per le identità gestite assegnate dal sistema, cercare il nome della macchina virtuale. Usare Seleziona per confermare l'identità e tornare alla pagina Aggiungi assegnazioni .

    Screenshot che cerca i membri da selezionare nella portale di Azure.

  6. Verificare che l'identità scelta sia visualizzata in Seleziona membri e quindi selezionare Avanti.

    Screenshot della pagina Aggiungi assegnazione nella portale di Azure, con VM2 aggiunta come assegnazione.

  7. Verificare che il tipo di assegnazione sia impostato su Attivo e che la casella accanto a Assegnata in modo permanente sia selezionata. Immettere una motivazione aziendale, ad esempio l'aggiunta di autorizzazioni del ruolo lettore directory all'identità assegnata dal sistema per VM2, quindi selezionare Assegna per salvare le impostazioni e tornare alla pagina amministratori che leggono la directory | Assegnazioni.

    Screenshot delle impostazioni nell'opzione Aggiungi assegnazione nel portale di Azure.

  8. Nei lettori della pagina amministratori che leggono la directory | Assegnazioni, verificare che venga visualizzata l'identità appena aggiunta in amministratori che leggono la directory.

    Screenshot della pagina delle autorizzazioni di lettura del portale di Azure che mostra l'assegnazione della macchina virtuale aggiunta al ruolo.

Aggiungere autorizzazioni per il ruolo dell'app

È possibile usare Azure PowerShell per concedere i ruoli dell'app a un'identità gestita. A tale scopo, effettuare i passaggi seguenti:

Note

I moduli Azure AD e MSOnline PowerShell sono deprecati a partire dal 30 marzo 2024. Per maggiori informazioni, leggere l'aggiornamento sulla deprecazione. Dopo questa data, il supporto per questi moduli è limitato all'assistenza alla migrazione a Microsoft Graph PowerShell SDK e alle correzioni di sicurezza. I moduli deprecati continueranno a funzionare fino al 30 marzo 2025.

È consigliabile eseguire la migrazione a Microsoft Graph PowerShell per interagire con Microsoft Entra ID (in precedenza Azure AD). Per domande comuni sulla migrazione, consultare le Domande frequenti sulla migrazione. Nota: le versioni 1.0.x di MSOnline potrebbero subire interruzioni dopo il 30 giugno 2024.

  1. Connettersi a Microsoft Graph

    Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All" -TenantId "<tenant id>"
    
  2. Recuperare l'identità gestita:

    $Graph_SP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'"
    $MSI = Get-MgServicePrincipal -Filter "displayName eq '<your managed identity display name>'"
    
  3. Assegnare l'identità al ruolo User.Read.All:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    
  4. Assegnare l'identità al ruolo GroupMember.Read.All:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    
  5. Assegnare l'identità al ruolo Application.Read.All:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    

È possibile convalidare le autorizzazioni assegnate all'identità gestita eseguendo le operazioni seguenti:

  1. Nel portale Azure, andare su Microsoft Entra ID.
  2. Scegliere Applicazioni aziendali e quindi Selezionare Tutte le applicazioni in Gestisci.
  3. Filtrare il tipo di applicazione in base a Managed identities.
  4. Selezionare l'identità gestita e quindi scegliere Autorizzazioni in Sicurezza. Verranno visualizzate le autorizzazioni seguenti: User.Read.All, GroupMember.Read.All, Application.Read.All.

Abilita comunicazioni in uscita

Per consentire il funzionamento dell'autenticazione di Microsoft Entra, è necessario quanto segue:

  • Comunicazione in uscita da SQL Server a Microsoft Entra ID e endpoint di Microsoft Graph.
  • Comunicazione in uscita dal client SQL all'ID Microsoft Entra.

Le configurazioni predefinite delle macchine virtuali di Azure consentono la comunicazione in uscita all'endpoint di Microsoft Graph, oltre all'ID Microsoft Entra, ma alcuni utenti scelgono di limitare la comunicazione in uscita usando un firewall a livello di sistema operativo o il gruppo di sicurezza di rete di Azure.

I firewall nella macchina virtuale di SQL Server e qualsiasi client SQL devono consentire il traffico in uscita sulle porte 80 e 443.

La regola del gruppo di sicurezza di rete della rete virtuale di Azure per la rete virtuale che ospita la macchina virtuale di SQL Server deve avere quanto segue:

  • Tag del servizio di AzureActiveDirectory.
  • Intervalli di porte di destinazione: 80, 443.
  • Azione impostata su Consenti.
  • Una priorità alta (che è un numero basso).

Abilitare l'autenticazione di Microsoft Entra per l'istanza registrata

Quando si registra l'istanza di SQL Server con l'estensione SQL IaaS Agent, è possibile abilitare l'autenticazione di Microsoft Entra per l'istanza registrata usando il portale di Azure, l'interfaccia della riga di comando di Azure o PowerShell. L'uso del portale di Azure o dell'interfaccia della riga di comando di Azure per gestire l'istanza è supportato solo nell'istanza registrata di SQL Server.

Note

Dopo aver abilitato l'autenticazione di Microsoft Entra, è possibile seguire la stessa procedura descritta in questa sezione per aggiornare la configurazione in modo da usare un'identità gestita diversa.

Abilita l'autenticazione di Microsoft Entra in macchine virtuali SQL Server:

  1. Nel portale di Azure passare alla navigazione sulla risorsa macchina virtuale SQL.

  2. Selezionare Configurazione di sicurezza in Sicurezza.

  3. Scegliere Abilita in Autenticazione di Microsoft Entra.

  4. Scegliere il tipo di identità gestita dall'elenco a discesa assegnato dal sistema o assegnato dall'utente. Se si sceglie l'assegnazione dell'utente, selezionare l'identità che si vuole usare per eseguire l'autenticazione a SQL Server nella macchina virtuale di Azure dall'elenco a discesa Identità gestita assegnata dall'utente visualizzato.

    Screenshot della pagina di configurazione della sicurezza per la macchina virtuale SQL nella portale di Azure, con l'opzione Autenticazione Di Microsoft Entra selezionata.

Dopo aver abilitato l'autenticazione di Microsoft Entra, è possibile seguire la stessa procedura per modificare l'identità gestita che può eseguire l'autenticazione nella macchina virtuale di SQL Server.

Note

L'errore The selected managed identity does not have enough permissions for Microsoft Entra authentication indica che le autorizzazioni non sono state assegnate correttamente all'identità selezionata. Controllare la sezione Concedi autorizzazioni per assegnare autorizzazioni appropriate.

Abilitare l'autenticazione di Microsoft Entra per le istanze non registrati

Se l'istanza di SQL Server non è registrata con l'estensione SQL IaaS Agent, ad esempio quando si dispone di più istanze di SQL Server nella stessa macchina virtuale, è possibile abilitare l'autenticazione di Microsoft Entra usando PowerShell.

È possibile abilitare l'autenticazione di Microsoft Entra per istanze non registrati specifiche o per tutte le istanze della macchina virtuale.

Note

Per usare l'autenticazione di Microsoft Entra con istanze non registrate in SQL Server in macchine virtuali di Azure, è necessario avere almeno un'istanza registrata con l'estensione SQL IaaS Agent.

Quando si usa il comando per abilitare l'autenticazione Set-AzVMExtension -ExtensionName "SqlIaasExtension" di Microsoft Entra per un'istanza di SQL Server, tenere presente quanto segue:

  • Le autorizzazioni dell'identità gestita vengono controllate solo quando il CheckPermissions parametro è impostato su true.
  • Specificare l'ID client del parametro Identity ClientID per usare un'identità gestita assegnata dall'utente. Quando il ClientID parametro è vuoto, viene usata un'identità gestita assegnata dal sistema .
  • Specificare un elenco di istanze nel EnableForGivenInstances parametro per abilitare l'autenticazione di Microsoft Entra per istanze non registrati specifiche. In caso contrario, usare il parametro EnableForAllInstances per abilitare l'autenticazione di Microsoft Entra per tutte le istanze non registrate sulla macchina virtuale.

L'esempio seguente abilita l'autenticazione di Microsoft Entra per tutte le istanze della macchina virtuale usando un'identità assegnata dal sistema:

Set-AzVMExtension -ExtensionName "SqlIaasExtension" -ResourceGroupName $resourceGroupName -VMName $sqlVMName -Publisher "Microsoft.SqlServer.Management" -ExtensionType "SqlIaaSAgent" -TypeHandlerVersion 2.0 -Location $region -SettingString '{"ServerConfigurationsManagementSettings": {"AADAuthenticationSettings": {"ClientId":"", "EnableForAllInstances":true, "CheckPermissions":true}},"DeploymentTokenSettings":{"DeploymentToken":12345678}}'

L'esempio seguente abilita l'autenticazione di Microsoft Entra per istanze non registrati specifiche usando un'identità assegnata dall'utente:

Set-AzVMExtension -ExtensionName "SqlIaasExtension" -ResourceGroupName $resourceGroupName -VMName $sqlVMName -Publisher "Microsoft.SqlServer.Management" -ExtensionType "SqlIaaSAgent" -TypeHandlerVersion 2.0 -Location $region -SettingString '{"ServerConfigurationsManagementSettings": {"AADAuthenticationSettings": {"ClientId":$clientId, "EnableForGivenInstances":["MSSQLSERVER","MSSQLSERVER01"], "CheckPermissions":true}},"DeploymentTokenSettings":{"DeploymentToken":12345678}}'

Creare credenziali di accesso e utenti

Seguire la procedura descritta nell'esercitazione su Microsoft Entra per creare account di accesso e utenti per l'identità gestita.

Connetti alla tua istanza

Seguire le istruzioni riportate nell'esercitazione di Microsoft Entra per connettersi all'istanza di SQL Server usando l'autenticazione di Microsoft Entra.

Limitations

Tenere presente le limitazioni seguenti:

  • L'autenticazione di Microsoft Entra è supportata solo con SQL Server 2022 in esecuzione in macchine virtuali Windows registrate con l'estensione SQL IaaS Agent, distribuite in qualsiasi cloud.
  • La gestione dell'autenticazione di Microsoft Entra nel portale di Azure è disponibile solo per le istanze supportate dall'estensione SQL IaaS Agent, ad esempio un'istanza predefinita o una singola istanza denominata. Usare l'interfaccia della riga di comando di Azure o PowerShell per gestire le istanze aggiuntive di autenticazione di Microsoft Entra nella macchina virtuale di SQL Server non registrate con l'estensione SQL IaaS Agent.
  • L'utilizzo dell'autenticazione Microsoft Entra con le istanze del cluster di failover non è supportato.
  • L'identità scelta per eseguire l'autenticazione in SQL Server deve avere il ruolo Directory Readers in Microsoft Entra ID oppure le tre autorizzazioni dell'applicazione Microsoft Graph seguenti (ruoli dell'app): User.Read.All, GroupMember.Read.All e Application.Read.All.
  • Una volta abilitata l'autenticazione di Microsoft Entra, non è più possibile disabilitarla.
  • Attualmente, l'autenticazione a SQL Server in macchine virtuali di Azure tramite l'autenticazione Di Microsoft Entra con il metodo FIDO2 non è supportata.

Passaggi successivi

Esaminare le procedure consigliate per la sicurezza per SQL Server.

Per altri articoli relativi all'esecuzione di SQL Server nelle macchine virtuali di Azure, vedere Panoramica di SQL Server in Macchine virtuali di Azure. In caso di domande sulle macchine virtuali SQL Server, consultare le domande frequenti.

Per altre informazioni, vedere gli altri articoli di questa serie di procedure consigliate: