Unión de SQL Server en un host de Linux a un dominio de Active Directory

Se aplica a:SQL Server en Linux

Este artículo ofrece orientación general sobre cómo unir un host Linux que ejecuta SQL Server a un dominio Active Directory. Hay dos métodos: usar un paquete SSSD integrado o proveedores de Active Directory de terceros. Ejemplos de productos de unión de dominios de terceros son PowerBroker Identity Services (PBIS),One Identity Safeguard Authentication Services (VAS) y Centrify.

En esta guía se incluyen los pasos necesarios para comprobar la configuración de Active Directory, Pero no está concebida para proporcionar instrucciones sobre cómo unir un equipo a un dominio cuando se usan utilidades de terceros.

Note

Para obtener información sobre cómo configurar Active Directory con versiones más recientes de Ubuntu, RHEL o SLES, consulte Tutorial: Configuración de la autenticación de Active Directory con SQL Server en Linux mediante adutil.

Prerequisites

Antes de configurar la autenticación de Active Directory, necesitas configurar un ordenador que ejecute Windows Server como controlador de dominio de Active Directory en tu red. Luego únete al host de Linux que ejecuta SQL Server a un dominio de Active Directory.

Los pasos de ejemplo que se describe en este artículo son solo para instrucciones y hacen referencia a los sistemas operativos Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x y SUSE Linux Enterprise Server (SLES) 12. Los pasos reales pueden variar ligeramente según tu entorno y la versión del sistema operativo. Por ejemplo, Ubuntu 18.04 usa netplan mientras que RHEL 8.x utiliza nmcli , entre otras herramientas, para gestionar y configurar la red. Debe ponerse en contacto con los administradores del sistema y del dominio del entorno para obtener información sobre herramientas concretas, configuración, personalización y la solución de problemas necesaria.

Note

A partir de SQL Server 2025 (17.x), no se admite SUSE Linux Enterprise Server (SLES).

DNS inverso (rDNS)

Al configurar un equipo que ejecuta Windows Server como controlador de dominio, puede que no tenga una zona rDNS de forma predeterminada. Asegúrese de que existe una zona de rDNS aplicable para el controlador de dominio y la dirección IP de la máquina Linux que ejecutará SQL Server.

También asegúrate de que existan registros PTR que apunten a tus controladores de dominio.

Comprobación de la conexión a un controlador de dominio

Compruebe que puede contactar con el controlador de dominio mediante el uso de los nombres cortos y completos del dominio y con el nombre de host del controlador de dominio. La dirección IP del controlador de dominio también debe resolverse al nombre de dominio totalmente calificado (FQDN) del controlador de dominio:

ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>

Tip

En este tutorial se usan contoso.com y CONTOSO.COM como nombres de ejemplo de dominio y de dominio Kerberos, respectivamente. También usa DC1.CONTOSO.COM como nombre de dominio completo de ejemplo para el controlador de dominio. Debe reemplazar estos nombres por sus propios valores.

Para garantizar una resolución de nombres de dominio adecuada, es fundamental actualizar el archivo /etc/resolv.conf si se encuentran discrepancias durante las comprobaciones de nombres. El procedimiento de actualización varía entre distribuciones; por tanto, es aconsejable consultar la documentación oficial para obtener instrucciones precisas. En la lista siguiente se proporcionan vínculos para algunas distribuciones y sus versiones clave:

Distribution Artículo de referencia
RHEL 8 Configuración manual de /etc/resolv.conf
RHEL 9 Configuración manual de /etc/resolv.conf
SLES 15 Ajustes de NETCONFIG_DNS_STATIC_SEARCHLIST y NETCONFIG_DNS_STATIC_SERVERS
Ubuntu Sección de resolución de nombres

El objetivo es configurar correctamente /etc/resolv.conf en su distribución para facilitar la resolución de nombres de dominio. Por ejemplo, si su dominio es contoso.com y la dirección IP de Active Directory es 10.0.0.4, se debe configurar /etc/resolv.conf en consecuencia para garantizar una resolución de nombres correcta desde el host.

cat /etc/resolv.conf

