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 emplear proveedores ajenos de Active Directory. 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, Sin embargo, no está concebida para proporcionar instrucciones sobre cómo unir un equipo a un dominio cuando se usan utilidades de terceros.

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 describen 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. Se recomienda que se ponga en contacto con los administradores del sistema y del dominio del entorno para obtener información concreta de utillaje, configuración, personalización y solución de problemas necesaria.

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.

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.

Si se produce un error en cualquiera de estas comprobaciones de nombre, actualice la lista de búsqueda de dominios. En las secciones siguientes se proporcionan instrucciones para Ubuntu, Red Hat Enterprise Linux (RHEL) y SUSE Linux Enterprise Server (SLES), respectivamente.

Ubuntu 16.04

  1. Edite el archivo /etc/network/interfaces para que el dominio de Active Directory esté en la lista de búsqueda de dominios:

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers <Domain controller IP address>
    dns-search <Active Directory domain name>
    

    Nota

    La interfaz de red, eth0, puede diferir en los distintos equipos. Para averiguar cuál es la que está usando, ejecute ifconfig. Luego, copie la interfaz que tiene una dirección IP y bytes transmitidos y recibidos.

  2. Después de editar este archivo, reinicie el servicio de red:

    sudo ifdown eth0 && sudo ifup eth0
    
  3. Luego, compruebe que el archivo /etc/resolv.conf contiene una línea similar a la del ejemplo siguiente:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Ubuntu 18.04

  1. Edite el archivo [sudo vi /etc/netplan/******.yaml], de modo que el dominio de Active Directory esté en la lista de búsqueda de dominios:

    network:
      ethernets:
        eth0:
                dhcp4: true
    
                dhcp6: true
                nameservers:
                        addresses: [<Domain controller IP address>]
                        search: [<Active Directory domain name>]
      version: 2
    

    Nota

    La interfaz de red, eth0, puede diferir en los distintos equipos. Para averiguar cuál es la que está usando, ejecute ifconfig. Luego, copie la interfaz que tiene una dirección IP y bytes transmitidos y recibidos.

  2. Después de editar este archivo, reinicie el servicio de red:

    sudo netplan apply
    
  3. Luego, compruebe que el archivo /etc/resolv.conf contiene una línea similar a la del ejemplo siguiente:

    search contoso.com com
    nameserver <Domain controller IP address>
    

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:

    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:

    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:

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

SLES 12

  1. Edite el archivo /etc/sysconfig/network/config para que la dirección IP del controlador de dominio se use para las consultas de DNS y el dominio de Active Directory esté en la lista de búsqueda de dominios:

    NETCONFIG_DNS_STATIC_SEARCHLIST=""
    NETCONFIG_DNS_STATIC_SERVERS="<Domain controller IP address>"
    
  2. Después de editar este archivo, reinicie el servicio de red:

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

    search contoso.com com
    nameserver <Domain controller IP address>
    

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.

Nota

Este es el método preferido para unir un host de Linux a un controlador de dominio de 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
    

    SLES 12:

    Estos pasos son específicos para SLES 12.

    sudo zypper addrepo https://download.opensuse.org/repositories/network/SLE_12/network.repo
    sudo zypper refresh
    sudo zypper install realmd krb5-client sssd-ad
    

    Ubuntu 16.04:

    sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit
    

    Ubuntu 18.04:

    sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
    sudo apt-get install adcli libpam-sss libnss-sss sssd sssd-tools
    
  2. Si la instalación del paquete de cliente Kerberos solicita un nombre de dominio Kerberos, escriba el nombre de dominio en mayúsculas.

  3. 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 el comando anterior, 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.

  4. 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
    

    Nota

    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-confnetwork.disablesssd en la sección Opciones de configuración adicionales del artículo Usar 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:

[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.