Verificar la configuración SPN y la delegación de Active Directory para SQL Server puede ser una tarea desalentadora. Sin embargo, con los pasos adecuados, no tiene que serlo.
En este artículo, se explicará en detalle cómo verificar la configuración de SPN y delegación para una instancia de SQL Server y cómo detectar los problemas relacionados.
También se discutirán los conceptos básicos relacionados con SPN y delegación.
¿Qué es un Service Principal Name (SPN)?
Un Service Principal Name (SPN) es un identificador único que se usa para identificar un servicio de red específico, en una red local.
El SPN se utiliza para vincular un servicio de red a una cuenta de servicio.
Esto se logra mediante la creación de entradas en el directorio para dicho servicio. Estas entradas identifican la cuenta de servicio y el servicio específico en la red.
Los SPN se utilizan para la autenticación de Kerberos. Si un cliente intenta conectarse a un servicio específico, el servidor autenticará al cliente usando el SPN.
El SPN también se utiliza para la delegación de Kerberos.
La delegación de Kerberos permite que un servicio delegue la autenticación de un cliente a otro servidor. Esto se utiliza para permitir que un servicio pueda realizar operaciones en nombre de un cliente.
¿Qué es la delegación de Kerberos?
La delegación de Kerberos es un mecanismo que permite a un servicio realizar operaciones en nombre de un usuario.
Esto se logra mediante el intercambio de tokens de seguridad entre el cliente y el servidor. El servidor solicita un token de seguridad de un cliente y, a continuación, lo pasa a otro servidor.
El segundo servidor verifica el token y, si es válido, permite al primer servidor realizar operaciones en nombre del usuario.
Por ejemplo:
Supongamos que un usuario necesita acceder a una base de datos en un servidor SQL. Si el servidor de base de datos no está configurado para permitir la delegación de Kerberos, el usuario tendrá que proporcionar sus credenciales de inicio de sesión cada vez que intente acceder a la base de datos.
Sin embargo, si el servidor de base de datos está configurado para permitir la delegación de Kerberos, el usuario no tendrá que proporcionar sus credenciales de inicio de sesión cada vez que intente acceder a la base de datos.
¿Cómo verificar la configuración de SPN y la delegación para una instancia de SQL Server?
Para verificar la configuración de SPN y la delegación para una instancia de SQL Server, primero debe identificar la cuenta de servicio que se utiliza para ejecutar la instancia de SQL Server.
Esto se puede hacer abriendo el Administrador de servicios en el servidor.
Una vez que se identifique la cuenta de servicio, puede usar el comando SetSPN para verificar la configuración de SPN. El comando SetSPN se utiliza para configurar, modificar y eliminar SPN.
Para verificar la configuración de SPN, debe ejecutar el comando SetSPN para enumerar los SPN asociados con la cuenta de servicio. Esto se puede hacer ejecutando el comando siguiente:
SetSPN -l <cuenta de servicio>
Este comando enumerará todos los SPN asociados con la cuenta de servicio. Puede comparar esta lista con la lista de SPN esperados para la instancia de SQL Server.
Si hay alguna discrepancia, puede usar el comando SetSPN para agregar o eliminar los SPN necesarios.
Una vez que se haya verificado la configuración de SPN, es importante verificar la configuración de delegación. La delegación se puede verificar usando el MMC Administrador de directivas de seguridad local.
En el Administrador de directivas de seguridad local, debe navegar hasta el nodo Directivas de seguridad local > Directivas locales > Directivas de seguridad de Windows > Uso de Kerberos.
Aquí debe verificar que el objeto de la cuenta de servicio esté configurado para permitir la delegación. Si no está configurado para permitir la delegación, debe cambiar la configuración.
También es importante verificar que los usuarios que intentan acceder a la instancia de SQL Server tengan un ticket de servicio de Kerberos que tenga el SPN de la instancia de SQL Server.
Esto se puede verificar usando el comando klist. El comando klist muestra todos los tickets de servicio de Kerberos de un usuario.
Si un ticket de servicio no contiene el SPN de la instancia de SQL Server, el usuario no podrá acceder a la instancia de SQL Server.
Con los pasos anteriores, puede verificar fácilmente la configuración de SPN y la delegación para una instancia de SQL Server en un entorno de Active Directory