Inscrire un nom de principal du service pour les connexions KerberosRegister a Service Principal Name for Kerberos Connections

Cette rubrique s’applique à : OuiSQL Serveraucunbase de données SQL AzureaucunAzure SQL Data Warehouse aucun Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Pour utiliser l’authentification Kerberos avec SQL ServerSQL Server, les deux conditions suivantes doivent être remplies : To use Kerberos authentication with SQL ServerSQL Server requires both the following conditions to be true:

  • Les ordinateurs clients et serveurs doivent faire partie du même domaine Windows ou appartenir à des domaines approuvés.The client and server computers must be part of the same Windows domain, or in trusted domains.

  • Un nom de principal du service (SPN, Service Principal Name) doit être inscrit dans Active Directory, qui joue le rôle de centre de distribution de clés dans un domaine Windows.A Service Principal Name (SPN) must be registered with Active Directory, which assumes the role of the Key Distribution Center in a Windows domain. Une fois inscrit, le SPN est mappé au compte Windows qui a démarré le service de l'instance de SQL ServerSQL Server .The SPN, after it is registered, maps to the Windows account that started the SQL ServerSQL Server instance service. Si l'inscription du SPN n'a pas été effectuée ou échoue, la couche de sécurité Windows ne peut pas déterminer le compte associé au SPN et l'authentification Kerberos ne sera pas utilisée.If the SPN registration has not been performed or fails, the Windows security layer cannot determine the account associated with the SPN, and Kerberos authentication will not be used.

    Note

    Si le serveur ne parvient pas à inscrire automatiquement le SPN, celui-ci doit être inscrit manuellement.If the server cannot automatically register the SPN, the SPN must be registered manually. Consultez Inscription manuelle des SPN.See Manual SPN Registration.

Vous pouvez vérifier qu'une connexion utilise Kerberos en interrogeant la vue de gestion dynamique sys.dm_exec_connections.You can verify that a connection is using Kerberos by querying the sys.dm_exec_connections dynamic management view. Exécutez la requête suivante et vérifiez la valeur de la colonne auth_scheme, qui sera « KERBEROS » si Kerberos est activé.Run the following query and check the value of the auth_scheme column, which will be "KERBEROS" if Kerberos is enabled.

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;  

Conseil

MicrosoftMicrosoft pour SQL ServerSQL Server est un outil de diagnostic qui permet de dépanner les problèmes de connexion que rencontre Kerberos avec SQL ServerSQL Server. MicrosoftMicrosoft Kerberos Configuration Manager for SQL ServerSQL Server is a diagnostic tool that helps troubleshoot Kerberos related connectivity issues with SQL ServerSQL Server. Pour plus d'informations, consultez Gestionnaire de configuration de Microsoft Kerberos pour SQL Server.For more information, see Microsoft Kerberos Configuration Manager for SQL Server.

Rôle du SPN dans l'authentificationThe Role of the SPN in Authentication

Lorsqu'une application ouvre une connexion et utilise l'authentification Windows, SQL ServerSQL Server Native Client transmet le nom de l'ordinateur SQL ServerSQL Server , le nom de l'instance et, éventuellement, un SPN.When an application opens a connection and uses Windows Authentication, SQL ServerSQL Server Native Client passes the SQL ServerSQL Server computer name, instance name and, optionally, an SPN. Si la connexion transmet un SPN, il est utilisé sans aucune modification.If the connection passes an SPN it is used without any changes.

Si la connexion ne transmet pas de SPN, un SPN par défaut est construit à partir du protocole utilisé, du nom de serveur et du nom de l'instance.If the connection does not pass an SPN, a default SPN is constructed based on the protocol used, server name, and the instance name.

Dans les deux scénarios précédents, le SPN est envoyé au centre de distribution de clés pour obtenir un jeton de sécurité en vue d'authentifier la connexion.In both of the preceding scenarios, the SPN is sent to the Key Distribution Center to obtain a security token for authenticating the connection. Si un jeton de sécurité ne peut pas être obtenu, l'authentification utilise le protocole NTLM.If a security token cannot be obtained, authentication uses NTLM.

Le nom de principal du service (SPN) est le nom par lequel un client identifie de manière unique l'instance d'un service.A service principal name (SPN) is the name by which a client uniquely identifies an instance of a service. Le service d'authentification Kerberos peut utiliser le nom principal d'un service pour authentifier un service.The Kerberos authentication service can use an SPN to authenticate a service. Pour se connecter à un service, le client localise une instance du service, compose le nom principal du service pour cette instance, se connecte au service et présente le nom principal de service pour que le service s'authentifie.When a client wants to connect to a service, it locates an instance of the service, composes an SPN for that instance, connects to the service, and presents the SPN for the service to authenticate.

