Configurar y gestionar la autenticación de Microsoft Entra con Azure Synapse Analytics

Este artículo te muestra cómo usar Microsoft Entra ID para la autenticación con Azure Synapse Analytics.

Nota:

Las entidades de seguridad del servidor de Microsoft Entra están actualmente en vista previa para Azure Synapse Analytics.

Prerequisites

Para utilizar la autenticación Microsoft Entra con Azure Synapse Analytics, necesitas los siguientes requisitos previos:

  • Un entorno de Microsoft Entra poblado con usuarios y grupos.
  • Un espacio de trabajo existente en Azure Synapse o un pool SQL dedicado independiente.

Crear y poblar un tenant de Microsoft Entra

Antes de poder configurar la autenticación de Microsoft Entra para Azure Synapse Analytics, necesitas crear un tenant de Microsoft Entra y llenarlo con usuarios y grupos. Puedes gestionar los directorios de Microsoft Entra completamente dentro de Azure o usarlos para la federación de un servicio Dominio de Active Directory Services local.

Para obtener más información, consulte:

Configurar administrador de Microsoft Entra

Para utilizar la autenticación Microsoft Entra, tu recurso de Azure Synapse necesita un administrador de Microsoft Entra.

También puedes configurar el administrador de Microsoft Entra cuando crees el recurso. Si ya tienes un administrador configurado, sáltate esta sección.

Área de trabajo de Azure Synapse

Para un espacio de trabajo de Azure Synapse, configura el administrador de Microsoft Entra en el espacio de trabajo. Para obtener más información, consulte Estructura del administrador.

Pool SQL dedicado independiente

Cuando configuras el administrador de Microsoft Entra, activas la autenticación de Microsoft Entra para el servidor lógico que aloja un pool SQL dedicado independiente. Puedes configurar el administrador usando el portal de Azure, PowerShell, CLI de Azure o APIs REST.

En el portal de Azure, puede encontrar el nombre del servidor lógico

  • En el campo nombre del servidor de la página de Información general de su grupo SQL dedicado independiente en Azure Synapse Analytics.

Para establecer el administrador de Microsoft Entra para el servidor lógico en el portal de Azure, siga estos pasos:

  1. En el panel de Directorios + suscripciones del portal de Azure, elige el directorio que contiene tu recurso de Azure Synapse como directorio Actual.

  2. Busca servidores SQL y luego selecciona el servidor lógico para tu grupo de SQL dedicado para abrir el panel Servidor SQL.

  3. En el panel SQL del servidor lógico, seleccione Microsoft Entra ID en Settings para abrir el panel Microsoft Entra ID.

  4. En el panel Microsoft Entra ID, seleccione Set admin para abrir el panel Microsoft Entra ID.

  5. El panel Microsoft Entra ID muestra todos los usuarios, grupos y aplicaciones del directorio actual y le permite buscar por nombre, alias o identificador. Busque la identidad deseada para el administrador de Microsoft Entra y selecciónela y, después, seleccione Select para cerrar el panel.

  6. En la parte superior de la página Microsoft Entra ID del servidor lógico, seleccione Guardar.

    El Object ID se muestra junto al nombre de administrador para los usuarios y grupos de Microsoft Entra. En el caso de las aplicaciones (entidades de servicio), se muestra el identificador de la aplicación.

El proceso de cambio del administrador puede tardar varios minutos. A continuación, el nuevo administrador aparece en el campo Microsoft Entra admin.

Para quitar al administrador, en la parte superior de la página Microsoft Entra ID, seleccione Quitar administrador, luego seleccione Guardar. Al quitar el administrador de Microsoft Entra, se deshabilita la autenticación de Microsoft Entra para el servidor lógico.

Nota:

El administrador de Microsoft Entra se almacena en la base de datos master del servidor como usuario (principal de base de datos). Dado que los nombres principales de la base de datos deben ser únicos, el nombre para mostrar del administrador no puede ser el mismo que el nombre de ningún usuario de la base de datos del master servidor. Si ya existe un usuario con ese nombre, la configuración del administrador de Microsoft Entra falla y se revierte, indicando que el nombre ya está en uso.

