Регистрация имени субъекта-службы для подключений Kerberos
Чтобы использовать проверку подлинности Kerberos с SQL Server, оба из следующих условий должны иметь значение true:
- Компьютеры клиента и сервера должны быть частью одного домена Windows или доверенных доменов.
- Имя участника-службы (SPN) должно быть зарегистрировано в службе каталогов Active Directory, которая играет роль центра распределения ключей в домене Windows. Имя субъекта-службы после регистрации сопоставляется с учетной записью Windows, запустившей экземпляр службы SQL Server. Если регистрация имени субъекта-службы не выполнена или завершилась неудачно, уровень безопасности Windows не может определить учетную запись, связанную с именем субъекта-службы, и проверка подлинности Kerberos не используется.
Примечание. Если сервер не может автоматически зарегистрировать имя субъекта-службы, имя следует зарегистрировать вручную. См. раздел Регистрация имени участника-службы вручную.
Вы можете убедиться, что подключение использует Kerberos, запрашивая динамическое sys.dm_exec_connections представление управления. Запустите следующий запрос и проверьте значение столбца auth_scheme , который является KERBEROS включенным Kerberos.
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;
Диспетчер конфигурации Microsoft Kerberos для SQL Server — это диагностическое средство, которое помогает устранять неполадки Kerberos, связанные с проблемами подключения при использовании SQL Server. Дополнительные сведения см. в разделе Диспетчер конфигурации Microsoft Kerberos для SQL Server.
Роль имени участника-службы в проверке подлинности
Когда приложение открывает подключение и использует проверку подлинности Windows, SQL Server Native Client передает имя компьютера, имя экземпляра и имя субъекта-службы (необязательно) SQL Server. Если соединение передает имя субъекта-службы, оно используется без изменений.
Если соединение не передает имя субъекта-службы, создается имя субъекта-службы по умолчанию, основанное на используемом протоколе, имени сервера и имени экземпляра.
В обоих предыдущих сценариях имя участника-службы отправляется в центр распределения ключей, чтобы получить токен безопасности для проверки подлинности соединения. Если токен безопасности невозможно получить, проверка подлинности использует NTLM.
Имя участника-службы — это имя, по которому клиент однозначно идентифицирует экземпляр службы. Служба проверки подлинности Kerberos может использовать основное имя для проверки подлинности служб. Когда клиент хочет подключиться к службе, он определяет местонахождение экземпляра службы, составляет для него основное имя, подключается к службе и представляет ей это имя для проверки подлинности.
Сведения в этой статье также относятся к конфигурациям SQL Server, которые используют кластеризацию.
Для входа на SQL Server рекомендуется использовать проверку подлинности Windows. Клиенты, использующие проверку подлинности Windows, проходят проверку подлинности NTLM или Kerberos. В среде Active Directory сначала всегда выполняется проверка подлинности по протоколу Kerberos.
Разрешения
При запуске службы ядра СУБД выполняется попытка регистрации имени субъекта-службы (SPN). Предположим, что учетная запись, запускающая SQL Server, не имеет разрешения на регистрацию имени субъекта-службы в доменных службах Active Directory. В этом случае этот вызов завершается ошибкой, и предупреждение регистрируется как в журнале событий приложения, так и в журнале ошибок SQL Server.
Чтобы зарегистрировать имя субъекта-службы, ядро СУБД должно работать под встроенной учетной записью, например Local System (не рекомендуется), или NETWORK SERVICE учетной записью, которая имеет разрешение на регистрацию имени участника-службы. Вы можете зарегистрировать имя субъекта-службы с помощью учетной записи администратора домена, но это не рекомендуется в рабочей среде. SQL Server можно запустить с помощью виртуальной учетной записи или управляемой учетной записи службы (MSA). Виртуальные учетные записи и MSAs могут зарегистрировать имя субъекта-службы. Если SQL Server не запускается ни под одной из этих учетных записей, имя субъекта-службы не регистрируется при запуске, и администратору домена необходимо зарегистрировать имя вручную.
Форматы имени участника-службы
Формат имени субъекта-службы поддерживает проверку подлинности Kerberos в TCP/IP, именованных каналах и общей памяти. Для именованных экземпляров и экземпляров по умолчанию поддерживаются следующие форматы имени участника-службы.
Именованный экземпляр
- MSSQLSvc/:[ | ], где:
- MSSQLSvc — это зарегистрированная служба.
- — полное доменное имя сервера.
- — номер порта TCP.
- — имя экземпляра SQL Server.
Экземпляр по умолчанию
- MSSQLSvc/: | MSSQLSvc/ , где:
- MSSQLSvc — это зарегистрированная служба.
- — полное доменное имя сервера.
- — номер порта TCP.
Форматы имени субъекта-службы Описание MSSQLSvc/: 1 Сформированное поставщиком имя участника-службы для экземпляра по умолчанию, когда используется протокол TCP. — номер порта TCP. MSSQLSvc/ Сформированное поставщиком имя участника-службы для экземпляра по умолчанию, когда используется протокол, отличный от TCP. — полное доменное имя. MSSQLSvc/: Сформированное поставщиком имя участника-службы (по умолчанию) для именованного экземпляра, когда используется протокол, отличный от TCP. — имя экземпляра SQL Server. 1 Формат имени участника-службы не требует номера порта. Сервер с несколькими портами или протокол, который не использует номера портов, по-прежнему может использовать проверку подлинности Kerberos.
Для подключения TCP/IP, где TCP-порт включен в имя субъекта-службы, SQL Server должен включить протокол TCP для подключения пользователя с помощью проверки подлинности Kerberos.
Автоматическая регистрация имени участника-службы
При запуске экземпляра ядра СУБД SQL Server SQL Server пытается зарегистрировать имя субъекта-службы для службы SQL Server. Если экземпляр остановлен, SQL Server попытается отменить регистрацию имени субъекта-службы (SPN). Для подключения TCP/IP имя субъекта-службы регистрируется в формате MSSQLSvc/: . Именованные экземпляры и экземпляр по умолчанию регистрируются как MSSQLSvc , опираясь на значение, чтобы отличить экземпляры.
Для других подключений, поддерживающих Kerberos, имя субъекта-службы зарегистрировано в формате MSSQLSvc/: именованного экземпляра. Формат регистрации экземпляра MSSQLSvc/ по умолчанию.
Чтобы предоставить разрешения учетной записи запуска SQL Server, зарегистрировать и изменить имя субъекта-службы, выполните следующие действия.
- На компьютере контроллера домена перейдите к пользователям и компьютерам Active Directory.
- ВыберитеВид > Дополнительно.
- В разделе Компьютеры найдите компьютер SQL Server, а затем щелкните его правой кнопкой мыши и выберите Свойства.
- Перейдите на вкладку «Безопасность» и нажмите кнопку «Дополнительно«.
- В списке, если учетная запись запуска SQL Server не указана, нажмите кнопку «Добавить «, чтобы добавить ее. После добавления выполните следующие действия.
- Выберите учетную запись и нажмите кнопку «Изменить«.
- В разделе «Разрешения» выберите Удостоверенная запись servicePrincipalName.
- Выполните прокрутку вниз и в разделе Свойства выберите:
- Чтение servicePrincipalName
- Запись servicePrincipalName
- Нажмите дважды кнопку ОК.
Если учетная запись службы не обладает разрешениями на регистрацию и отмену регистрации имени участника-службы, возможно, эти действия придется выполнить вручную.
Регистрация имени участника-службы вручную
Чтобы зарегистрировать имя участника-службы вручную, можно использовать средство setpn , встроенное в Windows. setspn.exe — это средство командной строки, позволяющее читать, изменять и удалять свойство каталога субъектов-служб. Это средство также позволяет просматривать текущие имена участников-служб, устанавливать значения по умолчанию для имен участников-служб учетных записей и добавлять или удалять дополнительные имена участников-служб.
Дополнительные сведения о средстве setpn , необходимые разрешения и примеры использования, просмотрите setpn.
В следующем примере демонстрируется синтаксис, используемый для ручной регистрации имени субъекта-службы для соединения TCP/IP с помощью учетной записи пользователя домена.
setspn -S MSSQLSvc/myhost.redmond.microsoft.com:1433 redmond\accountnameЕсли имя участника-службы уже существует, то перед повторной регистрацией его необходимо удалить. Это можно сделать с помощью setpn с коммутатором -D . В следующих примерах демонстрируется регистрация вручную нового имени участника-службы, основанного на экземпляре. Для экземпляра по умолчанию, использующего учетную запись пользователя домена следует использовать:
setspn -S MSSQLSvc/myhost.redmond.microsoft.com redmond\accountnameДля именованного экземпляра следует использовать:
setspn -S MSSQLSvc/myhost.redmond.microsoft.com:instancename redmond\accountnameДополнительные сведения о конфигурациях группы доступности AlwaysOn см. в статьях «Прослушиватели» и «Kerberos» (SPN).
Клиентские подключения
Указанные пользователями имена участников-служб поддерживаются клиентскими драйверами. Однако если имя субъекта-службы не предоставлено, оно создается автоматически на основе типа клиентского подключения. Для TCP-подключения имя субъекта-службы в формате MSSQLSvc/FQDN:[] используется как для именованных, так и для экземпляров по умолчанию.
Для именованных каналов и подключений к общей памяти имя субъекта-службы в формате MSSQLSvc/: используется для именованного экземпляра и MSSQLSvc/ используется для экземпляра по умолчанию.
Использование учетной записи службы в качестве имени субъекта-службы
Учетные записи служб могут быть использованы в качестве имен участников-служб. Они указываются с помощью атрибута соединения для проверки подлинности Kerberos и имеют следующие форматы:
- username\@domain или domain\username для учетной записи пользователя домена
- machine$\@domain или host\FQDN для учетной записи домена компьютера, например Local System или NETWORK SERVICE .
Чтобы определить метод проверки подлинности соединения, выполните следующий запрос.
SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;Параметры проверки подлинности по умолчанию
В следующей таблице описываются значения по умолчанию для проверки подлинности, используемые, основываясь на сценариях регистрации имен участника-службы.
Сценарий Метод проверки подлинности Имя участника-службы сопоставляется с правильной учетной записью домена, виртуальной учетной записью, управляемой учетной записью службы или встроенной учетной записью. Например, Local System или NETWORK SERVICE . Локальные соединения используют протокол NTLM, удаленные — протокол Kerberos. Имя участника-службы является правильной учетной записью домена, виртуальной учетной записью, управляемой учетной записью службы или встроенной учетной записью. Локальные соединения используют протокол NTLM, удаленные — протокол Kerberos. Имя участника-службы сопоставляется с неправильной учетной записью домена, виртуальной учетной записью, управляемой учетной записью службы или встроенной учетной записью. Проверка подлинности не пройдена. Поиск имени субъекта-службы завершается ошибкой или не сопоставляется с правильной учетной записью домена, виртуальной учетной записью, управляемой учетной записью службы, встроенной учетной записью, либо не является правильной учетной записью домена, виртуальной учетной записью, управляемой учетной записью службы или встроенной учетной записью. Протокол NTLM используется в локальных и удаленных соединениях. Правильным будет сопоставление, при котором зарегистрированное имя субъекта-службы сопоставляется с учетной записью, с помощью которой запущена служба SQL Server.
Комментарии
В выделенном административном соединении (DAC) используется имя субъекта-службы, основанное на имени экземпляра. Проверку подлинности по протоколу Kerberos можно использовать, если имя участника-службы было успешно зарегистрировано. В качестве альтернативы пользователь может указать в качестве имени участника-службы имя учетной записи.
Если во время запуска происходит ошибка регистрации имени субъекта-службы, она заносится в журнал ошибок SQL Server, после чего установка продолжается.
Если дерегистрация имени субъекта-службы завершается сбоем во время завершения работы, эта ошибка записывается в журнал ошибок SQL Server и продолжается завершение работы.
Дальнейшие действия
- Поддержка имени субъекта-службы в клиентских соединениях
- Имена субъекта-службы в клиентских соединениях (OLE DB)
- Имена субъектов-служб в клиентских соединениях (ODBC)
- Компоненты собственного клиента SQL Server
- Управление проблемами проверки подлинности по протоколу Kerberos в средах служб Reporting Service
Что такое и как работает SPN?
DNS имя это имя для хоста. SPN — это «DNS имя» для определенного сервиса на хосте.
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
- +2 ещё
Python как получить данные из 1С находящейся на удаленном рабочем столе?
- 1 подписчик
- 3 часа назад
- 37 просмотров