Note

Les informations fournies dans cette rubrique s'appliquent également aux configurations SQL ServerSQL Server qui utilisent le clustering.The information that is provided in this topic also applies to SQL ServerSQL Server configurations that use clustering.

L'Authentification Windows est la méthode recommandée pour authentifier les utilisateurs sur SQL Server.Windows Authentication is the preferred method for users to authenticate to SQL Server. Les clients qui utilisent l'Authentification Windows sont authentifiés à l'aide de NTLM ou Kerberos.Clients that use Windows Authentication are authenticated by either using NTLM or Kerberos. Dans un environnement Active Directory, l'authentification Kerberos est toujours tentée en premier.In an Active Directory environment, Kerberos authentication is always attempted first. L'authentification Kerberos n'est pas disponible pour les clients SQL Server 2005SQL Server 2005 utilisant des canaux nommés.Kerberos authentication is not available for SQL Server 2005SQL Server 2005 clients using named pipes.

PermissionsPermissions

Lorsque le service du Moteur de base de donnéesDatabase Engine démarre, il tente d'enregistrer le nom de principal du service (SPN).When the Moteur de base de donnéesDatabase Engine service starts, it attempts to register the Service Principal Name (SPN). Si le compte qui démarre SQL Server n'a pas l'autorisation d'enregistrer un SPN dans les services de domaine Active Directory, cet appel échouera et un message d'avertissement sera consigné dans le journal des événements de l'application, ainsi que dans le journal des erreurs SQL Server.If the account starting SQL Server doesn’t have permission to register a SPN in Active Directory Domain Services, this call will fail and a warning message will be logged in the Application event log as well as the SQL Server error log. Pour inscrire le SPN, le Moteur de base de donnéesDatabase Engine doit s'exécuter sous un compte intégré, tel que Système local (non recommandé) ou SERVICE RÉSEAU, ou sous un compte qui a l'autorisation d'inscrire un SPN, tel qu'un compte d'administrateur de domaine.To register the SPN, the Moteur de base de donnéesDatabase Engine must be running under a built-in account, such as Local System (not recommended), or NETWORK SERVICE, or an account that has permission to register an SPN, such as a domain administrator account. Lorsque SQL ServerSQL Server s'exécute sur le système d'exploitation Windows 7Windows 7 ou Windows Server 2008 R2Windows Server 2008 R2 , vous pouvez exécuter SQL ServerSQL Server à l'aide d'un compte virtuel ou d'un compte de service administré (MSA).When SQL ServerSQL Server is running on the Windows 7Windows 7 or Windows Server 2008 R2Windows Server 2008 R2 operating system, you can run SQL ServerSQL Server using a virtual account or a managed service account (MSA). Les comptes virtuels t de service administré peuvent inscrire un SPN.Both virtual accounts and MSA’s can register an SPN. Si SQL ServerSQL Server ne s’exécute pas sous l’un de ces comptes, le SPN n’est pas inscrit lors du démarrage et l’administrateur de domaine doit l’inscrire manuellement.If SQL ServerSQL Server is not running under one of these accounts, the SPN is not registered at startup and the domain administrator must register the SPN manually.

Note

Lorsque le domaine Windows est configuré pour s'exécuter à un niveau fonctionnel inférieur à celui de Windows Server 2008 R2Windows Server 2008 R2 , le compte de service administré n'a pas les autorisations nécessaires pour inscrire le SPN pour le service du Moteur de base de données SQL ServerSQL Server Database Engine .When the Windows domain is configured to run at less than the Windows Server 2008 R2Windows Server 2008 R2 Windows Server 2008 R2 functional level, then the Managed Service Account will not have the necessary permissions to register the SPNs for the Moteur de base de données SQL ServerSQL Server Database Engine service. Si l'authentification Kerberos est requise, l'administrateur de domaine doit inscrire manuellement les SPN SQL ServerSQL Server le compte de service administré.If Kerberos authentication is required, the Domain Administrator should manually register the SQL ServerSQL Server SPNs on the Managed Service Account.

L’article de la Base de connaissances How to use Kerberos authentication in SQL Server (Procédure d’utilisation de l’authentification Kerberos dans SQL Server)contient des informations sur la manière d’accorder une autorisation de lecture ou d’écriture à un SPN pour un compte qui n’est pas Administrateur de domaine.The KB article, How to use Kerberos authentication in SQL Server, contains information about how to grant read or write permission to an SPN for an account that is not a Domain Administrator.

