Identidades administradas en Microsoft Entra para Azure SQL

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra ID (anteriormente Azure Active Directory) admite dos tipos de identidades administradas: identidad administrada asignada por el sistema (SMI) e identidad administrada asignada por el usuario (UMI). Para más información, consulte Tipos de identidad administrada.

Una SMI se asigna automáticamente a Azure SQL Managed Instance cuando se crea. Al usar la autenticación de Microsoft Entra con Azure SQL Database, debe asignar una SMI cuando se usen entidades de servicio de Azure para crear usuarios de Microsoft Entra en SQL Database.

Anteriormente, solo se podía asignar una SMI a la identidad de servidor de Azure SQL Managed Instance o de SQL Database. Ahora, se puede asignar una UMI a SQL Managed Instance o SQL Database como identidad de instancia o servidor.

Además de usar una UMI y una SMI como identidad de instancia o servidor, se pueden usar para acceder a la base de datos mediante la opción Authentication=Active Directory Managed Identity de la cadena de conexión de SQL. Debe crear un usuario SQL a partir de la identidad administrada en la base de datos de destino mediante la instrucción CREATE USER. Para obtener más información, consulte Uso de la autenticación de Microsoft Entra con SqlClient.

Para recuperar las UMI o SMI actuales para Azure SQL Managed Instance o Azure SQL Database, consulte la sección Obtener o establecer una identidad administrada para un servidor lógico o una instancia administrada más adelante en este artículo.

Ventajas de utilizar las identidades administradas asignadas por el usuario

Hay varias ventajas de usar una UMI como una identidad de servidor:

  • Los usuarios tienen la flexibilidad de crear y mantener sus propias UMI para un inquilino. Puede usar UMI como identidades de servidor para Azure SQL. El usuario administra la UMI, mientras que para la SMI, la identidad la define exclusivamente el servidor y la asigna el sistema.

  • Anteriormente, el rol Lectores de directorio de Microsoft Entra ID era necesario al usar las SMI como identidad de servidor o instancia. Con la introducción del acceso a Microsoft Entra ID mediante Microsoft Graph, los usuarios interesados en conceder permisos de alto nivel, como el rol Lectores de directorio para las SMI o UMI, también pueden conceder permisos de nivel inferior para que la identidad de servidor o instancia pueda acceder a Microsoft Graph.

    Para obtener más información sobre cómo proporcionar permisos de lectores de directorio y su función, consulte Rol Lectores de directorios en Microsoft Entra ID para Azure SQL.

  • Los usuarios pueden elegir una UMI específica para que sea la identidad de instancia o servidor de todas las bases de datos o instancias administradas del inquilino. O bien, pueden tener varias UMI asignadas a diferentes servidores o instancias.

    Se pueden usar diferentes UMI en diferentes servidores que representan características distintas. Por ejemplo, una UMI puede proporcionar el cifrado de datos transparente (TDE) en un servidor y otra UMI puede encargarse de la autenticación de Microsoft Entra en otro servidor.

  • Necesita una UMI para crear un servidor lógico en Azure configurado mediante TDE con claves administradas por el cliente (CMK). Para más información, vea Cifrado de datos transparente administrado por el cliente mediante una identidad administrada asignada por el usuario.

  • Las UMI son independientes de los servidores lógicos o las instancias administradas. Cuando se elimina un servidor lógico o una instancia, también se elimina la SMI. Las UMI no se eliminan junto con el servidor.

Nota:

Debe habilitar la identidad de instancia (SMI o UMI) para permitir la compatibilidad con la autenticación de Microsoft Entra en SQL Managed Instance. En el caso de SQL Database, habilitar la identidad de servidor es opcional y obligatorio solo si una entidad de servicio de Microsoft Entra (Microsoft Entra) supervisa la creación y administración de usuarios, grupos o aplicaciones de Azure AD en el servidor. Para obtener más información, consulte Entidad de servicio de Microsoft Entra con Azure SQL.

Crear una identidad administrada asignada por el usuario