Asignación de permisos de Microsoft Graph

Para algunas operaciones, Azure Synapse Analytics requiere permisos para consultar Microsoft Graph, como se explica en los permisos de Microsoft Graph. Azure Synapse Analytics soporta permisos detallados de Microsoft Graph API como User.Read.All, GroupMember.Read.All, y Application.Read.All sobre la identidad del recurso. Este enfoque sigue el principio de privilegios mínimos y se recomienda. También puedes usar el rol de Lectores del Directorio como una alternativa más amplia. Para más información, consulta Identidades gestionadas en Microsoft Entra para Azure Synapse Analytics.

El rol de Lectores de directorio

Para un procedimiento guiado, consulte Asignar el rol de Directory Readers a un grupo Microsoft Entra.

El siguiente script de PowerShell añade una identidad de recurso de Azure Synapse al rol de Directory Readers.

# This script grants "Directory Readers" permission to an Azure Synapse service principal.
# It can be executed only by a user who is a member of the **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$instanceName = "<InstanceName>"        # Enter the name of your managed instance or server
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"

# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your logical server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$instanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($instanceName)' found, make sure that instanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($instanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($instanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($instanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($instanceName)' is already member of 'Directory Readers' role."
}

El administrador de Microsoft Entra ahora puede crear las entidades de seguridad del servidor de Microsoft Entra (inicios de sesión) y las entidades de seguridad de la base de datos (usuarios).

Crear principales de Microsoft Entra en SQL

Para conectarte a una base de datos en Azure Synapse Analytics con autenticación de Microsoft Entra, necesitas configurar una entidad de seguridad en la base de datos para esa identidad con al menos el permiso CONNECT.

Permisos de usuario de base de datos

Cuando creas un usuario de base de datos, recibe el permiso CONNECT para la base de datos por defecto. Un usuario de base de datos también hereda los permisos en dos circunstancias:

  • El usuario es miembro de un grupo Microsoft Entra al que también se le han asignado permisos en el servidor.
  • Creas al usuario a partir de un inicio de sesión, y el usuario hereda los permisos asignados por el servidor del inicio de sesión que se aplican a la base de datos.

La administración de permisos para principales de servidor y base de datos funciona igual independientemente del tipo de principal (Microsoft Entra ID, autenticación SQL, etc.). Otorgue permisos a los roles de la base de datos en lugar de otorgar permisos directamente a los usuarios. Luego añade usuarios a los roles con los permisos adecuados. Este enfoque simplifica la gestión de permisos a largo plazo y reduce la probabilidad de que una identidad conserve el acceso cuando ya no es apropiado.

Para obtener más información, consulte:

Usuarios de bases de datos independientes

Un usuario de base de datos contenido es un tipo de usuario SQL que no está conectado a un inicio de sesión en la base de datos master. Para crear un usuario de base de datos contenida en Microsoft Entra, conéctate a la base de datos con una identidad de Microsoft Entra que tenga al menos el permiso ALTER ANY USER. El siguiente ejemplo de T-SQL crea un principal de base de datos nombrado Microsoft_Entra_principal_name a partir de Microsoft Entra ID.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Para crear un usuario de base de datos contenido para un grupo de Microsoft Entra, escriba el nombre para mostrar del grupo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

A fin de crear un usuario de base de datos contenido para una identidad administrada o un principal de servicio, escriba el nombre para mostrar de la identidad:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Para crear un usuario de base de datos contenido para un usuario de Microsoft Entra, introduzca el nombre principal de usuario de la identidad:

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;

Usuarios basados en credenciales de inicio de sesión

Nota:

Las entidades de seguridad del servidor de Microsoft Entra (inicios de sesión SQL) están actualmente en vista previa para Azure Synapse Analytics.

Microsoft Entra principales del servidor (o inicios de sesión) son admitidos, lo que significa que los usuarios de bases de datos contenidos no son necesarios. Las entidades de seguridad de base de datos (usuarios) se pueden crear en función de una entidad de seguridad de servidor, lo que significa que los usuarios de Microsoft Entra pueden heredar permisos asignados de nivel de servidor asociados con un inicio de sesión.