Des informations supplémentaires sont disponibles dans l’article How to Implement Kerberos Constrained Delegation with SQL Server 2008 (Procédure d’implémentation de la délégation contrainte Kerberos à l’aide de SQL Server 2008).Additional information is available at How to Implement Kerberos Constrained Delegation with SQL Server 2008

Formats de SPNSPN Formats

À compter de SQL Server 2008SQL Server 2008, le format des SPN est modifié afin de prendre en charge l'authentification Kerberos sur le protocole TCP/IP, les canaux nommés et la mémoire partagée.Beginning with SQL Server 2008SQL Server 2008, the SPN format is changed in order to support Kerberos authentication on TCP/IP, named pipes, and shared memory. Les formats de SPN pris en charge pour les instances nommées et par défaut sont les suivants.The supported SPN formats for named and default instances are as follows.

Instance nomméeNamed instance

  • MSSQLSvc/<FQDN>:[<port> | <nom_instance>], où :MSSQLSvc/<FQDN>:[<port> | <instancename>], where:

    • MSSQLSvc est le service en cours d’inscription.MSSQLSvc is the service that is being registered.

    • <FQDN> est le nom de domaine complet du serveur.<FQDN> is the fully qualified domain name of the server.

    • <port> est le numéro de port TCP.<port> is the TCP port number.

    • <nom_instance> est le nom de l’instance SQL ServerSQL Server.<instancename> is the name of the SQL ServerSQL Server instance.

Instance par défautDefault instance

  • MSSQLSvc/<FQDN>:<port> | MSSQLSvc/<FQDN>, où :MSSQLSvc/<FQDN>:<port> | MSSQLSvc/<FQDN>, where:

    • MSSQLSvc est le service en cours d’inscription.MSSQLSvc is the service that is being registered.

    • <FQDN> est le nom de domaine complet du serveur.<FQDN> is the fully qualified domain name of the server.

    • <port> est le numéro de port TCP.<port> is the TCP port number.

    Note

    Le nouveau format SPN ne requiert pas de numéro de port.The new SPN format does not require a port number. Cela signifie qu'un serveur à port multiple ou un protocole qui n'utilise pas de numéro de port peut utiliser l'authentification Kerberos.This means that a multiple-port server or a protocol that does not use port numbers can use Kerberos authentication.

MSSQLSvc/<FQDN> :MSSQLSvc/<FQDN>: Nom principal de service par défaut, généré par le fournisseur, lorsque le protocole TCP est utilisé.The provider-generated, default SPN when TCP is used. <port> est un numéro de port TCP.<port> is a TCP port number.
MSSQLSvc/<FQDN>MSSQLSvc/<FQDN> Nom principal de service par défaut, généré par le fournisseur, pour une instance par défaut lorsqu'un autre protocole que TCP est utilisé.The provider-generated, default SPN for a default instance when a protocol other than TCP is used. <FQDN> est un nom de domaine complet.<FQDN> is a fully-qualified domain name.
MSSQLSvc/<FQDN>:<nom_instance>MSSQLSvc/<FQDN>:<instancename> Nom principal de service par défaut, généré par le fournisseur, pour une instance nommée lorsqu'un autre protocole que TCP est utilisé.The provider-generated, default SPN for a named instance when a protocol other than TCP is used. <Nom_instance> est le nom d’une instance de SQL ServerSQL Server.<instancename> is the name of an instance of SQL ServerSQL Server.

Note

Dans le cas d'une connexion TCP/IP, où le port TCP est inclus dans le SPN, SQL ServerSQL Server doit activer le protocole TCP afin de permettre à un utilisateur de se connecter à l'aide de l'authentification Kerberos.In the case of a TCP/IP connection, where the TCP port is included in the SPN, SQL ServerSQL Server must enable the TCP protocol for a user to connect by using Kerberos authentication.

Inscription automatique des SPNAutomatic SPN Registration

