понедельник, 6 апреля 2015 г.

Настройка SPN для MS SQL Server - просто

Немного теории.
MS SQL Server поддерживает сетевую проверку через следующие типы проверок:

 - NTLM
 - Kerberos.

NTLM довольно старый протокол, который еще появился с Windows NT 4.0, вместо него рекомендуется использовать Kerberos.
Kerberos – это сетевой протокол, позволяющий реализовать надежную проверку подлинности в клиента и сервера в сети, основанный на главном ключе (master key) и, так называемых, зашифрованных билетах(tickets).
MS SQL Server поддерживает Kerberos для следующих сетевых протоколов:
- TCP\IP
- Именованные каналы(Shared pipes)
- Shared memory.

SQL Server поддерживает протокол Kerberos через Windows Security Support Provider(SSPI) если используется Windows аутификация на сервере.
Если протокол Kerberos не может быть использован, то используется протокол вызов-ответ(NTLM).

Более подробно можно посмотреть на MSDN-е.
ну и практика:

Итак, после установки MS SQL Server необходимо зарегистрировать наши SPN для нашего экземпляра MS SQL Server. SPN регистрируется при установке, если изначально указали доменную учетную запись.

Первым признаком, что у вас не зарегистрированы SPN для СУБД, это наличие ошибки в логах sql server-а при загрузке сервера:

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/SRV.domain.net:1433 ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/ SRV.domen.net ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

Так во время работы MS SQL Server периодически появляются ошибки вида:
Cannot generate SSPI context






login failed for user NT Authority Anonymous
Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON’. (Microsoft SQL Server, Error: 18456)
Login failed for user ‘(null)’ 
Login failed for user ”
Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.

Linked server connections failing
SSPI handshake failed with error code 0x80090311 while establishing a connection with integrated security; the connection has been closed
SSPI handshake failed with error code 0x80090304 while establishing a connection with integrated security; the connection has been closed

.

Итак, регистрация SPN происходит следующим образом:
      Способ 1  Через команду «setspn» в командной строке

Синтаксис setspn –A <SPN> <Account>.
Пример: «setspn –A MSSQLSvc/SRV.domain.net:1433 domain\ServiceAccount»
Или «setspn –A MSSQLSvc/SRV.domain.net:inst1 domain\ServiceAccount»

в случае , если вы не уверены, что для данного сервера нет дубликатов, стоит зарегистрировать SPN  c предварительной проверкой дубликатов, ключ команды -S:

Пример: «setspn –S MSSQLSvc/SRV.domain.net:1433 domain\ServiceAccount»
Или «setspn –S MSSQLSvc/SRV.domain.net:inst1 domain\ServiceAccount»

Регистрировать SPN необходимо с указанием порта инстанса, так и на название инстанса. На один экземпляр MS SQL Server нужно регистрировать два SPN  с указанием порта и без него.
Для кластера необходимо регистрировать для каждой ноды и общего имени, для AlwaysOn решения так же для каждого инстанса на нодах плюс прослушиватель(Lisener).

      Способ 2 Через консоль ADSI
В консоли ADSI ищем нашу техническую учетную запись, открываем ее свойства, находим атрибут «ServiceProncipalName», вводим так же SPN сервера, жмем кнопку «добавить»


Способ 3, наиболее простой и легкий,  приложение Kerberos Configuration Manager

Данное по скачивается отсюда
После его установки, запускаем, указываем ваш сервер с  MS SQL Server, доменную учетную запись

Приложение простое, но удобное. Если есть проблемы с SPN на сервере, то это будет отображено и предложит вам исправить это или сгенерировать cmd код:

Если все ОК, то будет так:
После этого коннектов к MS SQL Server связанные с SPN у вас не должно быть.
Хороших коннектов Вам!.

Комментариев нет :

Отправить комментарий