Немного теории.
MS SQL Server поддерживает сетевую проверку через следующие типы проверок:
MS SQL Server поддерживает Kerberos для следующих сетевых протоколов:
- TCP\IP
- Именованные каналы(Shared pipes)
- Shared memory.
ну и практика:
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
.
Или «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»
После его установки, запускаем, указываем ваш сервер с 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).ну и практика:
Итак, после установки 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
contextlogin failed for user NT Authority Anonymous
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 у вас не
должно быть.
Хороших коннектов Вам!.
Комментариев нет :
Отправить комментарий