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
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"
Después de editar este archivo, reinicie el servicio de red:
sudo systemctl restart network
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>
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:
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:
Si la instalación del paquete de cliente Kerberos solicita un nombre de dominio Kerberos, escriba el nombre de dominio en mayúsculas.
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.
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
devuelveNo such user
, asegúrese de que el servicio SSSD se ha iniciado correctamente mediante la ejecución del comandosudo 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
devuelveKDC 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.