Este es el conjunto de resultados.

# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4

RHEL 7.x

  1. Edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 para que el dominio de Active Directory esté en la lista de búsqueda de dominios. O bien edite otro archivo de configuración de interfaz según corresponda:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    El resultado es similar al ejemplo siguiente:

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. Después de editar este archivo, reinicie el servicio de red:

    sudo systemctl restart network
    
  3. Ahora compruebe que el archivo /etc/resolv.conf contiene una línea similar a la del ejemplo siguiente:

    sudo vi /etc/resolv.conf
    

    El resultado es similar al ejemplo siguiente:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. Si todavía no puede hacer ping al controlador de dominio, busque el nombre de dominio completo y la dirección IP del controlador de dominio. Un nombre de dominio de ejemplo es DC1.CONTOSO.COM. Agregue la siguiente entrada a /etc/hosts:

    sudo vi /etc/hosts
    

    El resultado es similar al ejemplo siguiente:

    <IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
    

Unión al dominio de Active Directory

Después de verificar la configuración básica y la conectividad con el controlador de dominio, hay dos opciones para unir un host Linux que ejecute SQL Server al dominio de Active Directory:

Opción 1: usar un paquete SSSD para unir a dominio de Active Directory

Este método une el host Linux que ejecuta SQL Server a un dominio de Active Directory usando los paquetes realmd y sssd.

Este es el método preferido para unir un host de Linux a un controlador de dominio de Active Directory.

Para obtener las instrucciones más actuales, consulte la documentación oficial proporcionada por los asociados de distribución.

Distribution Artículo de referencia
RHEL 8 Detección y unión de un dominio de AD mediante SSSD
RHEL 9 Detección y unión de un dominio de AD mediante SSSD
SLES Unirse a Active Directory utilizando la pertenencia a un dominio de Windows
Ubuntu Configuración de SSSD con Active Directory

Utiliza los siguientes pasos para unir un host Linux que ejecute SQL Server a un dominio de Active Directory:

  1. Usa realmd para unir tu equipo anfitrión a tu dominio Active Directory. Primero debes instalar tanto los paquetes cliente realmd como Kerberos en el host Linux de SQL Server usando el gestor de paquetes de tu distribución Linux:

    RHEL:

    sudo yum install realmd krb5-workstation
    

  1. Si durante la instalación del paquete cliente de Kerberos se le pide un nombre de reino, introduzca el nombre de su dominio en mayúsculas.

  2. Después de confirmar que el DNS está configurado correctamente, una al dominio al ejecutar el siguiente comando. Debe autenticarse con una cuenta de Active Directory que tenga privilegios suficientes en Active Directory para unir un nuevo equipo al dominio. Este comando crea una nueva cuenta de equipo en Active Directory, crea el archivo keytab de host /etc/krb5.keytab, configura el dominio en /etc/sssd/sssd.conf y actualiza /etc/krb5.conf.

    Debido a una incidencia con realmd, establezca en primer lugar el nombre de host de la máquina en el FQDN en lugar de en el nombre de la máquina. De lo contrario, realmd podría no crear todos los SPN necesarios para la máquina y las entradas de DNS no se actualizarán automáticamente, incluso si el controlador de dominio admite actualizaciones de DNS dinámicas.

    sudo hostname <old hostname>.contoso.com
    

    Después de ejecutar este comando, el archivo /etc/hostname debe contener <old hostname>.contoso.com.

    sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
    

    Debería ver el mensaje: Successfully enrolled machine in realm.

    En la tabla siguiente se indican algunos mensajes de error que podría recibir, así como sugerencias para resolverlos:

    Mensaje de error Recomendación
    Necessary packages are not installed Instale estos paquetes con el gestor de paquetes de su distribución de Linux antes de volver a ejecutar el comando `realm join`.
    Insufficient permissions to join the domain Confirme con un administrador de dominio que dispone de permisos suficientes para unir equipos Linux al dominio.
    KDC reply did not match expectations Es posible que no haya especificado el nombre de reino correcto para el usuario. Los nombres de los reinos son sensibles a mayúsculas y minúsculas, generalmente en mayúsculas, y pueden identificarse con el comando realm discover contoso.com.

    SQL Server usa SSSD y NSS para asignar cuentas de usuario y grupos a identificadores de seguridad (SID). SSSD se debe configurar y ejecutar para que SQL Server cree inicios de sesión de Active Directory correctamente. Normalmente, realmd lo hace automáticamente como parte de la unión al dominio, pero en algunos casos se debe hacer por separado.

    Para obtener más información, vea la configuración manual de SSSD y la configuración de NSS para funcionar con SSSD.

  3. Compruebe que ahora puede recopilar información sobre un usuario del dominio y que puede adquirir un vale Kerberos como ese usuario. En el ejemplo siguiente se usan los comandos id, kinit y klist para eso.

    Úsase id para confirmar que SSSD puede resolver la pertenencia de usuarios y grupos de dominio:

    id user@contoso.com
    

    La salida debe mostrar el ID de usuario del usuario, el ID de grupo y las pertenencias a los grupos del usuario:

    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    

    Úsalo kinit para solicitar un ticket de Kerberos para el usuario del dominio:

    kinit user@CONTOSO.COM
    

    El comando debería pedir la contraseña del usuario del dominio:

    Password for user@CONTOSO.COM:
    

    Úsalo klist para verificar el ticket de Kerberos:

    klist
    

    La salida debe identificar al usuario del dominio como el principal por defecto:

    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: user@CONTOSO.COM
    

    Si id user@contoso.com devuelve No such user, asegúrese de que el servicio SSSD se ha iniciado correctamente mediante la ejecución del comando sudo systemctl status sssd. Si el servicio se está ejecutando y sigue viendo el error, intente habilitar el registro detallado para SSSD. Para obtener más información, vea la documentación de Red Hat para solucionar problemas de SSSD.

    Si kinit user@CONTOSO.COM devuelve KDC reply didn't match expectations while getting initial credentials, asegúrese de que ha especificado el dominio en mayúsculas.

