Недавно помогал администратору баз данных с проблемой, которая, казалось, была связана с недопустимым SPN. Обнаружено, что у большого количества учетных записей служб SQL просто нет набора SPN, что приводит к проверке подлинности NTLM.
Я добавил конфигурацию SPN в наш процесс сборки, но я не уверен, что возврат к существующим системам с использованием NTLM и настройка SPN для аутентификации Kerberos что-нибудь сломает.
Существуют ли какие-либо распространенные сценарии, при которых настройка MSSQLSvc SPN для разрешения проверки подлинности Kerberos нарушит работу существующих систем, которые без проблем работают через NTLM?
Вот код, который я использую:
#Query to identify authentication type for various connections on a SQL server
$query = "SELECT
s.session_id,
c.connect_time,
s.login_time,
s.login_name,
c.protocol_type,
c.auth_scheme,
s.HOST_NAME,
s.program_name
FROM sys.dm_exec_sessions s
JOIN sys.dm_exec_connections c
ON s.session_id = c.session_id"
#Everything comes back NTLM
#Source: https://raw.githubusercontent.com/RamblingCookieMonster/PowerShell/master/Invoke-Sqlcmd2.ps1
Invoke-Sqlcmd2 -ServerInstance ServerInQuestion -query $query
#Get a list of SPNs associated with ServerInQuestion
#Results indicate no SPNs exist
#Source: http://gallery.technet.microsoft.com/scriptcenter/Get-SPN-Get-Service-3bd5524a
Get-SPN -ServiceType MSSQLSvc -ComputerName ServerInQuestion
#Configuring SPNs for test systems results in Kerberos working without issue
setspn -A "MSSQLSvc/ServerInQuestion.DOMAIN.XXX:1433" DOMAIN\SVCACCOUNT
setspn -A "MSSQLSvc/ServerInQuestion.DOMAIN.XXX" DOMAIN\SVCACCOUNT
Меня беспокоит то, что если я вернусь к существующим системам и настрою SPN, я могу сломать существующие приложения или процессы, которые работают с NTLM, но не с Kerberos. Я предполагаю, что при необходимости они вернутся к NTLM, но это не моя область знаний, и мне неудобно делать такое предположение.
Спасибо!
Вы, наверное, правы, что хоть немного обеспокоены. К сожалению, сломается конкретное приложение или нет, все зависит от приложения. Но в целом маловероятно, что что-то сломается, если вы правильно установите SPN.
Мой главный совет: Неправильный SPN хуже, чем полное отсутствие SPN.
Единственная проблема, которую я вижу для вас, - это то, что SPN заданы, но установлены неправильно.
Вот пример:
Последний вопрос - это очень специфическое поведение, которое зависит от приложения и версии Windows.
Это хорошая статья-продолжение, хотя она и старая, но все еще актуальна:
Обновить:
Если это меня утешает, я только что провел тест с использованием SQL Server 2012 и удаленного клиента, работающего под управлением Server 2012 R2 и SQL Management Studio. Когда SPN был зарегистрирован правильно, использовался Kerberos. Когда SPN отсутствовал, SQL Management Studio переключилась на NTLM. Когда я намеренно ввел опечатку в SPN в учетной записи службы, соединение все равно было установлено и переключилось на NTLM. Так что это хорошая новость, но факт остается фактом: другие неуказанные приложения могут неправильно реализовать аутентификацию Windows, чтобы воспользоваться этим протоколом согласования ... поэтому, если у вас есть странные приложения, вы все равно захотите их протестировать. И при тестировании не забывайте, что NTLM будет всегда использоваться для местный подключения, независимо от SPN ... в зависимости от версии ОС. : D