Estou encontrando informações contraditórias sobre como exatamente formatar SPNs (Service Principle Names) para obter as conexões Kerberos adequadas e quantas eu preciso para cada instância SQL.
Este documento MS 2017 contém o seguinte:
A partir do SQL Server 2008, o formato SPN é alterado para oferecer suporte à autenticação Kerberos no TCP / IP, pipes nomeados e memória compartilhada. Os formatos SPN suportados para instâncias nomeadas e padrão são os seguintes.
- Instância nomeada:
MSSQLSvc/FQDN:[port|instancename]
- Instância padrão:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN
O novo formato SPN não requer um número de porta . Isso significa que um servidor de várias portas ou um protocolo que não usa números de porta pode usar a autenticação Kerberos.
Peguei este último parágrafo para significar que eu só preciso de uma única entrada, uma das seguintes:
- Instância nomeada:
MSSQLSvc/sqlbox1.mydomain.org/instance2
- Instância padrão:
MSSQLSvc/sqlbox1.mydomain.org
Isso parece contradizer este documento antigo do MS (2011) , não apenas sobre o número da porta, mas também sobre o nome a ser usado:
Para criar o SPN, você pode usar o nome NetBIOS ou o FQDN (Fully Qualified Domain Name) do SQL Server. No entanto, você deve criar um SPN para o nome NetBIOS e o FQDN .
Quando olho para os SPNs que já existem no meu ambiente, vejo uma grande variedade de combinações, alguns servidores têm até 4 entradas:
MSSQLSvc/sqlbox1
MSSQLSvc/sqlbox1:1433
MSSQLSvc/sqlbox1.mydomain.org
MSSQLSvc/sqlbox1.mydomain.org:1433
Até o próprio gerenciador de configuração Kerberos da MS parece querer gerar as duas últimas versões (com ofuscação apropriada):
Da mesma forma, para instâncias nomeadas existentes, vejo uma mistura estranha, algumas delas quase certamente inválidas:
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
Então, como devem ser meus DSNs, tanto para as instâncias padrão quanto para as nomeadas, se eu apenas usar o TCP no meu ambiente?
Devo incluir a porta ou não? Ou incluir um com a porta e outro sem?
Use apenas o FQDN ou preciso das entradas apenas com o nome Netbios? Ou seria apenas se estivéssemos usando pipes nomeados (o que não somos)?
(Para o contexto, executamos o SQL 2005 até 2014, alguns agrupados, outros autônomos. A conectividade é somente via TCP, os pipes nomeados estão desabilitados no gerenciador de configuração. Vamos corrigi-los / criá-los manualmente, em vez de permitir que a conta do serviço SQL os crie após início do servidor.)