CREATE USER [appName] FROM LOGIN [appName];

Para obtener la sintaxis sobre la creación de principales de servidor (inicios de sesión) de Microsoft Entra, consulte CREATE LOGIN.

Usuarios externos

No se puede crear directamente un usuario de base de datos para una identidad gestionada en un tenant de Microsoft Entra diferente al asociado a la suscripción de Azure. Sin embargo, puedes importar usuarios de otros directorios al directorio asociado como usuarios externos. Luego puedes usarlos para crear usuarios de base de datos contenida que puedan acceder a la base de datos. Los usuarios externos también pueden obtener acceso a través de la pertenencia a grupos de Microsoft Entra.

Examples: Para crear un usuario de base de datos independiente que represente un usuario de dominio federado o administrado de Microsoft Entra:

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
  • Una cuenta de usuario de dominio federado que importes a un dominio gestionado como usuario externo debe usar la identidad de dominio gestionado.

Consideraciones sobre nombres

No puedes usar caracteres especiales como dos puntos : o ampersand & en los nombres de usuario para las sentencias de T-SQL CREATE LOGIN y CREATE USER.

Microsoft Entra ID y Azure Synapse Analytics difieren en su diseño de administración de usuarios en un aspecto clave: Microsoft Entra ID permite nombres para mostrar duplicados dentro de un tenant, mientras que Azure Synapse Analytics requiere nombres de entidad de seguridad de servidor únicos en un grupo de SQL dedicado y nombres de entidad de seguridad de base de datos únicos en una base de datos.

Permisos de Microsoft Graph

El CREATE USER ... FROM EXTERNAL PROVIDER comando requiere que Azure Synapse Analytics acceda a Microsoft Entra ID (el proveedor externo) en nombre del usuario iniciado sesión. A veces, Microsoft Entra ID devuelve una excepción.

  • Es posible que encuentre el error 33134 de SQL, que contiene el mensaje de error específico del Microsoft Entra ID. El error suele indicar que se deniega el acceso, que el usuario debe inscribirse en MFA para acceder al recurso, o que el acceso entre las aplicaciones propias debe controlarse con autorización previa. En los dos primeros casos, el problema suele deberse a directivas de acceso condicional que se establecen en el inquilino de Microsoft Entra del usuario: impiden que el usuario acceda al proveedor externo. Actualizar las políticas de Acceso Condicional para permitir el acceso a la aplicación 00000003-0000-0000-c000-000000000000 (el ID de aplicación de la Microsoft Graph API) debería resolver el problema. Si el error indica que el acceso entre las aplicaciones propias debe controlarse con autorización previa, el problema se debe a que el usuario ha iniciado sesión como entidad de servicio. El comando debería tener éxito si es ejecutado por un usuario.
  • Si recibe un Tiempo de espera de conexión expirado, es posible que tenga que establecer el parámetro TransparentNetworkIPResolution del cadena de conexión en false. Para obtener más información, consulte Problema de tiempo de espera de conexión con .NET Framework 4.6.1 - TransparentNetworkIPResolution.

Para obtener más información sobre cómo crear usuarios de base de datos independientes basados en identidades de Microsoft Entra, vea CREATE USER.

Configuración de la autenticación multifactor

Para mejorar la seguridad, considera configurar la autenticación multifactor (MFA), que solicita al usuario que utilice un segundo método para autenticarse en la base de datos, como una llamada telefónica o una aplicación de autenticación.

Para usar la autenticación multifactor con Azure Synapse Analytics, primero habilita la autenticación multifactor y luego utiliza una política de Acceso Condicional para hacer cumplir la MFA.

Conexión con Microsoft Entra

Una vez configurada la autenticación de Microsoft Entra, puedes usarla para conectarte a Azure Synapse Analytics con SQL Server Management Studio o SQL Server Data Tools, y configurar aplicaciones cliente para que se conecten usando identidades de Microsoft Entra.

Solución de problemas de autenticación de Microsoft Entra

Para orientación, véase Solucionar problemas relacionados con la autenticación de Microsoft Entra.