Tutorial: Configurar la autenticación de Microsoft Entra para SQL Server

Se aplica a: SQL Server 2022 (16.x)

En este artículo se describe detalladamente cómo configurar la autenticación con Microsoft Entra ID y demuestra cómo usar los distintos métodos de autenticación de Microsoft Entra.

Nota:

Microsoft Entra ID conocido anteriormente como Azure Active Directory (Azure AD).

En este tutorial, aprenderá a:

  • Creación y registro de una aplicación de Microsoft Entra
  • Conceder permisos a la aplicación Microsoft Entra
  • Crear y asignar un certificado
  • Configurar la autenticación de Microsoft Entra para SQL Server a través de Azure Portal
  • Crear de inicios de sesión y usuarios
  • Conectar con un método de autenticación compatible

Requisitos previos

Requisitos previos de autenticación

Nota:

Se implementó una función extendida en Azure para permitir la creación automática del certificado Azure Key Vault y la aplicación Microsoft Entra durante la configuración de un administrador de Microsoft Entra para el servidor SQL Server. Para más información, consulta Tutorial: Usar de la automatización para configurar el administrador de Microsoft Entra para SQL Server.

  • Registro de aplicación con Microsoft Entra para SQL Server. El registro de una instancia de SQL Server como aplicación de Microsoft Entra permite a la instancia consultar Microsoft Entra ID y a la aplicación de Microsoft Entra autenticarse en nombre de la instancia de SQL Server. El registro de aplicación también requiere algunos permisos, que SQL Server usa para determinadas consultas.

  • SQL Server usa un certificado para esta autenticación, que se almacena en Azure Key Vault (AKV). El agente de Azure Arc descarga el certificado en el host de instancia de SQL Server.

Advertencia

Las conexiones autenticadas por Microsoft Entra ID siempre se cifran. Si SQL Server usa un certificado autofirmado, debe agregar trust server cert = true en la cadena de conexión. Las conexiones autenticadas por SQL Server y Windows no requieren cifrado, pero es muy recomendable.

Creación y registro de una aplicación de Microsoft Entra

  1. Ve a Azure Portal, selecciona Microsoft Entra ID>Registros de aplicaciones>Nuevo registro.
    1. Especifica un nombre: en el ejemplo de este artículo se usa SQLServerCTP1.
    2. Seleccione Tipos de cuenta admitidos, y utilice Solo las cuentas de este directorio organizativo
    3. No establezca un URI de redireccionamiento
    4. Seleccione Registrar.

Consulte este registro de la aplicación:

Screenshot of registering application in the Azure portal.

Conceder permisos de aplicación

Seleccione la aplicación recién creada y, en el menú izquierdo, seleccione Permisos de API.

  1. Seleccione Agregar un permiso>Microsoft Graph>Permisos de la aplicación

    1. Compruebe Directory.Read.All
    2. Seleccione Agregar permisos.
  2. Seleccione Agregar permiso>Microsoft Graph>Permisos delegados

    1. Compruebe Application.Read.All
    2. Compruebe Directory.AccessAsUser.All
    3. Compruebe Group.Read.All
    4. Compruebe User.Read.All
    5. Seleccione Agregar permisos.
  3. Selecciona Conceder consentimiento de administrador

Screenshot of application permissions in the Azure portal.

Nota:

Para conceder consentimiento del administrador para los permisos anteriores, tu cuenta de Microsoft Entra requiere un rol de administrador global o administrador de roles con privilegios.

