Identités managées dans Microsoft Entra pour Azure SQL

S’applique à : Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra (anciennement Azure Active Directory)prend en charge deux types d’identités managées : l’identité managée affectée par l’utilisateur (SMI) et l’identité managée affectée par l’utilisateur (UMI). Pour plus d’informations, consultez Types d’identités managées.

Une SMI est automatiquement affectée à Azure SQL Managed Instance lors de sa création. Quand vous utilisez l’authentification Microsoft Entra avec Azure SQL Database, vous devez affecter une SMI quand des principaux de service Azure sont utilisés pour créer des utilisateurs Microsoft Entra dans SQL Database.

Auparavant, seule une SMI pouvait être affectée à l’identité d’une instance managée Azure SQL ou d’un serveur SQL Database. Désormais, une UMI peut être affectée à SQL Managed Instance ou à SQL Database en tant qu’identité d’instance ou de serveur.

Vous pouvez non seulement utiliser une UMI et une SMI comme identité d’instance ou de serveur, mais aussi pour accéder à la base de données avec l’option de chaîne de connexion SQL Authentication=Active Directory Managed Identity. Vous devez créer un utilisateur SQL à partir de l’identité managée dans la base de données cible en utilisant l’instruction CREATE USER. Pour plus d’informations, consultez Utilisation de l'authentification Microsoft Entra avec SqlClient.

Pour récupérer les UMI ou SMI actuels pour Azure SQL Managed Instance ou Azure SQL Database, consultez Obtenir ou définir une identité managée pour un serveur logique ou une instance managée plus loin dans cet article.

Avantages de l’utilisation d’identités managées affectées par l’utilisateur

L’utilisation d’une UMI comme identité de serveur présente plusieurs avantages :

  • Les utilisateurs peuvent créer et gérer leurs propres UMI pour un locataire. Vous pouvez utiliser des UMI comme identités de serveur pour Azure SQL. Une UMI est managée par l’utilisateur, tandis qu’une SMI est définie de manière unique par serveur et affectée par le système.

  • Auparavant, vous aviez besoin du rôle Microsoft Entra ID Lecteurs de répertoirelorsque vous utilisiez un SMI comme identité de serveur ou d'instance. Avec l’introduction de l’accès à Microsoft Entra ID par le biais de Microsoft Graph, les utilisateurs soucieux d’accorder à une SMI ou à une UMI des autorisations de haut niveau, comme le rôle Lecteurs de répertoire, peuvent également accorder des autorisations de niveau inférieur afin que l’identité de serveur ou d’instance puisse accéder à Microsoft Graph.

    Pour plus d’informations sur l’octroi des autorisations Lecteurs de répertoire et leur fonctionnement, consultez Rôle Lecteurs de répertoire dans Microsoft Entra ID pour Azure SQL.

  • Les utilisateurs peuvent choisir une UMI spécifique comme identité de serveur ou d’instance pour toutes les bases de données ou instances managées dans le locataire. Plusieurs UMI peuvent également être affectées à différents serveurs ou instances.

    Les UMI peuvent être utilisées dans différents serveurs pour représenter différentes fonctionnalités. Par exemple, une UMI peut être utilisée pour le chiffrement TDE (Transparent Data Encryption) sur un serveur et une UMI peut être utilisée pour l’authentification Microsoft Entra sur un autre serveur.

  • Vous avez besoin d’une UMI pour créer un serveur logique dans Azure configuré avec TDE avec des clés gérées par le client (CMK). Pour plus d’informations, consultez Chiffrement transparent des données managées par le client à l’aide d’une identité managée affectée par l’utilisateur.

  • Les UMI sont indépendantes des serveurs logiques ou des instances managées. Quand un serveur logique ou une instance est supprimé, la SMI est également supprimé. Les UMI ne sont pas supprimées avec le serveur.

Remarque

Vous devez activer l’identité d’instance (SMI ou UMI) pour permettre la prise en charge de l’authentification Microsoft Entra dans SQL Managed Instance. Pour SQL Database, l’activation de l’identité de serveur est facultative et nécessaire uniquement si un principal de service Microsoft Entra (application Microsoft Entra) supervise la création et la gestion des utilisateurs, groupes ou applications Microsoft Entra dans le serveur. Pour plus d'informations, voir principal de service Microsoft Entra avec Azure SQL.

Créer une identité managée attribuée par l’utilisateur

Pour plus d’informations sur la création d’une UMI, consultez Gérer les identités managées affectées par l’utilisateur.