Para obtener información sobre cómo crear una UMI, consulte Administración de identidades administradas asignadas por el usuario.

Permisos

Una vez creada la UMI, se necesitan algunos permisos para permitir que la UMI lea en Microsoft Graph como la identidad de servidor. Conceda los permisos siguientes o asigne a la UMI el rol Lectores de directorio.

Estos permisos deben concederse antes de aprovisionar una instancia administrada o un servidor lógico. Una vez que se conceden los permisos a la UMI, se habilitan para todos los servidores o todas las instancias que se crean con la UMI asignada como una identidad de servidor.

Importante

Estos permisos solo puede concederlos un Administrador global o un Administrador de roles con privilegios.

  • User.Read.All: permite acceder a la información de usuarios de Microsoft Entra.
  • GroupMember.Read.All: permite acceder a la información de grupos de Microsoft Entra.
  • Application.Read.ALL: permite acceder a la información (de aplicaciones) de las entidades de servicio de Microsoft Entra.

Concesión de permisos

A continuación, se muestra un script de PowerShell de ejemplo que concede los permisos necesarios para una identidad administrada. En este ejemplo se asignan permisos a la identidad administrada asignada por el usuario umiservertest.

Para ejecutar el script, debe iniciar sesión como usuario con un rol de administrador global o administrador de roles con privilegios.

El script concede los permisos User.Read.All, GroupMember.Read.All y Application.Read.ALL a una identidad administrada para acceder a 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
}

Comprobación de los permisos de la identidad administrada asignada por el usuario

Para comprobar los permisos de una UMI, vaya a Azure Portal. En el recurso Microsoft Entra ID, vaya a Aplicaciones empresariales. Seleccione Todas las aplicaciones para el Tipo de aplicación y busque la UMI que se creó.

Screenshot of enterprise application settings in the Azure portal.

Seleccione la UMI y vaya a la configuración de Permisos en Seguridad.

Screenshot of user-assigned managed identity permissions.

Obtener o definir una identidad administrada para un servidor lógico o una instancia administrada

Para crear un servidor mediante una UMI, consulte la siguiente guía: Creación de un servidor lógico de Azure SQL mediante una identidad administrada asignada por el usuario.

Obtención de la SMI para un servidor lógico de Azure SQL Database

Azure Portal muestra el identificador de la identidad administrada asignada por el sistema (SMI) en el menú Propiedades del servidor lógico de 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.

  • Para recuperar las UMI para Azure SQL Managed Instance o Azure SQL Database, use los siguientes ejemplos de PowerShell o la CLI de Azure.
  • Para recuperar la SMI para Azure SQL Managed Instance, use los siguientes ejemplos de PowerShell o la CLI de Azure.

Establecimiento de una identidad administrada en Azure Portal

Para establecer la identidad administrada por el usuario para el servidor lógico de Azure SQL Database o Azure SQL Managed Instance en Azure Portal:

  1. Vaya al recurso de SQL Server o SQL Managed Instance.
  2. En Seguridad, seleccione la opción Identidad.
  3. En Identidad administrada asignada por el usuario, seleccione Agregar.
  4. Seleccione una suscripción y, a continuación, en Identidad principal, seleccione una identidad administrada para la suscripción. Después, elija el botón Seleccionar.

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

Creación o establecimiento de una identidad administrada con la CLI de Azure

La CLI de Azure 2.26.0 o posterior es necesaria para ejecutar estos comandos con una UMI.

Identidad administrada de Azure SQL Database mediante la CLI de Azure

  • Para aprovisionar un nuevo servidor con una identidad administrada asignada por el usuario, utilice el comando az sql server create.

  • Para obtener las identidades administradas de un servidor lógico, use el comando az sql server show.

    • Por ejemplo, para recuperar las identidades administradas asignadas por el usuario de un servidor lógico, busque la principalId de cada uno:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Para recuperar la identidad administrada asignada por el sistema de un servidor lógico de Azure SQL Database:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Para actualizar la configuración del servidor de la UMI, use el comando az sql server update.