Crear y asignar un certificado

  1. Vaya a Azure Portal, seleccione Almacenes de claves y seleccione el almacén de claves que desea usar o cree uno nuevo. Seleccione Certificados>Generar o importar

    1. Para el método de creación de certificados, use Generar.

    2. Añada un nombre de certificado y un asunto.

    3. El período de validez recomendado es de 12 meses como máximo. Los demás valores se pueden dejar con los valores predeterminados.

    4. Seleccione Crear.

    Screenshot of creating certificate in the Azure portal.

    Nota:

    Una vez creado el certificado, puede indicar que está deshabilitado. Actualice el sitio y mostrará el certificado como habilitado.

  2. Vaya al nuevo certificado y seleccione la fila de la versión más reciente del certificado. Seleccione Descargar en formato CER para guardar la clave pública del certificado.

    Screenshot of certificate in the Azure portal where you can view and download the certificate.

    Nota:

    No es necesario hacerlo en el host de SQL Server. En su lugar, puede hacerlo cualquier cliente que acceda al Azure Portal para el paso siguiente.

  3. En el Azure Portal, vaya al registro de la aplicación creado anteriormente y seleccione Lista de certificados

    1. Seleccione Cargar certificado.
    2. Seleccione la clave pública (archivo .cer) descargada en el último paso.
    3. Seleccione Agregar.

    Screenshot of certificate and secrets menu in the Azure portal.

  4. En el Azure portal, vaya a la instancia de Azure Key Vault donde se almacena el certificado y seleccione Directivas de acceso en el menú de navegación.

    1. Seleccione Crear.

    2. En Permisos de secretos, seleccione Obtener y enumerar.

    3. Para los permisos de certificado, seleccione Obtener y enumerar.

    4. Seleccione Siguiente.

    5. En la página Entidad de seguridad, busque el nombre de su instancia de Máquina: Azure Arc, que es el nombre de host del host de SQL Server.

      Screenshot of Azure Arc server resource in portal.

    6. Omita la página Aplicación (opcional) seleccionando Siguiente dos veces o seleccionando Revisar y crear.

      Compruebe que el "Id. de objeto" de la Entidad de seguridad coincida con el identificador de entidad de seguridad de la identidad administrada asignada a la instancia.

      Screenshot of Azure portal to review and create access policy.

      Para confirmarlo, vaya a la página de recursos y seleccione Vista JSON en la parte superior derecha del cuadro Essentials de la página de información general. En identidad, encontrará el principalId

      Screenshot of portal control of JSON view of machine definition.

    7. Seleccione Crear.

    Debe seleccionar Crear para asegurarse de que se aplican los permisos. Para asegurarse de que los permisos se han almacenado, actualice la ventana del explorador y compruebe que la fila de su instancia de Azure Arc sigue presente.

    Screenshot of adding access policy to the key vault in the Azure portal.

Configurar la autenticación de Microsoft Entra para SQL Server a través de Azure Portal

Nota:

Para configurar un administrador de Microsoft Entra para SQL Server, puedes usar la CLI de Azure, PowerShell o la plantilla de ARM.

  1. Vaya al Azure Portal, seleccione SQL Server: Azure Arc y seleccione la instancia del host de SQL Server.

  2. Compruebe el estado del recurso SQL Server: Azure Arc y compruebe si está conectado; para ello, vaya al menú Propiedades. Para más información, consulte Validación de los recursos de SQL Server: Azure Arc.

  3. Seleccione Microsoft Entra ID y Purview dentro de Configuración en el menú del recurso.

  4. Selecciona Establecer administrador para abrir el panel de Microsoft Entra ID y, a continuación, elige una cuenta que se configurará como inicio de sesión de administrador para SQL Server.

  5. Seleccione Certificado administrado por el cliente y Seleccione un certificado.

  6. Seleccione Cambiar certificado y seleccione la instancia AKV y el certificado que creó anteriormente en el nuevo panel.

  7. Seleccione Registro de aplicaciones administradas por el cliente.

  8. Seleccione Cambiar el registro de aplicaciones y seleccione el registro de la aplicación que ha creado anteriormente.

  9. Seleccione Guardar. Esto envía una solicitud al agente del servidor Arc, que configura la autenticación de Microsoft Entra para esa instancia de SQL Server.

    Screenshot of setting Microsoft Entra authentication in the Azure portal.

    La descarga de los certificados y la configuración de los valores tarda varios minutos. Después de establecer todos los parámetros y seleccionar Guardar en el Azure Portal, puede aparecer el siguiente mensaje: SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing. Espera hasta que el proceso de guardado se confirme con Saved successfully, antes de intentar un inicio de sesión de Microsoft Entra.

    El agente de servidor de Azure Arc solo puede actualizar una vez completada la acción anterior. Esto significa que si se guarda una nueva configuración de Microsoft Entra antes de que se haya finalizado el último, puede provocar un error. Si ve el mensaje Error en la llamada extendida al seleccionar Guardar, espere 5 minutos y vuelva a intentarlo.

    Nota:

    Una vez que al inicio de sesión del administrador de Microsoft Entra se le concede el rol de sysadmin, cambiar el administrador de Microsoft Entra en el Azure Portal no elimina el inicio de sesión anterior que permanece como sysadmin. Para eliminar el inicio de sesión, debe eliminarse manualmente.

    El cambio de administrador de Microsoft Entra para la instancia de SQL Server se produce sin reiniciar el servidor, una vez completado el proceso con el agente Azure Arc de SQL Server. Para que el nuevo administrador se muestre en sys.server_principals, la instancia de SQL Server debe reiniciarse y, mientras tanto, se mostrará el antiguo administrador. El administrador actual de Microsoft Entra puede comprobarse en el Azure Portal.