- PHP
- +3 ещё
Как правильно организовать хранение файлов?
- 1 подписчик
- 06 янв.
- 237 просмотров

- Сетевое администрирование
- +1 ещё
Возможно ли изменить ipv4 для VPS ovhcloud?
- 2 подписчика
- 05 янв.
- 163 просмотра

- Ubuntu
- +1 ещё
Что значит «когда станет больше серверов»?
- 1 подписчик
- 31 дек. 2023
- 297 просмотров

- Windows Server
- +2 ещё
Как закрыть файловые сессии?
- 2 подписчика
- 29 дек. 2023
- 178 просмотров

- Системное администрирование
Как при помощи локальных групповых политик ограничить добавление данных на рабочий стол пользователем?
- 2 подписчика
- 28 дек. 2023
- 145 просмотров

- Windows Server
- +2 ещё
Как решить ошибку «LDAP code 49»?
- 3 подписчика
- 28 дек. 2023
- 282 просмотра

- Сетевое администрирование
- +1 ещё
Как узнать кто пользуется определенным компьютером?
- 3 подписчика
- 28 дек. 2023
- 287 просмотров

- Windows Server
Как для пользователей в терминальном сервере убрать отображение других пользователей в диспетчере задач?
- 1 подписчик
- 27 дек. 2023
- 59 просмотров