Para más información, consulta la documentación de Red Hat sobre cómo descubrir y unirse a un dominio AD usando SSSD.

Opción 2: Utilizar utilidades de proveedores de Active Directory de terceros

Puede usar utilidades de terceros como PBIS, VAS o Centrify. En este artículo no se consignan los pasos para cada utilidad individual. Primero debes usar una de estas utilidades para unirte al host Linux que ejecuta SQL Server al dominio antes de continuar.

SQL Server no utiliza código ni librerías de integradores externos para ninguna consulta relacionada con Active Directory. SQL Server siempre consulta Active Directory mediante llamadas a la biblioteca OpenLDAP directamente en esta configuración. Los integradores de terceros solo se usan para unir el host de Linux a un dominio de Active Directory, y SQL Server no tiene comunicación directa con estas utilidades.

Importante

Consulte las recomendaciones para usar la opción de configuración de mssql-conf network.disablesssd en la sección Opciones de configuración adicionales del artículo Uso de la autenticación de Active Directory con SQL Server en Linux.

Compruebe que /etc/krb5.conf se ha configurado correctamente. En el caso de la mayoría de los proveedores de Active Directory ajenos, esta configuración se realiza automáticamente. No obstante, busque los siguientes valores en /etc/krb5.conf para evitar problemas futuros:

sudo vi /etc/krb5.conf

El resultado es similar al ejemplo siguiente:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM

Comprobar que el DNS inverso se ha configurado correctamente

El siguiente comando debe devolver el nombre de dominio completo (FQDN) del host que ejecuta SQL Server. Un ejemplo es SqlHost.contoso.com.

host <IP address of SQL Server host>

La salida de este comando debe ser similar a <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com. Si este comando no devuelve el FQDN de tu host, o si el FQDN es incorrecto, añade una entrada DNS inversa para el host Linux que ejecuta SQL Server a tu servidor DNS.

Paso siguiente

En este artículo, has configurado un host Linux que ejecuta SQL Server con autenticación Active Directory. Para terminar de configurar SQL Server en Linux de forma que admita cuentas de Active Directory, siga estas instrucciones.