Inscription d'un nom principal de service
Le nom principal de 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.
[!REMARQUE]
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 pour les utilisateurs pour s'authentifier à SQL Server. Les clients qui utilisent l'authentification Windows sont authentifiés à l'aide de NTLM ou de 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 utilisant des canaux nommés.
Autorisations
Lorsque le service Moteur de base de données démarre, il essaie d'inscrire le nom principal de service (SPN). Si le compte qui démarre SQL Server ne détient pas d'autorisation pour inscrire un SPN dans les services de domaine Active Directory, cet appel échouera et un message d'avertissement sera journalisé dans le journal des événements de l'application ainsi que le 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 SERVICE RÉSEAU, ou sous un compte qui détient 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 sur la page How to Implement Kerberos Constrained Delegation with SQL Server 20088 (page éventuellement en anglais)
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.
[!REMARQUE]
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 principaux de 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 par le biais 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 SERVICES RÉSEAU.
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.
Remarque
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.
Remarque
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 et 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.
Voir aussi