- Системное администрирование
- +1 ещё
Как отключить сохранение пароля от сетевой папки synology ds?
- 1 подписчик
- 27 дек. 2023
- 41 просмотр
от 100 000 до 200 000 ₽
ГК «Юг Руси» • Ростов-на-Дону
от 105 000 ₽
от 145 000 ₽
08 янв. 2024, в 20:10
500 руб./за проект
08 янв. 2024, в 19:59
50000 руб./за проект
08 янв. 2024, в 18:21
50000 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Как наработать навык декомпозиции задач?
- 4 подписчика
- 3 ответа
- 2 подписчика
- 0 ответов
- 2 подписчика
- 2 ответа
- 3 подписчика
- 1 ответ
- 3 подписчика
- 0 ответов
- 2 подписчика
- 0 ответов
- 2 подписчика
- 5 ответов
- 2 подписчика
- 3 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
Создание SPN и Keytab файла
Многие сервисы (apache, nginx и др.) могут использовать keytab-файлы для Kerberos аутентификации в домене без ввода пароля. SSO-аутентификация избавляет доменного пользователя от повторных запросов на прохождение аутентификации. Пользователь вводит доменный логин/пароль всего один раз — при логоне в операционную систему.
SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса даже не зная имени пользователя.
До того как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.
Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.Keytab-файл — это файл содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.
Внимание! Каждый кто имеет разрешения на чтения keytab-файла может воспользоваться любыми ключами в нем. Чтобы предотвратить нежелательное использование, ограничивайте права доступа при создании keytab-файла
Создание SPN
DC Windows
Для начала необходимо создать на контроллере домена (DC) пользователя к которому впоследствии будет привязан SPN.
Например, создадим пользователя webauth:
Далее необходимо запретить пользователю смену пароля и не ограничивать срок действия пароля. Последнее важно, так как иначе при истечении срока действия пароля придется не только менять пароль, но и заново генерировать keytab-файлы привязанные к этому пользователю:
В целях безопасности рекомендуется исключить сервисного пользователя из доменных групп.
Создать SPN для веб-сервера HTTP/web.win.alt и привязать его к пользователю webauth (этот шаг делать отдельно не обязательно, т.к. его автоматически выполняет утилита ktpass при создании keytab-файла).
Для этого в командной строке на контроллере домена выполнить следующую команду:C:\>setspn -A HTTP/web.win.alt webauth Checking domain DC=win,DC=alt Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt HTTP/web.win.alt Updated object
Вывести список SPN записей, привязанных к пользователю:
C:\>setspn -L webauth Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt: HTTP/web.win.alt
Samba DC
Создать пользователя, с которым будут связаны создаваемые SPN:
# samba-tool user create --random-password webauth # samba-tool user setexpiry webauth --noexpiry
Команда привязки SPN к пользователю (возможно несколько раз для разных сервисов):
# samba-tool spn add /
Привязать к пользователю SPN:
# samba-tool spn add HTTP/web.test.alt webauthDC FreeIPA
Для добавления SPN необходимо в веб-интерфейсе сервера FreeIPA выбрать «Идентификация»→«Службы» и нажать кнопку «Добавить» «Identity»→«Services»→«Add»:
В открывшемся окне необходимо выбрать имя сервиса и имя узла, к которому будет привязан сервис:
Чтобы добавить SPN с коротким именем узла (например, это необходимо для samba), следует выполнить команду:
# ipa service-add cifs/samba --forceГенерирование keytab-файла
Создать keytab-файл можно разными способами.
Рассмотрим некоторые из них.На контроллере домена Windows
Чтобы создать keytab-файл необходимо выполнить следующую команду:
C:\>ktpass -princ HTTP/web.wim.alt@WIN.ALT -mapuser webauth -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\web.keytab Targeting domain controller: dc1.win.alt Using legacy password setting method Successfully mapped HTTP/web.wim.alt to webauth. Key created. Output keytab to C:\web.keytab: Keytab version: 0x502 keysize 59 HTTP/web.wim.alt@WIN.ALT ptype 1 (KRB5_NT_PRINCIPAL) vno 6 etype 0x17 (RC4-HMAC) keylength 16 (0x1a4b1757588cab6298e29e91c06df58d)
- -princ — имя принципала содержащее SPN и Kerberos-область (realm);
- -mapuser — пользователь к которому привязывается SPN;
- -pass — пароль пользователя;
- -ptype — указывает тип принципала (рекомендуется KRB5_NT_PRINCIPAL);
- -out — путь и имя генерируемого файла.
В результате выполнения данной команды будет создан keytab файл C:\web.keytab для SPN записи сервиса HTTP/web.win.alt. При этом SPN запись привязывается к учетной записи webauth с указанным паролем.
После привязки SPN к учетной записи, «Имя входа пользователя» («User logon name») в свойствах пользователя станет равен SPN:
В одном keytab-файле могут хранится ключи нескольких SPN. Дополнительные имена SPN и ключи добавляются в файл keytab с помощью отдельных параметров утилиты ktpass (-in, -setupn, -setpass).
На машине с ALT
С помощью ktutil
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.Создание_SPN_и_Keytab_файла#Samba_DC).
Установить пакет krb5-kadmin :
# apt-get install krb5-kadminЗапустить ktutil и создать keytab-файл:
# ktutil ktutil: addent -password -p HTTP/web.test.alt@TEST.ALT -k 6 -e RC4-HMAC Password for HTTP/web.test.alt@TEST.ALT: ktutil: wkt web.keytab ktutil: q
С помощью Samba
Для создания keytab-файла с помощью samba, необходима работающая kerberos-аутентификация.
При использовании этого метода нет необходимости генерировать и привязывать SPN на контроллере домена.
Привести файл настроек /etc/samba/smb.conf к следующему виду:
realm = TEST.ALT workgroup = TEST security = ads dedicated keytab file = /etc/krb5.keytab kerberos method = dedicated keytab
После ввода машины в домен в домене будет создан аккаунт компьютера к которому можно привязать SPN.
Создать keytab-файл для компьютера:
# net ads keytab create -UAdministrator Password for [TEST\Administrator]:
Добавить в keytab-файл принципал сервиса «HTTP»:
# net ads keytab add HTTP -U Administrator Processing principals to add. Password for [TEST\Administrator]:
Далее можно поменять права на keytab и отредактировать его утилитой kutil.
С помощью Samba DC
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.Создание_SPN_и_Keytab_файла#Samba_DC).
Все действия выполняются на машине с домен-контроллером.
Команда создания keytab:
# samba-tool domain exportkeytab /tmp/keytab --principal=/
Эту команду можно выполнить несколько раз для всех SPN, которые нужно поместить в keytab.
Например, создать keytab:
# samba-tool domain exportkeytab /tmp/http.keytab --principal=HTTP/web.test.alt Export one principal to /tmp/http.keytab# klist -ke /tmp/http.keytab Keytab name: FILE:/tmp/http.keytab KVNO Principal ---- -------------------------------------------------------------------------- 2 HTTP/web.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
С помощью FreeIPA Client
Для этого способа необходимо ввести машину в домен FreeIPA [[1]]
Для генерации keytab-файла используется команда:
# ipa-getkeytab -s -p -k
Пример генерации keytab-файла (предварительно необходимо выполнить аутентификацию в качестве учетной записи администратора домена)
# kinit admin Password for admin@EXAMPLE.TEST: # ipa-getkeytab -s ipa.example.test -p HTTP/web.example.test -k /tmp/http.keytab Таблица ключей успешно получена и сохранена в: /tmp/http.keytab
Содержимое файла keytab можно просмотреть с помощью команды klist :
# klist -ekt /tmp/http.keytab Keytab name: FILE:/tmp/http.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha384-192) 1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha256-128) 1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha1-96) 1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha1-96)
Проверка keytab-файла
Для проверки keytab-файла необходима настроенная Kerberos-аутентификация.
Это можно проверить командой:# kinit administrator@TEST.ALTОна должна запрашивать пароль и получать билет:
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@TEST.ALT Valid starting Expires Service principal 03.05.2023 10:11:20 03.05.2023 20:11:20 krbtgt/TEST.ALT@TEST.ALT renew until 10.05.2023 10:11:15
Попробуем зарегистрироваться с помощью keytab-файла:
# kinit -5 -V -k -t /tmp/web.keytab HTTP/test.alt Using default cache: /tmp/krb5cc_0 Using principal: HTTP/test.alt@TEST.ALT Using keytab: /tmp/web.keytab Authenticated to Kerberos v5Примечание: Если при проверке авторизации возникает ошибка:
kinit: Client not found in Kerberos database while getting initial credentials
Необходимо, например в ADMC, изменить для пользователя значение параметра userPrincipalName на значение servicePrincipalName + REALM (в данном примере нужно поменять webauth на HTTP/test.alt@TEST.ALT).
Это происходит потому что samba-tool , в отличии от привязки SPN к учетной записи в Windows, не меняет userPrincipalName (Имя входа пользователя) в свойствах пользователя на SPN.
Проверить версию ключей на сервере можно, предварительно получив билет, с помощью команды:
# kvno HTTP/test.alt@TEST.ALT HTTP/test.alt@TEST.ALT: kvno = 2
Проверить версию kvno и список ключей в keytab-файле можно с помощью команды (по умолчанию для файла /etc/krb5.keytab ):
# klist -ket# klist -ket /etc/nginx/web.keytab Keytab name: FILE:/etc/nginx/web.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 30.04.2023 12:41:07 HTTP/dc.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac) 2 30.04.2023 13:34:31 HTTP/test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
После всех проверок желательно удалить полученные билеты командой:
# kdestroy- Active Directory
- FreeIPA
Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN


Всем привет, сегодня хочу вам рассказать как настраивать 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 выполним команду:
В нашем примере 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-03
открыв свойства соответствующей учётной записи и перейдя на вкладку редактирования атрибутов можно посмотреть и изменить значение атрибута servicePrincipalName

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-04
Для того чтобы обеспечить нужное для корректной работы Kerberos содержание атрибута servicePrincipalName можно пойти двумя путями:
- Создать необходимую SPN запись вручную с помощью утилиты SetSPN. Синтаксис команд будет следующий:
setspn –S MSSQLSvc/SQLServerFQDN:1433 DomainSQLAccount
setspn –S MSSQLSvc/SQLServerFQDN DomainSQLAccountпример setspn -S MSSQLSvc/server19.contoso.com:1433 sqlservice (имя учетки запуска)
setspn -S MSSQLSvc/server19.contoso.com:MSSQL2012 sqlservice
- Разрешить учетной записи, от имени которой запускается SQL Server, динамическое обновление атрибута servicePrincipalName, выдав разрешения на чтение и запись атрибута servicePrincipalName. Для того чтобы выполнить второй вариант, откроем оснастку ADSIEdit.msc, перейдём к свойствам объекта – учетной записи. На закладке “Безопасность” (Security) нажмём кнопу “Дополнительно” (Advanced)

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-05
В диалоговом окне «Дополнительные параметры безопасности» (Advanced Security Settings) нажмём кнопку «Добавить» (Add)

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-06
введём SELF и в открывшемся окне перейдём на закладку «Свойства» (Properties). В окне выбора области применения выберем пункт «Только этот объект» (This object only) и в списке разрешений отметим два пункта:

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

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

Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-09
Как удалить SPN
setspn -d MSSQLSvc/server19.ваш домен:1433 имя учетной записи от имени которой запускается sql
setspn -d MSSQLSvc/server19.ваш домен:MSSQL2012 имя учетной записи от имени которой запускается sqlsetspn -D MSSQLSvc/virt163.contoso.com:1433 sqlservice
setspn -D MSSQLSvc/virt163.contoso.com sqlserviceВот пример ситуации когда нужно удаление. Был раньше сервер virt105 и использовался под одни нужды, сервер удален. После по этому же имени virt105 подняли другой сервер, и столкнулись с тем, что SPN уже был занят. Вот запрос на проверку SPN у virt105

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

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

Популярные Похожие записи:
Не удалось назначить SPN учетной записи, ошибка 0x21c7/8647
База данных диспетчера учетных записей на сервере не содержит записи
Ошибка запуска службы «error 1069 the service did not start»- Как переместить базу данных ADFS SQL с одного сервера на другой
Как дать права на Deleted Objects в Active Directory- NLB: Access denied. Error connecting to server