Я нахожу противоречивую информацию о том, как именно отформатировать имена участников-служб (имена принципов службы), чтобы получить правильные соединения Kerberos, и сколько мне нужно для каждого экземпляра SQL.
Этот документ MS за 2017 год содержит следующее:
Начиная с SQL Server 2008, формат SPN изменяется для поддержки аутентификации Kerberos по TCP / IP, именованным каналам и общей памяти. Поддерживаются следующие форматы SPN для именованных экземпляров и экземпляров по умолчанию.
- Именованный экземпляр:
MSSQLSvc/FQDN:[port|instancename]
- Экземпляр по умолчанию:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN
Новый формат SPN не требует номера порта . Это означает, что многопортовый сервер или протокол, который не использует номера портов, может использовать аутентификацию Kerberos.
Я взял этот последний абзац, чтобы означать, что мне нужна только одна запись, одна из следующих:
- Именованный экземпляр:
MSSQLSvc/sqlbox1.mydomain.org/instance2
- Экземпляр по умолчанию:
MSSQLSvc/sqlbox1.mydomain.org
Это противоречит этому более раннему (2011 г.) документу MS не только о номере порта, но и о том, какое имя использовать:
Чтобы создать имя участника-службы, вы можете использовать имя NetBIOS или полное доменное имя (FQDN) SQL Server. Однако необходимо создать имя участника-службы как для имени NetBIOS, так и для полного доменного имени .
Когда я смотрю на имена SPN, которые уже существуют в моей среде, я вижу большое количество комбинаций, некоторые серверы имеют до 4 записей:
MSSQLSvc/sqlbox1
MSSQLSvc/sqlbox1:1433
MSSQLSvc/sqlbox1.mydomain.org
MSSQLSvc/sqlbox1.mydomain.org:1433
Кажется, даже собственный менеджер конфигурации Kerberos от MS хочет сгенерировать последние две версии (с соответствующей обфускацией):
Аналогично для существующих именованных экземпляров я вижу странное сочетание, некоторые из которых почти наверняка недействительны:
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
Так как же должны выглядеть мои DSN для экземпляров по умолчанию и именованных экземпляров, если я просто использую TCP в своей среде?
Должен ли я включить порт или нет? Или включить один с портом и один без?
Использовать только полное доменное имя или мне нужны записи только с именем Netbios? Или это было бы, только если бы мы использовали именованные каналы (которые мы не являемся)?
(Для контекста мы запускаем SQL 2005–2014, некоторые кластеризованные, другие автономные. Подключение осуществляется только через TCP, именованные каналы отключены в диспетчере конфигурации. Мы будем исправлять / создавать их вручную, а не позволять учетной записи службы SQL создавать их при запуск сервера.)