Registrar un nombre de la entidad de seguridad del servicio

Un nombre principal de servicio (SPN) es el nombre por el que un cliente identifica de forma unívoca una instancia de un servicio. El servicio de autenticación de Kerberos puede utilizar un SPN para autenticar un servicio. Cuando un cliente desea conectarse a un servicio, busca una instancia del servicio, compone un SPN para esa instancia, se conecta al servicio y presenta el SPN para que lo autentique el servicio.

[!NOTA]

La información proporcionada en este tema también se aplica a las configuraciones de SQL Server que utilizan la agrupación en clústeres.

Autenticación de Windows es el método preferido para la autenticación de los usuarios en SQL Server. Los clientes que usan el inicio de sesión autenticado de Windows se autentican utilizando NTLM o Kerberos. En un entorno de Active Directory, la autenticación Kerberos siempre se intenta primero. La autenticación Kerberos no está disponible para los clientes de SQL Server 2000 y SQL Server 2005 utilizando canalizaciones con nombre.

Permisos

Cuando se inicia el servicio del Database Engine (Motor de base de datos), se intenta registrar el Nombre principal de servicio (SPN). Si la cuenta de inicio de SQL Server no tiene permiso para registrar un SPN en Servicios de dominio de Active Directory, se producirá un error en esta llamada y se registrará un mensaje de advertencia en el registro de eventos de aplicación así como en el registro de errores de SQL Server. Para registrar el SPN, el Database Engine (Motor de base de datos) se debe ejecutar en una cuenta integrada, como Sistema local (no se recomienda) o Servicio de red, o en una cuenta que tenga permiso para registrar un SPN, como una cuenta de administrador de dominio. Si SQL Server no se ejecuta en ninguna de estas cuentas, el SPN no se registrará en el inicio y el administrador de dominio deberá registrarlo manualmente.

El artículo de Knowledge Base que describe cómo utilizar la autenticación Kerberos en SQL Server contiene información acerca de cómo conceder permisos de lectura o de escritura a un SPN para cuentas distintas de las de administrador de dominio.

Puede obtener información adicional en el tema sobre cómo implementar la delegación limitada de Kerberos con SQL Server 2008.

Formatos de SPN

A partir de SQL Server 2008, el formato de SPN ha cambiado para ser compatible con la autenticación Kerberos en TCP/IP, las canalizaciones con nombre y la memoria compartida. Los formatos de SPN admitidos para las instancias predeterminadas y con nombre son los siguientes.

Instancia con nombre

  • MSSQLSvc/FQDN:[puerto**|**nombreDeInstancia], donde:

    • MSSQLSvc es el servicio que se va a registrar.

    • FQDN es el nombre de dominio completo del servidor.

    • puerto en el número de puerto TCP.

    • nombreDeInstancia es el nombre de la instancia de SQL Server.

Instancia predeterminada

  • MSSQLSvc/FQDN:puerto**|**MSSQLSvc/FQDN, donde:

    • MSSQLSvc es el servicio que se va a registrar.

    • FQDN es el nombre de dominio completo del servidor.

    • puerto en el número de puerto TCP.

El nuevo formato SPN no requiere un número de puerto. Esto significa que un servidor con varios puertos o un protocolo que no use números de puerto puede utilizar Kerberos.

[!NOTA]

En el caso de una conexión TCP/IP, en la que el puerto TCP está incluido en el SPN, SQL Server debe habilitar el protocolo TCP para que los usuarios puedan conectarse usando la autenticación Kerberos.

Registro automático de SPN

Cuando se inicia una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server), SQL Server intenta registrar el SPN para el servicio SQL Server. Cuando la instancia se detiene, SQL Server intenta anular el registro del SPN. Para una conexión TCP/IP, el SPN se registra con el formato MSSQLSvc/<FQDN>:<tcpport>. Las instancias con nombre y la instancia predeterminada se registran como MSSQLSvc, basándose en el valor <tcpport> para diferenciar las instancias.

Para el resto de conexiones compatibles con Kerberos, el SPN se registra con el formato MSSQLSvc/<FQDN>:<nombreDeInstancia> para una instancia con nombre. El formato para registrar la instancia predeterminada es MSSQLSvc/<FQDN>.

