Inscription d'un nom de principal du service

Le nom de principal du service (SPN, service principal name) est le nom par lequel un client identifie de manière unique l'instance d'un service. Le service d'authentification Kerberos peut utiliser le nom principal d'un service pour authentifier un 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.

Notes

Les informations fournies dans cette rubrique s'appliquent également aux configurations SQL Server qui utilisent le clustering.

L'Authentification Windows est la méthode recommandée d'authentifcation à SQL Server. Les clients qui utilisent l'authentification Windows sont authentifiés soit par NTLM, soit par Kerberos. Dans un environnement Active Directory, l'authentification Kerberos est toujours tentée en premier. L'authentification Kerberos n'est pas disponible pour les clients SQL Server 2000 et SQL Server 2005 qui utilisent des canaux nommés.

Autorisations

Lorsque le service du moteur de base de données démarre, il tente d'inscrire le nom de principal du service (SPN). Si le compte qui démarre SQL Server ne dispose pas de l'autorisation nécessaire pour inscrire le SPN auprès des services de domaine Active Directory, cet appel échouera et un message d'avertissement sera ajouté au journal des événements de l'application, ainsi qu'au journal des erreurs SQL Server. Pour inscrire le SPN, le moteur de base de données doit s'exécuter sous un compte intégré, tel que Système Local (non recommandé) ou NETWORK SERVICE, ou sous un compte qui a l'autorisation d'inscrire un SPN, tel qu'un compte d'administrateur de domaine. Si SQL 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.

L'article de la Base de connaissances portant sur la façon d'utiliser 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.

Des informations supplémentaires sont disponibles dans l'article Implémentation de la délégation Kerberos contrainte avec SQL Server 2008.

Formats de SPN

À compter de SQL 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. Les formats de SPN pris en charge pour les instances nommées et par défaut sont les suivants.

Instance nommée

  • MSSQLSvc/FQDN:[port**|**nom_instance], où :

    • MSSQLSvc est le service en cours d'inscription.

    • FQDN est le nom de domaine complet du serveur.

    • port est le numéro de port TCP.

    • nom_instance est le nom de l'instance SQL Server.

Instance par défaut

  • MSSQLSvc/FQDN:port**|**MSSQLSvc/FQDN, où :

    • MSSQLSvc est le service en cours d'inscription.

    • FQDN est le nom de domaine complet du serveur.

    • port est le numéro de port TCP.

Le nouveau format SPN ne requiert pas de numéro de port. Cela signifie qu'un serveur à port multiple ou un protocole qui n'utilise pas de numéro de port peut utiliser Kerberos.

Notes

Dans le cas d'une connexion TCP/IP, où le port TCP est inclus dans le SPN, SQL Server doit activer le protocole TCP afin de permettre à un utilisateur de se connecter à l'aide de l'authentification Kerberos.

Inscription automatique des SPN

Lors du démarrage d'une instance du Moteur de base de données SQL Server, SQL Server tente d'inscrire le nom principal du service SQL Server. Dès l'arrêt de l'instance, SQL Server tente d'annuler l'inscription du SPN. Pour une connexion TCP/IP, le SPN est inscrit au format MSSQLSvc/<FQDN>:<porttcp>. Les instances nommées et l'instance par défaut sont inscrites en tant que MSSQLSvc et seule la valeur de <porttcp> différencie les instances.

Pour les autres connexions qui prennent en charge Kerberos, le SPN est inscrit au format MSSQLSvc/<FQDN>:<nom_instance> pour une instance nommée. Le format pour l'inscription de l'instance par défaut est 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.

Inscription manuelle des SPN

Pour inscrire le SPN manuellement, l'administrateur doit utiliser l'outil Setspn.exe fourni avec les Outils de support de Microsoft Windows Server 2003. Ces outils sont inclus dans le Service Pack 1 de Windows Server 2003 (SP1). Pour plus d'informations, consultez l'article de la Base de connaissances relatif aux Outils de support de Windows Server 2003 Service Pack 1.

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

L'exemple suivant illustre la syntaxe utilisée pour inscrire manuellement un SPN pour une connexion TCP/IP.

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

RemarqueS'il existe déjà un SPN, il doit être supprimé avant de pouvoir être réinscrit. Pour cela, utilisez la commande setspn avec le commutateur -D. Les exemples suivants illustrent comment inscrire manuellement un nouveau SPN basé sur une instance. Pour une instance par défaut, utilisez :

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

Pour une instance nommée, utilisez :

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

Connexions clientes

Les SPN spécifiés par l'utilisateur sont pris en charge dans les pilotes clients. Toutefois, si aucun SPN n'est fourni, il est généré automatiquement en fonction du type de connexion cliente. Pour une connexion TCP, un SPN au format MSSQLSvc/FQDN: [port] est utilisé à la fois pour les instances nommées et les instances par défaut.

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.

Utilisation d'un compte de service comme SPN

Les comptes de service peuvent être utilisés comme SPN. Ils sont spécifiés au moyen de l'attribut de connexion pour l'authentification Kerberos et assument les formats suivants :

  • nom_utilisateur@domaine ou domaine\nom_utilisateur pour un compte d'utilisateur de domaine

  • ordinateur$@domaine ou hôte\FQDN pour un compte de domaine d'ordinateur tel que Système Local ou NETWORK SERVICES.

Pour déterminer la méthode d'authentification d'une connexion, exécutez la requête suivante.

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

Paramètres par défaut de l'authentification

Le tableau suivant décrit les paramètres d'authentification par défaut utilisés selon les scénarios d'inscription de SPN.

Scénario

Méthode d'authentification

Le SPN est mappé au domaine ou compte intégré correct. Par exemple, Système local ou SERVICE RÉSEAU.

RemarqueRemarque
Correct signifie que le compte mappé par le SPN inscrit est le compte sous lequel s'exécute le service SQL Server.

Les connexions locales utilisent NTLM, les connexions distantes utilisent Kerberos.

Le SPN est le domaine ou compte intégré correct.

RemarqueRemarque
Correct signifie que le compte mappé par le SPN inscrit est le compte sous lequel s'exécute le service SQL Server.

Les connexions locales utilisent NTLM, les connexions distantes utilisent Kerberos.

Le SPN est mappé à un domaine ou compte intégré incorrect.

L'authentification échoue.

La recherche de SPN échoue, ne mappe pas à un domaine ou compte intégré correct, ou n'est pas un domaine ou compte intégré correct.

Les connexions locales et distantes utilisent NTLM.

Commentaires

La connexion administrateur dédiée (DAC, Dedicated Administrator Connection) utilise un SPN basé sur un nom d'instance dans SQL Server 2008. L'authentification Kerberos peut être utilisée avec une connexion DAC si l'inscription de ce SPN réussit. En guise d'alternative, un utilisateur peut spécifier le nom du compte comme SPN.

Si l'inscription du SPN échoue pendant le démarrage, cet échec est consigné dans le journal des erreurs de SQL Server et le démarrage se poursuit.

Si l'annulation de l'inscription du SPN échoue pendant l'arrêt, cet échec est consigné dans le journal des erreurs de SQL Server et l'arrêt se poursuit.