Identidad administrada de Azure SQL Managed Instance mediante la CLI de Azure

  • Para aprovisionar una nueva instancia administrada con una UMI, use el comando az sql mi create.

  • Para obtener las identidades administradas asignadas por el sistema y asignadas por el usuario de las instancias administradas, use el comando az sql mi show.

    • Por ejemplo, para recuperar las UMI de una instancia administrada, busque el principalId de cada una:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Para recuperar la SMI de una instancia administrada:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Para actualizar la configuración de la instancia administrada de la UMI, use el comando az sql mi update.

Creación o establecimiento de una identidad administrada con PowerShell

Se requiere el módulo Az.Sql 3.4 o una versión posterior para usar PowerShell con una UMI. Se recomienda la versión más reciente de PowerShell o usar Azure Cloud Shell en Azure Portal.

Identidad administrada de Azure SQL Database mediante PowerShell

  • Para aprovisionar un nuevo servidor con una UMI, use el comando New-AzSqlServer.

  • Para obtener las identidades administradas de un servidor lógico, use el comando Get-AzSqlServer.

    • Por ejemplo, para recuperar las UMI de un servidor lógico, busque el principalId de cada una:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Para recuperar la SMI de un servidor lógico de Azure SQL Database:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Para actualizar la configuración del servidor de la UMI, use el comando Set-AzSqlServer.

Identidad administrada de Azure SQL Managed Instance mediante PowerShell

  • Para aprovisionar una nueva instancia administrada con una UMI, use el comando New-AzSqlInstance.

  • Para obtener las identidades administradas de una instancia administrada, use el comando Get-AzSqlInstance.

    • Por ejemplo, para recuperar las UMI de una instancia administrada, busque el principalId de cada una:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Para recuperar la SMI de una instancia administrada:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Para actualizar la configuración de la instancia administrada de la UMI, use el comando Set-AzSqlInstance.

Creación o establecimiento de una identidad administrada con la API de REST

Para actualizar la configuración de la UMI para el servidor, puede usar también el script de aprovisionamiento de la API de REST usado en Creación de un servidor lógico mediante una identidad administrada asignada por el usuario o Creación de una instancia administrada mediante una identidad administrada asignada por el usuario. Vuelva a ejecutar el comando de aprovisionamiento de la guía con la propiedad de identidad administrada asignada por el usuario actualizada que desea actualizar.

Creación o establecimiento de una identidad administrada con una plantilla de ARM

Para actualizar la configuración de la UMI para el servidor, puede usar también la plantilla de Azure Resource Manager (plantilla de ARM) usada en Creación de un servidor lógico mediante una identidad administrada asignada por el usuario o Creación de una instancia administrada mediante una identidad administrada asignada por el usuario. Vuelva a ejecutar el comando de aprovisionamiento de la guía con la propiedad de identidad administrada asignada por el usuario actualizada que desea actualizar.

Nota:

No puede cambiar el administrador ni la contraseña del servidor ni el administrador de Microsoft Entra al volver a ejecutar el comando de aprovisionamiento para la plantilla de ARM.

Limitaciones y problemas conocidos

  • Después de crear una instancia administrada, la página de administración de Microsoft Entra para su instancia administrada en el Azure portal muestra una advertencia: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Si ha concedido a la UMI los permisos adecuados descritos anteriormente en este artículo, puede omitir esta advertencia.
  • Si usa una SMI o una UMI como identidad de servidor o instancia, la eliminación de la identidad hará que el servidor o la instancia no puedan acceder a Microsoft Graph. Se producirá un error con la autenticación de Microsoft Entra y otras funciones. Para restaurar la funcionalidad de Microsoft Entra, se debe asignar una nueva SMI o UMI al servidor con los permisos adecuados.
  • Para conceder permisos de acceso a Microsoft Graph a través de una SMI o UMI, debe usar PowerShell. Estos permisos no se pueden conceder en Azure Portal.