Condividi tramite


Configurare l'identità gestita e l'autenticazione Microsoft Entra per le SQL Server abilitate da Azure Arc

Applica a: SQL Server 2025 (17.x)

Questo articolo fornisce istruzioni dettagliate per installare e configurare l'identità gestita di Microsoft Entra ID per SQL Server abilitato da Azure Arc.

Per una panoramica dell'identità gestita con SQL Server, vedere Identity gestita per SQL Server abilitata da Azure Arc.

Prerequisiti

Prima di poter usare un'identità gestita con SQL Server abilitata da Azure Arc, assicurarsi di soddisfare i prerequisiti seguenti:

Abilitare l'identità gestita primaria

Se è stata installata l'estensione Azure per SQL Server nel server, è possibile abilitare l'identità gestita primaria per l'istanza di SQL Server direttamente dal portale di Azure. È anche possibile abilitare manualmente l'identità gestita primaria aggiornando il Registro di sistema, ma deve essere eseguita con estrema cautela.

Per abilitare l'identità gestita primaria nel portale di Azure, seguire questa procedura:

  1. Passare alla risorsa SQL Server abilitata da Azure Arc nel portale di Azure.

  2. In Impostazioni selezionare Microsoft Entra ID e Purview per aprire la pagina Microsoft Entra ID e Purview.

    Annotazioni

    Se non viene visualizzata l'opzione Enable Microsoft Entra ID authentication, assicurarsi che l'istanza di SQL Server sia connessa a Azure Arc e che sia installata l'estensione SQL più recente.

  3. Nella pagina Microsoft Entra ID e Purview selezionare la casella accanto a Usare un'identità gestita primaria quindi usare Save per applicare la configurazione:

    Screenshot dell'opzione Microsoft Entra nel portale di Azure.

Concedere all'identità le autorizzazioni per l'uso dell'applicazione

Importante

Solo un Amministratore di Ruolo con Privilegi o un ruolo più alto può concedere queste autorizzazioni.

Per abilitare l'autenticazione Microsoft Entra per le istanze di SQL Server, ogni identità gestita assegnata dal sistema richiede autorizzazioni User.Read.All, GroupMember.Read.All e Application.Read.All per eseguire query Microsoft Graph. Per altre informazioni su queste autorizzazioni, vedere:

  • User.Read.All: consente l'accesso alle informazioni utente Microsoft Entra.
  • GroupMember.Read.All: consente l'accesso alle informazioni del gruppo Microsoft Entra.
  • Application.Read.All: consente l'accesso alle informazioni relative all'entità servizio (applicazione) di Microsoft Entra.

Queste autorizzazioni sono autorizzazioni a livello di applicazione (ruoli dell'app) e devono essere assegnate direttamente a ogni identità gestita. Non possono essere assegnati manualmente a un gruppo di sicurezza Microsoft Entra e concessi ai membri tramite l'appartenenza al gruppo. Per gli ambienti con molti computer, un'alternativa consiste nell'assegnare il ruolo Directory Readers a un gruppo di sicurezza di Microsoft Entra assegnabile a ruoli e aggiungere le identità gestite come membri. A differenza delle autorizzazioni del ruolo dell'app, questo ruolo Microsoft Entra può essere concesso a livello di gruppo, semplificando la gestione su ampia scala. Tuttavia, Directory Reader concede un accesso in lettura ampio a tutti gli oggetti directory, superando significativamente le tre autorizzazioni di API Graph di destinazione. Il ruolo Lettori directory non è consigliato per gli ambienti di produzione in cui è necessario l'accesso con privilegi minimi.

Lo script di PowerShell seguente concede le autorizzazioni necessarie all'identità gestita. Assicurarsi che questo script venga eseguito in PowerShell 7.5 o versione successiva e che sia installato il modulo Microsoft.Graph 2.28 o versione successiva.

# Set your Azure tenant and managed identity name
$tenantID = '<Enter-Your-Azure-Tenant-Id>'
$managedIdentityName = '<Enter-Your-Arc-HostMachine-Name>'

# Connect to Microsoft Graph
try {
    Connect-MgGraph -TenantId $tenantID -ErrorAction Stop
    Write-Output "Connected to Microsoft Graph successfully."
}
catch {
    Write-Error "Failed to connect to Microsoft Graph: $_"
    return
}

# Get Microsoft Graph service principal
$graphAppId = '00000003-0000-0000-c000-000000000000'
$graphSP = Get-MgServicePrincipal -Filter "appId eq '$graphAppId'"
if (-not $graphSP) {
    Write-Error "Microsoft Graph service principal not found."
    return
}

# Get the managed identity service principal
$managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '$managedIdentityName'"
if (-not $managedIdentity) {
    Write-Error "Managed identity '$managedIdentityName' not found."
    return
}

# Define roles to assign
$requiredRoles = @(
    "User.Read.All",
    "GroupMember.Read.All",
    "Application.Read.All"
)

# Assign roles using scoped syntax
foreach ($roleValue in $requiredRoles) {
    $appRole = $graphSP.AppRoles | Where-Object {
        $_.Value -eq $roleValue -and $_.AllowedMemberTypes -contains "Application"
    }

    if ($appRole) {
        try {
            New-MgServicePrincipalAppRoleAssignment   -ServicePrincipalId $managedIdentity.Id `
                -PrincipalId $managedIdentity.Id `
                -ResourceId $graphSP.Id `
                -AppRoleId $appRole.Id `
                -ErrorAction Stop

            Write-Output "Successfully assigned role '$roleValue' to '$managedIdentityName'."
        }
        catch {
            Write-Warning "Failed to assign role '$roleValue': $_"
        }
    }
    else {
        Write-Warning "Role '$roleValue' not found in Microsoft Graph AppRoles."
    }
}

Creare credenziali di accesso e utenti

Seguire la procedura descritta nell'esercitazione Microsoft Entra per creare accessi e utenti per l'identità gestita.