Crear de inicios de sesión y usuarios

Una vez que el agente de Azure Arc en el host de SQL Server haya completado su operación, la cuenta de administrador seleccionada en el menú Microsoft Entra ID del portal será sysadmin del sistema en la instancia de SQL Server. Inicia sesión en SQL Server con la cuenta de administrador de Microsoft Entra que tiene permisos sysadmin de sistemas en el servidor mediante un cliente como SSMS o Azure Data Studio.

Nota:

Todas las conexiones a SQL Server que se realizan con la autenticación de Microsoft Entra requieren una conexión cifrada. Si el administrador de bases de datos (DBA) no ha configurado un certificado SSL/TLS de confianza para el servidor, es probable que se produzca un error en los inicios de sesión con el mensaje La cadena de certificados la emitió una entidad que no es de confianza. Para corregirlo, configure la instancia de SQL Server para que use un certificado SSL/TLS que sea de confianza para el cliente o seleccione certificado de servidor de confianza en las propiedades de conexión avanzadas. Para más información, vea Habilitación de conexiones cifradas en Motor de base de datos.

Creación de la sintaxis de inicio de sesión

Ahora se puede usar en SQL Server la misma sintaxis para crear inicios de sesión y usuarios de Microsoft Entra en Azure SQL Database y Azure SQL Managed Instance.

Nota:

En SQL Server, cualquier cuenta que tenga el permiso ALTER ANY LOGIN o ALTER ANY USER puede crear inicios de sesión o usuarios de Microsoft Entra, respectivamente. La cuenta no necesita ser un inicio de sesión de Microsoft Entra.

Para crear un inicio de sesión de una cuenta de Microsoft Entra, ejecuta el siguiente comando T-SQL en la base de datos master:

CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;

Para los usuarios, el nombre de la entidad de seguridad debe tener el formato user@tenant.com. En Microsoft Entra ID, este es el nombre principal de usuario. Para todos los demás tipos de cuenta, como los grupos o las aplicaciones de Microsoft Entra, el nombre de la entidad de seguridad es el nombre del objeto de Microsoft Entra.

A continuación, se ponen algunos ejemplos:

-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO

Para enumerar los inicios de sesión de Microsoft Entra en la base de datos master, ejecuta el comando T-SQL:

SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');

Para conceder a un usuario de Microsoft Entra la pertenencia al rol sysadmin (por ejemplo admin@contoso.com), ejecuta los siguientes comandos en master:

CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER; 
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO

El procedimiento almacenado sp_addsrvrolemember debe ejecutarse como miembro del rol del servidor sysadmin de SQL Server.

Creación de la sintaxis de usuario

Puedes crear un usuario de base de datos a partir de Microsoft Entra ID como usuario de base de datos asociado a una entidad de seguridad de servidor (inicio de sesión) o como usuario de base de datos independiente.

Para crear un usuario de Microsoft Entra a partir del inicio de sesión de Microsoft Entra en una base de datos de SQL Server, usa la sintaxis siguiente:

