Partager via


Configurer l’identité managée et l’authentification Microsoft Entra pour SQL Server activée par Azure Arc

S'applique à : SQL Server 2025 (17.x)

Cet article fournit des instructions pas à pas pour mettre en place et configurer les identités managées Microsoft Entra ID pour SQL Server, activées par Azure Arc.

Pour obtenir une vue d’ensemble de l’identité managée avec SQL Server, consultez Identité managée pour SQL Server activée par Azure Arc.

Prerequisites

Avant de pouvoir utiliser une identité managée avec SQL Server activé par Azure Arc, vérifiez que vous remplissez les conditions préalables suivantes :

Activer l’identité managée principale

Si vous avez installé l'extension Azure pour SQL Server sur votre serveur, vous pouvez activer l'identité managée principale de votre instance de SQL Server directement à partir du portail Azure. Il est également possible d’activer manuellement l’identité managée principale en mettant à jour le Registre, mais doit être effectuée avec une prudence extrême.

Pour activer l’identité managée principale dans le portail Azure, procédez comme suit :

  1. Accédez à votre SQL Server activé par Azure Arc ressource dans le portail Azure.

  2. Sous Settings, sélectionnez Microsoft Entra ID et Purview pour ouvrir la page Microsoft Entra ID et Purview.

    Note

    Si vous ne voyez pas l'option Enable Microsoft Entra ID authentication, vérifiez que votre instance de SQL Server est connectée à Azure Arc et que vous avez installé la dernière extension SQL.

  3. Dans la page Microsoft Entra ID et Purview, cochez la case en regard de Utilisez une identité managée principale puis utilisez Save pour appliquer votre configuration :

    Screenshot de l’option Microsoft Entra dans le portail Azure.

Accorder à l'application des autorisations d'accès à l'identité

Important

Seul un administrateur de rôle privilégié ou un rôle supérieur peut accorder ces autorisations.

Pour activer l’authentification Microsoft Entra pour SQL Server instances, chaque identité managée affectée par le système nécessite des autorisations User.Read.All, GroupMember.Read.All et Application.Read.All pour interroger Microsoft Graph. Pour plus d’informations sur ces autorisations, consultez :

  • User.Read.All : permet d’accéder à Microsoft Entra informations utilisateur.
  • GroupMember.Read.All : autorise l’accès aux informations de groupe Microsoft Entra.
  • Application.Read.All : autorise l’accès aux informations de Microsoft Entra principal de service (application).

Ces autorisations sont des autorisations au niveau de l’application (rôles d’application) et doivent être affectées directement à chaque identité managée. Ils ne peuvent pas être attribués manuellement à un groupe de sécurité Microsoft Entra et accordés aux membres par le biais de l'appartenance au groupe. Pour les environnements avec de nombreuses machines, une alternative consiste à affecter le rôle Directory Readers à un groupe de sécurité assignable par rôle Microsoft Entra et à ajouter les identités gérées en tant que membres. Contrairement aux autorisations de rôle d’application, ce rôle Microsoft Entra peut être accordé au niveau du groupe, ce qui simplifie la gestion à grande échelle. Toutefois, Directory Reader accorde un accès en lecture étendu à tous les objets d’annuaire, dépassant considérablement les trois autorisations de API Graph ciblées. Le rôle Lecteurs d’annuaire n’est pas recommandé pour les environnements de production où un accès avec le moins de privilèges possible est requis.

Le script PowerShell suivant accorde les autorisations requises à l’identité managée. Vérifiez que ce script est exécuté sur PowerShell 7.5 ou une version ultérieure et que le module Microsoft.Graph 2.28 ou version ultérieure est installé.

# 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."
    }
}

Créer des connexions et des utilisateurs

Suivez les étapes du didacticiel Microsoft Entra pour créer des connexions et des utilisateurs pour l’identité managée.