Je trouve des informations contradictoires sur la façon de formater exactement les noms principaux de service (SPN) pour obtenir les connexions Kerberos appropriées et le nombre dont j'ai besoin pour chaque instance SQL.
Ce document MS 2017 contient les éléments suivants:
À partir de SQL Server 2008, le format SPN est modifié afin de prendre en charge l'authentification Kerberos sur TCP / IP, les canaux nommés et la mémoire partagée. Les formats SPN pris en charge pour les instances nommées et par défaut sont les suivants.
- Instance nommée:
MSSQLSvc/FQDN:[port|instancename]
- Instance par défaut:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN
Le nouveau format SPN ne nécessite pas de numéro de port . Cela signifie qu'un serveur à plusieurs ports ou un protocole qui n'utilise pas de numéros de port peut utiliser l'authentification Kerberos.
J'ai pris ce dernier paragraphe pour signifier que je n'ai besoin que d'une seule entrée, l'une des suivantes:
- Instance nommée:
MSSQLSvc/sqlbox1.mydomain.org/instance2
- Instance par défaut:
MSSQLSvc/sqlbox1.mydomain.org
Cela semble contredire cet ancien document MS (2011) , non seulement sur le numéro de port, mais aussi sur le nom à utiliser:
Pour créer le SPN, vous pouvez utiliser le nom NetBIOS ou le nom de domaine complet (FQDN) de SQL Server. Cependant, vous devez créer un SPN pour le nom NetBIOS et le FQDN .
Quand je regarde les SPN qui existent déjà dans mon environnement, je vois une grande variété de combinaisons, certains serveurs ont jusqu'à 4 entrées:
MSSQLSvc/sqlbox1
MSSQLSvc/sqlbox1:1433
MSSQLSvc/sqlbox1.mydomain.org
MSSQLSvc/sqlbox1.mydomain.org:1433
Même le propre gestionnaire de configuration Kerberos de MS semble vouloir générer les deux dernières versions (avec un obscurcissement approprié):
De même pour les instances nommées existantes, je vois un mélange étrange, certains d'entre eux presque certainement invalides:
MSSQLSvc/sqlbox1:1522
MSSQLSvc/sqlbox1:instance2
MSSQLSvc/sqlbox1.mydomain.org:1522
MSSQLSvc/sqlbox1.mydomain.org:instance2
MSSQLSvc/sqlbox1.mydomain.org/instance2
MSSQLSvc/sqlbox1.mydomain.org:1522:instance2
Alors, à quoi devraient ressembler mes DSN, pour les instances par défaut et nommées, si j'utilise simplement TCP dans mon environnement?
Dois-je inclure le port ou non? Ou en inclure un avec le port et un sans?
Utilisez le FQDN uniquement ou ai-je besoin des entrées avec uniquement le nom Netbios? Ou serait-ce seulement si nous utilisions des tuyaux nommés (ce que nous ne sommes pas)?
(Pour le contexte, nous exécutons SQL 2005 à 2014, certains en cluster, d'autres en mode autonome. La connectivité est uniquement via TCP, les canaux nommés sont désactivés dans le gestionnaire de configuration. Nous allons les corriger / créer manuellement au lieu d'autoriser le compte de service SQL à les créer démarrage du serveur.)