Compartir a través de


Tutorial: Habilitación de la autenticación de Microsoft Entra para SQL Server en Windows sin Azure Arc

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

En este artículo se describe cómo autenticarse con microsoft Entra ID sin configurar Azure Arc para sql Server 2022 local y versiones posteriores. La autenticación de Microsoft Entra es un servicio de administración de identidades basado en la nube que proporciona acceso seguro a las bases de datos de SQL Server. Este tutorial le guía por el proceso de configuración de la autenticación de Microsoft Entra para SQL Server en Windows sin Azure Arc.

Nota:

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

En este tutorial, aprenderá a:

  • Agregue un certificado para SQL Server.
  • Instale adal.dll para conectarse a SQL Server.
  • Cree y registre una aplicación de ID de Microsoft Entra.
  • Conceda permisos de aplicación.
  • Cargue el certificado en la aplicación.
  • Agregue valores del Registro para habilitar la autenticación de Microsoft Entra para SQL Server.

Prerrequisitos

  • Una versión local de SQL Server 2022 o posterior.
  • Un inquilino activo de Microsoft Entra ID .
  • Esta configuración usa un registro de aplicación para asociar SQL Server con el identificador de Microsoft Entra. Siga la guía para registrar una aplicación en microsoft Entra ID.
  • Compruebe que SQL Server tiene conexión de red con Azure, específicamente con el siguiente servicio de Microsoft Entra ID y direcciones:

Obtención de un certificado

  1. Obtenga un certificado que se usará para SQL Server e impórtelo en el almacén de certificados del equipo. Se recomienda un certificado firmado por entidad de certificación.
    1. Use un nombre CN único para el certificado que no coincida con ningún certificado instalado en el almacén de certificados.

    2. Instale el certificado en el almacén de certificados del equipo. Para obtener más información, consulte Importación del certificado en el almacén de equipos local.

    3. Agregue Read permisos para la cuenta de servicio de SQL Server en el certificado.

      Captura de pantalla de las propiedades Permisos de un certificado.

Instalar adal.dll

  1. Instale adal.dll para SQL Server. Esta biblioteca es necesaria para conectarse a SQL Server con la autenticación de Microsoft Entra. Puede obtener adal.dll de la última instalación del Controlador OLE DB de Microsoft para SQL Server.

  2. Después de instalar Microsoft OLE DB Driver for SQL Server, asegúrese de que adal.dll está en la carpeta C:\windows\system32.

  3. También debe tener la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir del Registro con el valor C:\windows\system32\adal.dll. Si no existe, créelo.

    Captura de pantalla de la clave del Registro para adal.dll.

    Para obtener más información sobre el Registro de Windows, consulte Información del Registro de Windows para usuarios avanzados.

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

  • Ve a Azure Portal, selecciona Microsoft Entra ID>Registros de aplicaciones>Nuevo registro.
    1. Especificar un nombre: en el ejemplo de este artículo se usa SQLServer.
    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.

Vea el registro de la aplicación a continuación:

Captura de pantalla del registro de la aplicación en 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.

O bien,

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

    1. Compruebe Application.Read.All

    2. Compruebe Group.Read.All

    3. Compruebe User.Read.All

    4. Seleccione Agregar permisos.

  2. Selecciona Conceder consentimiento de administrador

Captura de pantalla que muestra cómo conceder consentimiento en Azure Portal.

Nota:

Para conceder consentimiento de administrador a los permisos anteriores, se requiere que la cuenta de Microsoft Entra tenga el rol de Administrador de roles con privilegios o permisos más altos.

Carga del certificado

Cargue el certificado que creó en la sección Obtención de un certificado en el .cer formato o .pem en el registro de la aplicación en Azure Portal.

Captura de pantalla que carga un certificado para la aplicación en Azure Portal.

Adición de valores del Registro para habilitar la autenticación de Microsoft Entra para SQL Server

Actualice la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication del Registro con los valores siguientes para habilitar la autenticación de Microsoft Entra para SQL Server. Un ejemplo de la ruta de acceso de la clave del Registro para SQL Server 2022 es HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication.

Advertencia

Es posible que se produzcan problemas graves si modifica el registro incorrectamente mediante el Editor del Registro o mediante otro método. Estos problemas pueden requerir la reinstalación del sistema operativo. Microsoft no puede garantizar que estos problemas se puedan solucionar. La modificación del Registro se hará bajo su propia responsabilidad.

  • Si la FederatedAuthentication clave no existe, créela con todos los valores siguientes.
  • Las cinco primeras entradas enumeradas deben actualizarse con los valores de la aplicación que creó en la sección anterior. El resto de las entradas son valores predeterminados.
  • <sql-server-certificate-name> es el nombre del certificado que creó en la sección Obtención de un certificado y cargado en Azure.
  • <application-client-id> es el identificador de aplicación (cliente) de la aplicación que creó en la sección Crear y registrar una aplicación de Id. de Microsoft Entra. Para obtener más información sobre cómo buscar el identificador de cliente, consulte Identificador de cliente.
  • <tenant-id> es el identificador de inquilino del inquilino de Azure. Puede encontrar el identificador de inquilino en el portal de Azure en Microsoft Entra ID>Descripción general.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]

"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""

Para obtener más información sobre el Registro de Windows, incluida la copia de seguridad, la edición y la restauración de claves del Registro, consulte Información del Registro de Windows para usuarios avanzados.

Prueba de la autenticación

Después de configurar el servidor y editar los valores del Registro, la autenticación de Microsoft Entra debe ser funcional. Pruebe la configuración mediante la creación de inicios de sesión con los siguientes comandos de T-SQL:

CREATE LOGIN [<admin@domain.com>] FROM EXTERNAL PROVIDER

Problemas comunes

Puede aparecer el error siguiente:

Keyset does not exist (AdalDll) with error code: 21

Este error podría deberse a problemas de permisos en el certificado. Asegúrese de que la cuenta de servicio de SQL Server tiene Read permisos en el certificado. Si el problema persiste, asegúrese de que el certificado tiene un nombre CN único que no coincide con ningún otro certificado del almacén de certificados.