Compartir vía


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

Se aplica a: SQL Server - Linux

En este artículo se proporcionan instrucciones generales para unir un equipo host de Linux de SQL Server a un dominio de Active Directory. Hay dos métodos: usar un paquete SSSD integrado o proveedores de Active Directory de terceros. Ejemplos de productos de unión a dominio ajenos son PowerBroker Identity Services (PBIS), One Identity 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.

Nota:

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.

Requisitos previos

Antes de configurar la autenticación de Active Directory, debe configurar un controlador de dominio de Active Directory, Windows, en la red. Luego, una el host de SQL Server en Linux 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 diferir ligeramente en cada entorno en función de cómo esté configurado el entorno global y la versión del sistema operativo. Por ejemplo, Ubuntu 18.04 usa netplan, mientras que Red Hat Enterprise Linux (RHEL) 8.x usa nmcli, entre otras herramientas, para administrar 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.

Zonas DNS inversas (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.

Cerciórese también de que existe un registro PTR que apunta a los 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 IP del controlador de dominio también debe resolverse en el FQDN de dicho controlador de dominio:

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

Sugerencia

En este tutorial se usan contoso.com y CONTOSO.COM como nombres de ejemplo de dominio y de dominio Kerberos, respectivamente. También se usa DC1.CONTOSO.COM como nombre de dominio completo de ejemplo del 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:

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

El objetivo es configurar /etc/resolv.conf correctamente para la distribución a fin de facilitar la resolución de nombres de dominio. Por ejemplo, si el dominio es contoso.com y la dirección IP de Active Directory es 10.0.0.4, /etc/resolv.conf se debe configurar en consecuencia para garantizar una resolución correcta de nombres del 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 contenido debería tener un aspecto 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 contenido debería tener un aspecto 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 contenido debería tener un aspecto similar al ejemplo siguiente:

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

Unión al dominio de Active Directory

Una vez comprobada la configuración básica y la conectividad con el controlador de dominio, existen dos opciones para unir un equipo host de Linux de SQL Server al controlador de dominio de Active Directory:

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

Este método une el host de SQL Server a un dominio de Active Directory mediante 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.

Distribución 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 Unión a AD mediante realmd en SUSE Linux Enterprise Server 15
Ubuntu Configuración de SSSD con Active Directory

Siga los pasos siguientes para unir un host de SQL Server a un dominio de Active Directory:

  1. Use realmd para unir el equipo host al dominio de Active Directory. Primero debe instalar los paquetes de cliente realmd y Kerberos en el equipo host de SQL Server mediante el administrador de paquetes de la distribución de Linux:

    RHEL:

    sudo yum install realmd krb5-workstation
    

  1. Si la instalación del paquete de cliente Kerberos solicita un nombre de dominio Kerberos, escriba el nombre de 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 esos paquetes mediante el administrador de paquetes de la distribución de Linux antes de volver a ejecutar el comando de unión de dominio Kerberos.
    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 dominio Kerberos correcto del usuario. Los nombres de dominio Kerberos distinguen mayúsculas de minúsculas, normalmente mayúsculas, y se pueden identificar 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.

    id user@contoso.com
    
    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    
    kinit user@CONTOSO.COM
    
    Password for user@CONTOSO.COM:
    
    klist
    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 obtener más información, vea la documentación de Red Hat para detectar y unir dominios de identidad.

Opción 2: usar utilidades de proveedor de OpenLDAP 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. Antes de continuar, debe usar una de estas utilidades para unir el host de Linux para SQL Server al dominio.

SQL Server no usa el código ni la biblioteca del integrador de terceros para las consultas relacionadas 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 al dominio de Active Directory; SQL Server no tiene ninguna comunicación directa con estas utilidades.

Importante

Vea las recomendaciones sobre el uso de la opción de configuración 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 contenido debería tener un aspecto 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 del host, o si el FQDN es incorrecto, agregue una entrada DNS inversa para el host de SQL Server en Linux al servidor DNS.

Paso siguiente

En este artículo se explica cómo configurar un servidor SQL Server en un equipo host Linux con autenticación de Active Directory. Para terminar de configurar SQL Server en Linux de forma que admita cuentas de Active Directory, siga estas instrucciones.