CREATE USER [principal_name] FROM LOGIN [principal_name];

La sintaxis principal_name es la misma que para los inicios de sesión.

Estos son algunos ejemplos:

-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO

Para crear un usuario de base de datos independiente de Microsoft Entra, que es un usuario que no está vinculado a un inicio de sesión de servidor, se puede ejecutar la sintaxis siguiente:

CREATE USER [principal name] FROM EXTERNAL PROVIDER;

Usa el nombre del grupo de Microsoft Entra o el nombre de aplicación de Microsoft Entra como <principal name> al crear un usuario de base de datos de Microsoft Entra a partir de un grupo o aplicación.

Estos son algunos ejemplos:

-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO

Para enumerar los usuarios creados en la base de datos, ejecute el siguiente comando de T-SQL:

SELECT * FROM sys.database_principals;

Un nuevo usuario de base de datos recibe el permiso Connect de manera predeterminada. Todos los demás permisos de SQL Server deben ser concedidos explícitamente por otorgantes autorizados.

Cuenta de invitado de Microsoft Entra

La sintaxis CREATE LOGIN y CREATE USER también admite usuarios invitados. Por ejemplo, si se invita a testuser@outlook.com a la cuenta empresarial contoso.com, se puede agregar como inicio de sesión a SQL Server con la misma sintaxis que cualquier otro usuario o inicio de sesión de Microsoft Entra. Al crear usuarios invitados e inicios de sesión, use el correo electrónico de origen de la cuenta de invitado, no su nombre principal de usuario en el inquilino. En los ejemplos, se proporciona outlook.com aunque la cuenta está registrada en la cuenta empresarial contoso.com.

Crear un usuario invitado a partir de un inicio de sesión existente

CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];

Creación de un usuario invitado como usuario contenido

CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;

Conectar con un método de autenticación compatible

SQL Server admite varios métodos de autenticación de Microsoft Entra:

  • Valor predeterminado
  • Nombre de usuario y contraseña
  • Integrado
  • Universal con autenticación multifactor
  • Entidad de servicio
  • Identidad administrada
  • Access token

Utilice uno de estos métodos para conectarse a la instancia de SQL Server. Para más información, consulta Autenticación de Microsoft Entra para SQL Server.

Ejemplo de autenticación utilizando SSMS

Nota:

Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.

A continuación se muestra la instantánea|instantánea de la página de conexión de SQL Server Management Studio (SSMS) con el método de autenticación Azure Active Directory - Universal con MFA.

Screenshot SSMS showing the Connect to Server window.

Durante el proceso de autenticación, en SSMS debe indicarse explícitamente la base de datos donde se creó el usuario. Expanda Opciones> Propiedades de conexión > Conectar a la base de datos: database_name.

Para más información, consulte Uso de la autenticación multifactor de Microsoft Entra.

Las herramientas de SQL Server que admiten la autenticación de Microsoft Entra para Azure SQL también son compatibles con SQL Server 2022 (16.x).

Ubicación donde se almacenan los parámetros de Microsoft Entra ID

Advertencia

Los parámetros de Microsoft Entra ID se configuran con el agente de Azure Arc, y no se deben volver a configurar manualmente.

En Linux, los parámetros de Microsoft Entra ID se almacenan en mssql-conf. Para más información sobre las opciones de configuración en Linux, consulta Configurar SQL Server en Linux con la herramienta mssql-conf.

Problemas conocidos

  • La actualización del certificado no se propaga:
    • Una vez configurada la autenticación de Microsoft Entra para SQL Server, es posible que la actualización del certificado en el panel Microsoft Entra ID y Purview del recurso SQL Server - Azure Arc no se propague completamente. Esto hace que se guarde correctamente, pero se siga mostrando el valor anterior. Para actualizar el certificado, realice estos pasos:

      • Seleccione Quitar Administración.
      • Seleccione Guardar.
      • Selecciona Establecer administración y vuelve a configurar la autenticación de Microsoft Entra con el nuevo certificado.
      • Seleccione Guardar.

Consulte también