Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-01

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-01

Всем привет, сегодня хочу вам рассказать как настраивать SPN в Active Directory, на примере SPN для MS SQL Server 2012. В процессе загрузки свежее установленного экземпляра SQL Server в его логе можно обнаружить ошибку регистрации SPN, в случае если службы SQL Server запускаются от имени пользовательской доменной учетной записи. Необходимо зарегистрировать имя участника-службы (SPN — Service Principal Name) для учетной записи службы SQL Server, чтобы в работе службы могла использоваться проверка подлинности с помощью протокола Kerberos.

Для того чтобы получить информацию о том, что на доменной учетной записи, от имени которой производится запуск SQL Server действительно не зарегистрировано SPN связанных с SQL с помощью утилиты SetSPN выполним команду:

SetSPN -L <domainSQL Service Account>

В нашем примере KOM-AD01-DB03 — это имя сервера SQL, а s-KOM-AD01-DB03-SQL01 — это имя пользовательской доменной учетной записи, из под которой запускаются службы SQL Server на этом сервере.

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-02

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-02

Как мы видим, ни на учетной записи компьютера ни на учетной записи пользователя нет SPN содержащих указатели MSSQLSvc

Помимо утилиты SetSPN мы можем воспользоваться оснасткой “AD Users and Computers” (dsa.msc) с включенным режимом отображения дополнительных компонент…

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-03

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-03

открыв свойства соответствующей учётной записи и перейдя на вкладку редактирования атрибутов можно посмотреть и изменить значение атрибута servicePrincipalName

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-04

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-04

Особенности работы с Kerberos аутентификацией в SQL Server (и в частности управление SPN) рассмотрены в статье KB319723 — How to use Kerberos authentication in SQL Server

Для того чтобы обеспечить нужное для корректной работы Kerberos содержание атрибута servicePrincipalName можно пойти двумя путями:
1) Создать необходимую SPN запись вручную с помощью утилиты SetSPN
Синтаксис команд будет следующий:

setspn –a MSSQLSvc/SQLServerFQDN:1433 DomainSQLAccount
setspn –a MSSQLSvc/SQLServerFQDN DomainSQLAccount

пример setspn -a MSSQLSvc/server19.contoso.com:1433 sqlservice (имя учетки запуска)
setspn -a MSSQLSvc/server19.contoso.com:MSSQL2012 sqlservice

2) Разрешить учетной записи, от имени которой запускается SQL Server, динамическое обновление атрибута servicePrincipalName, выдав разрешения на чтение и запись атрибута servicePrincipalName.

Для того чтобы выполнить второй вариант, откроем оснастку ADSIEdit.msc, перейдём к свойствам объекта – учетной записи. На закладке “Безопасность” (Security) нажмём кнопу “Дополнительно” (Advanced)

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-05

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-05

В диалоговом окне «Дополнительные параметры безопасности» (Advanced Security Settings) нажмём кнопку «Добавить» (Add) …

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-06

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-06

… введём SELF и в открывшемся окне перейдём на закладку «Свойства» (Properties). В окне выбора области применения выберем пункт «Только этот объект» (This object only) и в списке разрешений отметим два пункта:
Read servicePrincipalName
Write servicePrincipalName

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-07

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-07

Сохраним внесённые изменения и затем, при запуске службы SQL Server, сможем убедиться в том, что в журнале регистрации событий появилась запись об успешном создании SPN

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-08

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-08

.а так же увидим что вывод утилиты SetSPN изменился…

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-09

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-09

Убивается командой

setspn -d MSSQLSvc/server19.ваш домен:1433 имя учетной записи от имени которой запускается sql
setspn -d MSSQLSvc/server19.ваш домен:MSSQL2012 имя учетной записи от имени которой запускается sql

Пример

setspn -D MSSQLSvc/virt163.contoso.com:1433 sqlservice
setspn -D MSSQLSvc/virt163.contoso.com sqlservice

Вот пример ситуации когда нужно удаление. Был раньше сервер virt105 и использовался под одни нужды, сервер удален. После по этому же имени virt105 подняли другой сервер, и столкнулись с тем, что SPN уже был занят.

Вот запрос на проверку SPN у virt105

Как настроить SPN (Service Principal Name)-01

Далее попытка его зарегистрировать, и видим, что он уже есть на учетную запись Семина Ивана

Как настроить SPN (Service Principal Name)-02

После удаления старого SPN, по новому все зарегистрировалось.

Как настроить SPN (Service Principal Name)-03

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

я в гугл