Lors du démarrage d’une instance du Moteur de base de données SQL ServerSQL Server Database Engine , SQL ServerSQL Server tente d’inscrire le nom SPN du service SQL ServerSQL Server .When an instance of the Moteur de base de données SQL ServerSQL Server Database Engine starts, SQL ServerSQL Server tries to register the SPN for the SQL ServerSQL Server service. Lors de l’arrêt de l’instance, SQL ServerSQL Server tente d’annuler l’inscription du nom SPN.When the instance is stopped, SQL ServerSQL Server tries to unregister the SPN. Pour une connexion TCP/IP, le nom de principal du service (SPN) est inscrit au format MSSQLSvc/<FQDN>:<port_tcp>. Les instances nommées et l’instance par défaut sont inscrites en tant que MSSQLSvc et seule la valeur de <port_tcp> différencie les instances.For a TCP/IP connection the SPN is registered in the format MSSQLSvc/<FQDN>:<tcpport>.Both named instances and the default instance are registered as MSSQLSvc, relying on the <tcpport> value to differentiate the instances.

Pour les autres connexions qui prennent en charge Kerberos, le nom SPN est inscrit au format MSSQLSvc/<FQDN>/<nom_instance> pour une instance nommée.For other connections that support Kerberos the SPN is registered in the format MSSQLSvc/<FQDN>/<instancename> for a named instance. Le format pour l’inscription de l’instance par défaut est MSSQLSvc/<FQDN>.The format for registering the default instance is MSSQLSvc/<FQDN>.

Une intervention manuelle peut être requise pour inscrire ou annuler l'inscription du SPN si le compte de service ne possède pas les autorisations requises pour ces actions.Manual intervention might be required to register or unregister the SPN if the service account lacks the permissions that are required for these actions.

Inscription manuelle des SPNManual SPN Registration

Pour inscrire le SPN manuellement, l'administrateur doit utiliser l'outil Setspn.exe fourni avec les Outils de support de Microsoft Windows Server 2003Windows Server 2003 .To register the SPN manually, the administrator must use the Setspn.exe tool that is provided with the Microsoft Windows Server 2003Windows Server 2003 Support Tools. Pour plus d’informations, consultez l’article de la Base de connaissances Outils de support de Windows Server 2003 Service Pack 1 .For more information, see the Windows Server 2003 Service Pack 1 Support Tools KB article.

Setspn.exe est un outil de ligne de commande qui vous permet de lire, modifier et supprimer la propriété du répertoire des Noms de principaux du service (SPN).Setspn.exe is a command line tool that enables you to read, modify, and delete the Service Principal Names (SPN) directory property. Cet outil vous permet également d'afficher les SPN actuels, de réinitialiser les SPN par défaut du compte et d'ajouter ou de supprimer des SPN supplémentaires.This tool also enables you to view the current SPNs, reset the account's default SPNs, and add or delete supplemental SPNs.

L’exemple suivant illustre la syntaxe utilisée pour inscrire manuellement un SPN pour une connexion TCP/IP à l’aide d’un compte d’utilisateur de domaine :The following example illustrates the syntax used to register manually register an SPN for a TCP/IP connection using a domain user account:

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

Note

S’il existe déjà un nom SPN, il doit être supprimé avant de pouvoir être réinscrit.If an SPN already exists, it must be deleted before it can be reregistered. Pour cela, utilisez la commande setspn avec le commutateur -D .You do this by using the setspn command together with the -D switch. Les exemples suivants illustrent comment inscrire manuellement un nouveau SPN basé sur une instance.The following examples illustrate how to manually register a new instance-based SPN. Pour une instance par défaut utilisant un compte d’utilisateur de domaine, utilisez :For a default instance using a domain user account, use:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com redmond\accountname  

Pour une instance nommée, utilisez :For a named instance, use:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename redmond\accountname  

Connexions clientesClient Connections

Les SPN spécifiés par l'utilisateur sont pris en charge dans les pilotes clients.User-specified SPNs are supported in client drivers. Toutefois, si aucun SPN n'est fourni, il est généré automatiquement en fonction du type de connexion cliente.However, if an SPN is not provided, it will be generated automatically based on the type of a client connection. Pour une connexion TCP, un nom SPN au format MSSQLSvc/FQDN:[port] est utilisé à la fois pour les instances nommées et par défaut.For a TCP connection, an SPN in the format MSSQLSvc/FQDN:[port] is used for both the named and default instances.

Pour les connexions par canaux nommés et mémoire partagée, un SPN au format MSSQLSvc/<FQDN>:<nom_instance> est utilisé pour une instance nommée et MSSQLSvc/<FQDN> est utilisé pour l’instance par défaut.For named pipes and shared memory connections, an SPN in the format MSSQLSvc/<FQDN>:<instancename> is used for a named instance and MSSQLSvc/<FQDN> is used for the default instance.

Utilisation d'un compte de service comme SPNUsing a service account as an SPN