Autorisations

Une fois l’UMI créée, certaines autorisations sont nécessaires pour lui permettre de lire à partir de Microsoft Graph en tant qu’identité de serveur. Accordez les autorisations suivantes ou affectez le rôle Lecteurs d’annuaires à l’UMI.

Ces autorisations doivent être accordées avant de provisionner un serveur logique ou une instance managée. Une fois les autorisations accordées à l’UMI, elles sont activées pour l’ensemble des serveurs ou des instances créés avec l’UMI affectée en tant qu’identité de serveur.

Important

Seul un Administrateur général ou un Administrateur de rôle privilégié peut accorder ces autorisations.

  • User.Read.All : permet d’accéder aux informations utilisateur Microsoft Entra.
  • GroupMember.Read.All : permet d’accéder aux informations de groupe Microsoft Entra.
  • Application.Read.ALL : permet d’accéder aux informations sur le principal de service Microsoft Entra (application).

Accorder des autorisations

L’exemple de script PowerShell suivant accorde les autorisations nécessaires pour une Identité managée. Cet exemple affecte des autorisations à l’identité managée affectée par l’utilisateurumiservertest.

Pour exécuter le script, vous devez vous connecter en tant qu’utilisateur avec un rôle Administrateur général ou Administrateur de rôle privilégié.

Le script accorde les autorisations User.Read.All, GroupMember.Read.All et Application.Read.ALL à une Identité managée affectée pour accéder à Microsoft Graph.

# Script to assign permissions to an existing UMI 
# The following required Microsoft Graph permissions will be assigned: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.All

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

$tenantId = "<tenantId>"        # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity

# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"

# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP

# Sample Output

# DisplayName     Id                                   AppId                                SignInAudience      ServicePrincipalType
# -----------     --                                   -----                                --------------      --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application

$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'" 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}

# Get required permissions
$Permissions = @(
  "User.Read.All"
  "GroupMember.Read.All"
  "Application.Read.All"
)

# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}

# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
    $AppRoleAssignment = @{
	    principalId = $MSI.Id
	    resourceId = $MSGraphSP.Id
	    appRoleId = $AppRole.Id
    }

    New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $AppRoleAssignment.PrincipalId `
    -BodyParameter $AppRoleAssignment -Verbose
}

Vérifier les autorisations de l’identité managée affectée par l’utilisateur

Pour vérifier les autorisations d’une UMI, accédez au portail Azure. Dans la ressource Microsoft Entra ID, allez dans Applications d'entreprise. Sélectionnez Toutes les applications pour Type d’application, puis recherchez l’UMI qui a été créée.

Screenshot of enterprise application settings in the Azure portal.

Sélectionnez l’UMI, puis allez dans les paramètres Autorisations sous Sécurité.

Screenshot of user-assigned managed identity permissions.

Obtenir ou définir une identité managée pour un serveur logique ou une instance managée

Pour créer un serveur en utilisant une UMI, consultez le guide suivant : Créer un serveur logique Azure SQL avec une identité managée affectée par l’utilisateur.

Obtenir la SMI pour le serveur logique Azure SQL Database

Le portail Azure affiche l’ID de l’identité managée affectée par le système (SMI) dans le menu Propriétés du serveur logique Azure SQL Database.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • Pour récupérer la ou les UMI pour Azure SQL Managed Instance ou Azure SQL Database, utilisez les exemples PowerShell ou Azure CLI suivants.
  • Pour récupérer la SMI pour Azure SQL Managed Instance, utilisez les exemples PowerShell ou Azure CLI suivants.

Définir une identité managée dans le portail Azure

Pour définir l’identité managée par l’utilisateur pour le serveur logique Azure SQL Database ou Azure SQL Managed Instance dans le portail Azure :

  1. Accédez à votre serveur SQL ou votre instance managée SQL.
  2. Sous Sécurité, sélectionnez le paramètre Identité.
  3. Sous Identité managée affectée par l’utilisateur, sélectionnez Ajouter.
  4. Sélectionnez un abonnement, puis sélectionnez une identité managée comme Identité principale pour cet abonnement. Choisissez ensuite le bouton Sélectionner.

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Créer ou définir une identité managée en utilisant Azure CLI

Azure CLI 2.26.0 (ou ultérieur) est obligatoire pour exécuter ces commandes avec une UMI.

Identité managée Azure SQL Database à l’aide d’Azure CLI

  • Pour provisionner un nouveau serveur avec une UMI, utilisez la commande az sql server create.

  • Pour obtenir les identités managées d’un serveur logique, utilisez la commande az sql server show.

    • Par exemple, pour récupérer la ou les UMI d’un serveur logique, recherchez le principalId de chacune :

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Pour récupérer l’identité managée affectée par le système d’un serveur logique Azure SQL Database :

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Pour mettre à jour le paramètre de serveur de l’UMI, utilisez la commande az sql server update.

Créer une identité managée Azure SQL Managed Instance à l’aide d’Azure CLI

  • Pour provisionner une nouvelle instance managée avec une UMI, utilisez la commande az sql mi create.

  • Pour obtenir les SMI et UMI des instances managées, utilisez la commande az sql mi show.

    • Par exemple, pour récupérer la ou les UMI d’une instance managée, recherchez le principalId de chacune :

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Pour récupérer le SMI d’une instance managée :

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Pour mettre à jour le paramètre d’instance managée de l’UMI, utilisez la commande az sql mi update.

Créer ou définir une identité managée en utilisant PowerShell

Le module Az.Sql 3.4 ou ultérieure est obligatoire pour utiliser PowerShell avec une UMI. La dernière version de PowerShell est recommandée, ou utilisez Azure Cloud Shell dans le portail Azure.

Identité managée Azure SQL Database à l’aide de PowerShell

  • Pour provisionner un nouveau serveur avec une UMI, utilisez la commande New-AzSqlServer.

  • Pour obtenir les identités managées d’un serveur logique, utilisez la commande Get-AzSqlServer.

    • Par exemple, pour récupérer la ou les UMI d’un serveur logique, recherchez le principalId de chacune :

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Pour récupérer la SMI d’un serveur logique Azure SQL Database :

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Pour mettre à jour le paramètre de serveur de l’UMI, utilisez la commande Set-AzSqlServer.

Identité managée Azure SQL Managed Instance à l’aide de PowerShell

  • Pour provisionner une nouvelle instance managée avec une UMI, utilisez la commande New-AzSqlInstance.

  • Pour obtenir les identités managées d’une instance managée, utilisez la commande Get-AzSqlInstance.

    • Par exemple, pour récupérer la ou les UMI d’une instance managée, recherchez le principalId de chacune :

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Pour récupérer le SMI d’une instance managée :

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Pour mettre à jour le paramètre d’instance managée de l’UMI, utilisez la commande Set-AzSqlInstance.

Créer ou définir une identité managée en utilisant l’API REST

Pour mettre à jour les paramètres UMI du serveur, vous pouvez également utiliser le script de provisionnement de l’API REST utilisé dans Créer un serveur logique en utilisant une identité managée affectée par l’utilisateur ou Créer une instance managée en utilisant une identité managée affectée par l’utilisateur. Réexécutez la commande de configuration dans le guide avec la propriété d’identité managée mise à jour que vous voulez mettre à jour.

Créer ou définir une identité managée en utilisant un modèle ARM

Pour mettre à jour les paramètres UMI du serveur, vous pouvez également utiliser le modèle ARM (Azure Resource Manager) utilisé dans Créer un serveur logique en utilisant une identité managée affectée par l’utilisateur ou Créer une instance managée en utilisant une identité managée affectée par l’utilisateur. Réexécutez la commande de configuration dans le guide avec la propriété d’identité managée mise à jour que vous voulez mettre à jour.

Remarque

Vous ne pouvez pas modifier l’administrateur du serveur ou son mot de passe et vous ne pouvez pas modifier l’administrateur Microsoft Entra en réexécutant la commande de provisionnement du modèle ARM.

Limitations et problèmes connus

  • Une fois que vous avez créé une instance managée, le volet Microsoft Entra admin du portail Azure affiche un avertissement : Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Si vous avez accordé à l’UMI les autorisations appropriées décrites précédemment dans cet article, vous pouvez ignorer cet avertissement.
  • Si vous utilisez une SMI ou une UMI comme identité de serveur ou d’instance, la suppression de l’identité empêche le serveur ou l’instance d’accéder à Microsoft Graph. L’authentification Microsoft Entra et d’autres fonctions échoueront. Pour restaurer la fonctionnalité Microsoft Entra, affectez une nouvelle SMI ou UMI au serveur avec les autorisations appropriées.
  • Pour accorder des autorisations d’accès à Microsoft Graph par le biais d’une SMI ou d’une UMI, vous devez utiliser PowerShell. Vous ne pouvez pas octroyer ces autorisations avec le portail Azure.