Es posible que se requiera una intervención manual para registrar o anular el registro del SPN si la cuenta de servicio carece de los permisos requeridos para estas acciones.

Registro manual de SPN

Para registrar el SPN manualmente, el administrador debe usar la herramienta Setspn.exe incluida en las herramientas de soporte técnico de Microsoft Windows Server 2003. Dichas herramientas se incluyen en el Service Pack 1 (SP1) de Windows Server 2003. Para obtener más información, vea el artículo de KB Herramientas de soporte técnico del Service Pack 1 de Windows Server 2003.

Setspn.exe es una herramienta de línea de comandos que le permite leer, modificar y eliminar la propiedad de directorio Nombres de la entidad de seguridad del servicio (SPN). Esta herramienta también le permite ver los SPN actuales, restablecer los SPN predeterminados de la cuenta y agregar o eliminar los SPN complementarios.

El ejemplo siguiente muestra la sintaxis usada para registrar manualmente un SPN para una conexión TCP/IP.

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname

Nota: Si un SPN ya existe, se debe eliminar antes de que se pueda volver a registrar. Para ello, use el comando setspn junto con el modificador -D. Los ejemplos siguientes muestran cómo registrar manualmente un nuevo SPN basado en instancias. Para una instancia predeterminada, use:

setspn –A MSSQLSvc/myhost.redmond.microsoft.com accountname

Para una instancia con nombre, use:

setspn –A MSSQLSvc/myhost.redmond.microsoft.com:instancename accountname

Conexiones de cliente

Los SPN especificados por el usuario son compatibles con los controladores de cliente. Sin embargo, si no se proporciona un SPN, se generará automáticamente basándose en el tipo de conexión de cliente. Para una conexión TCP, se usa un SPN con el formato MSSQLSvc/FQDN:[puerto] tanto para las instancias predeterminadas como para las instancias con nombre.

Para las conexiones de canalización con nombre y de memoria compartida, se usa un SPN con el formato MSSQLSvc/FQDN:nombreDeInstancia para una instancia con nombre y MSSQLSvc/FQDN para la instancia predeterminada.

Usar una cuenta de servicio como un SPN

Las cuentas de servicio se pueden usar como un SPN. Se especifican mediante el atributo de conexión para la autenticación Kerberos y pueden tener los formatos siguientes:

  • nombreDeUsuario@dominio o dominio\nombreDeUsuario para una cuenta de usuario de dominio.

  • equipo$@dominio o host\FQDN para una cuenta de dominio de equipo, como Sistema local o Servicio de red.

Para determinar el método de autenticación de una conexión, ejecute la siguiente consulta.

SELECT net_transport, auth_scheme 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

Valores predeterminados de autenticación

En la tabla siguiente se describen los valores predeterminados de autenticación que se usan basándose en los escenarios de registro de SPN.

Escenario

Método de autenticación

El SPN se asigna al dominio o a la cuenta integrada correctos. Por ejemplo, Sistema local o Servicio de red.

NotaNota
En otras palabras, la cuenta asignada por el SPN registrado es la cuenta en la que se está ejecutando el servicio SQL Server.

Las conexiones locales usan NTLM, mientras que las conexiones remotas usan Kerberos.

El SPN es el dominio o la cuenta integrada correctos.

NotaNota
En otras palabras, la cuenta asignada por el SPN registrado es la cuenta en la que se está ejecutando el servicio SQL Server.

Tanto las conexiones locales como las remotas usan Kerberos.

El SPN se asigna a un dominio o cuenta integrada incorrectos.

Se produce un error en la autenticación.

La búsqueda de SPN genera un error o no se asigna a un dominio o cuenta integrada correctos, o no es un dominio o cuenta integrada correctos.

Tanto las conexiones locales como las remotas usan NTLM.

Comentarios

La conexión de administrador dedicada (DAC) usa un SPN basado en el nombre de instancia en SQL Server 2008. La autenticación Kerberos se puede usar con una DAC si se ha registrado correctamente ese SPN. Como alternativa, el usuario puede especificar el nombre de cuenta como un SPN.

Si no se puede registrar el SPN durante el inicio, se incluye este error en el registro de errores de SQL Server y el proceso de inicio continúa.

Si no se puede anular el registro del SPN durante el cierre, se incluye este error en el registro de errores de SQL Server y el proceso de cierre continúa.