Les comptes de service peuvent être utilisés comme SPN.Service accounts can be used as an SPN. Ils sont spécifiés par le biais de l'attribut de connexion pour l'authentification Kerberos et assument les formats suivants :They are specified through the connection attribute for the Kerberos authentication and take the following formats:

  • username@domain ou domaine\nom_utilisateur pour un compte d’utilisateur de domaineusername@domain or domain\username for a domain user account

  • ordinateur$@domain ou hôte\FQDN pour un compte de domaine d’ordinateur tel que Système Local ou SERVICES RÉSEAU.machine$@domain or host\FQDN for a computer domain account such as Local System or NETWORK SERVICES.

Pour déterminer la méthode d'authentification d'une connexion, exécutez la requête suivante.To determine the authentication method of a connection, execute the following query.

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

Paramètres par défaut de l'authentificationAuthentication Defaults

Le tableau suivant décrit les paramètres d'authentification par défaut utilisés selon les scénarios d'inscription de SPN.The following table describes the authentication defaults that are used based on SPN registration scenarios.

ScénarioScenario Méthode d'authentificationAuthentication method
Le SPN est mappé au compte de domaine, au compte virtuel, au compte de service administré ou au compte intégré approprié.The SPN maps to the correct domain account, virtual account, MSA, or built-in account. Par exemple, Système local ou SERVICE RÉSEAU.For example, Local System or NETWORK SERVICE. Les connexions locales utilisent NTLM, les connexions distantes utilisent Kerberos.Local connections use NTLM, remote connections use Kerberos.
Le SPN est le compte de domaine, le compte virtuel, le compte de service administré ou le compte intégré approprié.The SPN is the correct domain account, virtual account, MSA, or built-in account. Les connexions locales utilisent NTLM, les connexions distantes utilisent Kerberos.Local connections use NTLM, remote connections use Kerberos.
Le SPN est mappé à un compte de domaine, un compte virtuel, un compte de service administré ou un compte intégré erroné.The SPN maps to an incorrect domain account, virtual account, MSA, or built-in account L'authentification échoue.Authentication fails.
La recherche du SPN échoue ou ne mappe pas à un compte de domaine, un compte virtuel, un compte de service administré ou un compte intégré correct, ou n'est pas un compte de domaine, un compte virtuel, un compte de service administré ou un compte intégré correct.The SPN lookup fails or does not map to a correct domain account, virtual account, MSA, or built-in account, or is not a correct domain account, virtual account, MSA, or built-in account. Les connexions locales et distantes utilisent NTLM.Local and remote connections use NTLM.

Note

« Correct » signifie que le compte mappé par le SPN inscrit est le compte sous lequel s’exécute le service SQL Server.'Correct' means that the account mapped by the registered SPN is the account that the SQL Server service is running under.

CommentairesComments

La connexion administrateur dédiée utilise un SPN basé sur un nom d'instance.The Dedicated Administrator Connection (DAC) uses an instance name based SPN. L'authentification Kerberos peut être utilisée avec une connexion DAC si l'inscription de ce SPN réussit.Kerberos authentication can be used with a DAC if that SPN is registered successfully. En guise d'alternative, un utilisateur peut spécifier le nom du compte comme SPN.As an alternative a user can specify the account name as an SPN.

Si l’inscription du nom SPN échoue au démarrage, cet échec est consigné dans le journal des erreurs de SQL ServerSQL Server et le démarrage se poursuit.If SPN registration fails during startup, this failure is recorded in the SQL ServerSQL Server error log, and startup continues.

Si l'annulation de l'inscription du SPN échoue pendant l'arrêt, cet échec est consigné dans le journal des erreurs de SQL ServerSQL Server et l'arrêt se poursuit.If SPN de-registration fails during shutdown, this failure is recorded in the SQL ServerSQL Server error log, and shutdown continues.

Voir aussiSee Also

Prise en charge des noms de principaux du service (noms SPN) dans les connexions clientes Service Principal Name (SPN) Support in Client Connections
Noms de principaux du service (noms SPN) dans les connexions clientes (OLE DB) Service Principal Names (SPNs) in Client Connections (OLE DB)
Noms de principaux du service (noms SPN) dans les connexions clientes (ODBC) Service Principal Names (SPNs) in Client Connections (ODBC)
Fonctionnalités de SQL Server Native Client SQL Server Native Client Features
Gérer les problèmes d’authentification Kerberos dans un environnement Reporting ServicesManage Kerberos Authentication Issues in a Reporting Services Environment