Spn что это такое
Active Directory Constrained Delegation и SPN
Протоколом аутентификации в среде Active Directory является Kerberos. Помимо стандартных операций создания учетных записей, под которыми пользователи заходят на свои компьютеры в домене AD, для улучшения защиты рекомендуется для запуска сервисов создавать специальные учетные записи, иногда называемые сервисными учетными записями.
Однако для нормального функционирования некоторых приложений в среде Kerberos, чьи сервисы запускаются под доменной учетной записью, требуется произвести некоторые дополнительные действия. О том, что такое Constrained Delegation и связанное с ним понятие SPN, а также пример их использования, и будет рассказано в данном посте.
Service Principal Names (SPN) — это идентификатор сервиса, запущенного на доменной машине. Например, для учетной записи из-под которой запущен сервис SQL Server, должен быть указан свой SPN.
SPN должен быть уникальным в пределах леса.
У двух типов доменных учетных записей: пользователя и компьютера, только у компьютера существуют автоматически указанные SPN. При вводе комьютера в домен, у его учетной записи автоматически указывается host SPN, которое позволяет сервисам на этой машине запускаться из-под локальных учетных записей Local System и Network Service. Таким образом если для запуска сервисов на машине используется доменная пользовательская учетная запись, для нее необходимо указать SPN.
Примеры SPN для пользовательских учетных записей:
Делегация Kerberos определяет способность одной учетной записи (сервиса) обращаться к другой учетной записи (сервису) используя данные третьей учетной записи (механизм, названный имперсонализацией). Пример, пользователь подключается к IIS серверу, который запрашивает от имени пользователя данные у SQL сервера.
Делегация может быть: неограниченная и ограниченная (constrained).
Ограниченная делегация используется только в пределах одного домена. Однако начиная с Windows Server 2012 это ограничение отменили.
Ограниченная делегация позволяет указать к каким сервисам и на каких машинах дозволено данной учетной записи (сервису) имперсонализировать пользователя.
Для того, чтобы появилась возможность использовать делегацию, у учетной записи должен быть указан хотя бы один SPN.
Пример ограниченной делегации Kerberos:
Итог — список шагов для включения ограниченной делегации Kerberos:
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 содержащих указатели MSSQLSvc. Помимо утилиты SetSPN мы можем воспользоваться оснасткой “AD Users and Computers” (dsa.msc) с включенным режимом отображения дополнительных компонент…
Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-03
открыв свойства соответствующей учётной записи и перейдя на вкладку редактирования атрибутов можно посмотреть и изменить значение атрибута servicePrincipalName
Как настроить SPN (Service Principal Name) в SQL Server и динамическая регистрация SPN-04
Особенности работы с Kerberos аутентификацией в SQL Server (и в частности управление SPN) рассмотрены в статье KB319723 — How to use Kerberos authentication in SQL Server
Для того чтобы обеспечить нужное для корректной работы Kerberos содержание атрибута servicePrincipalName можно пойти двумя путями:
Как настроить 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
Вот пример ситуации когда нужно удаление. Был раньше сервер virt105 и использовался под одни нужды, сервер удален. После по этому же имени virt105 подняли другой сервер, и столкнулись с тем, что SPN уже был занят. Вот запрос на проверку SPN у virt105
Далее попытка его зарегистрировать, и видим, что он уже есть на учетную запись Семина Ивана
После удаления старого SPN, по новому все зарегистрировалось.
SQL Server и динамическая регистрация SPN (Service Principal Name)
В процессе загрузки свежее установленного экземпляра SQL Server в его логе можно обнаружить ошибку регистрации SPN, в случае если службы SQL Server запускаются от имени пользовательской доменной учетной записи.
Необходимо зарегистрировать имя участника-службы (SPN — Service Principal Name) для учетной записи службы SQL Server, чтобы в работе службы могла использоваться проверка подлинности с помощью протокола Kerberos.
Для того, чтобы получить информацию о том, что на доменной учетной записи, от имени которой производится запуск SQL Server действительно не зарегистрировано SPN связанных с SQL с помощью утилиты SetSPN выполним команду вида:
Как мы видим, ни на учетной записи компьютера ни на учетной записи пользователя нет SPN содержащих указатели MSSQLSvc
Помимо утилиты SetSPN мы можем воспользоваться оснасткой “AD Users and Computers” (dsa.msc) с включенным режимом отображения дополнительных компонент…
…открыв свойства соответствующей учётной записи и перейдя на вкладку редактирования атрибутов можно посмотреть и изменить значение атрибута servicePrincipalName
Для того чтобы обеспечить нужное для корректной работы Kerberos содержание атрибута servicePrincipalName можно пойти двумя путями:
1) Создать необходимую SPN запись вручную с помощью утилиты SetSPN
Синтаксис команд будет следующий:
2) Разрешить учетной записи, от имени которой запускается SQL Server, динамическое обновление атрибута servicePrincipalName, выдав разрешения на чтение и запись этого атрибута.
Для того чтобы выполнить второй вариант, откроем оснастку ADSIEdit.msc, перейдём к свойствам объекта – учетной записи. На закладке “Безопасность” (Security) нажмём кнопу “Дополнительно” (Advanced)
В диалоговом окне «Дополнительные параметры безопасности» (Advanced Security Settings) нажмём кнопку «Добавить» (Add) …
… введём SELF и в открывшемся окне перейдём на закладку «Свойства» (Properties). В окне выбора области применения выберем пункт «Только этот объект» (This object only) и в списке разрешений отметим два пункта:
Сохраним внесённые изменения и затем, при запуске службы SQL Server, сможем убедиться в том, что в журнале регистрации событий появилась запись об успешном создании SPN
..а так же увидим что вывод утилиты SetSPN изменился…
Дополнительная информация:
Spn что это такое
Доброго времени суток господа!
Есть небольшой вопросик.
Что есть:
Есть TMG 2010 в домене и RD Session Host c настроенными службами RD GATEWAY и RD WEB Access.
Что необходимо:
Правильно опубликовать RD службы непосредственно через TMG.
Основываясь вот на этой статье http://www.forefront-tmg.ru/tmg/general_configuration/tmg-publishing-rd-part2/ мы прошли процесс добавления сертификата и остановились « Методом делегирования проверки подлинности (Authentication delegation) будет ограниченное делегирование (Kerberos constrained delegation — KCD). Нам также нужно ввести корректное имя Service Principal Name (SPN). В нашей тестовой среде будет использоваться SPN имя HOST/trainer-dc.trainer.intern. «
Далее начались проблемы с понятием, что же такое SPN и где его регистрировать и еще в особенности (HOST) /trainer-dc.trainer.intern.Что такое HOST.
Вопрос:
Век живи, век учись!
Ответы
советую почитать что такое kerberos вообще и как он работает, тогда таких вопросов не будет. например
host это не имя, а тип сервиса к которому обращаются. может быть host, http,mssqlsvc и т.д. constrained delegation самый безопасный метод делегирования
Надеюсь вам поможет данная статья, хоть она для ISA, но правило работы не поменялось.
сертификат на слушателе и сертификат на публикуемом сервере (rdg) это совершенно разные вещи (хоть и могут совпадать):
сертификат на слушателе должен содержать то имя по которому к нему обращается клиент (то что он набирает в браузере)
сертификат на публикуемом сервере должен содержать то имя по которому к серверу обращается тмг, то есть то что написано на вкладке To правила публикации, или то что пишет клиент в браузере если в правиле публикации стоит галка форвардить оригинальные хеадеры.
так что проверяй что у тебя написано в заголовках и что написано в сертификатах
Все ответы
SPN уникальный идентификатор учетки пользователя или сервера, как хоста службы по целевому адресу. Используется например керберосом для предотвращения подмены запроса.
Регистрируется в AD командой setspn, типа
HOST — это имя, которое представляет службу, запущенную на сервере.
HOST — это имя, которое представляет службу, запущенную на сервере.
Век живи, век учись!
советую почитать что такое kerberos вообще и как он работает, тогда таких вопросов не будет. например
host это не имя, а тип сервиса к которому обращаются. может быть host, http,mssqlsvc и т.д. constrained delegation самый безопасный метод делегирования
Да еще один аспект!: Так уж сложилось что TMG у нас в старом домене 2000, а службы публикации в новом 2008 r2! Но при этом OWA для MS Exchange мы опубликовали успешно!
Век живи, век учись!
Ну вот у нас с эти как раз и проблема, сертификат мы скопировали на TMG и собрали слушатель, далее указали сертификат. Но в TMG 2010 есть хорошая новая фича- проверка согласованности правила и вот нам это самое правило показало ошибку, что невозможно проверить сертификат, так как не удается обратится к узлу шлюза терминалов, и соответственно тут уже возникла мысль о том, что TMG 2010 то у нас в одном домене а сам узел шлюза совершенно в другом домене!
Век живи, век учись!
Надеюсь вам поможет данная статья, хоть она для ISA, но правило работы не поменялось.
сертификат на слушателе и сертификат на публикуемом сервере (rdg) это совершенно разные вещи (хоть и могут совпадать):
сертификат на слушателе должен содержать то имя по которому к нему обращается клиент (то что он набирает в браузере)
сертификат на публикуемом сервере должен содержать то имя по которому к серверу обращается тмг, то есть то что написано на вкладке To правила публикации, или то что пишет клиент в браузере если в правиле публикации стоит галка форвардить оригинальные хеадеры.
так что проверяй что у тебя написано в заголовках и что написано в сертификатах
сертификат на слушателе и сертификат на публикуемом сервере (rdg) это совершенно разные вещи (хоть и могут совпадать):
сертификат на слушателе должен содержать то имя по которому к нему обращается клиент (то что он набирает в браузере)
сертификат на публикуемом сервере должен содержать то имя по которому к серверу обращается тмг, то есть то что написано на вкладке To правила публикации, или то что пишет клиент в браузере если в правиле публикации стоит галка форвардить оригинальные хеадеры.
так что проверяй что у тебя написано в заголовках и что написано в сертификатах
Имена субъектов-служб
Имя участника-службы (SPN) — это уникальный идентификатор экземпляра службы. Имена участников-служб используются при проверке подлинности Kerberos для связывания экземпляра службы с учетной записью входа службы. Это позволяет клиентскому приложению запросить проверку подлинности учетной записи службы, даже если у клиента нет имени учетной записи.
Если на компьютерах в лесу установлено несколько экземпляров службы, то каждый экземпляр должен иметь свое имя участника-службы. Каждый экземпляр службы может иметь несколько имен участников-служб при наличии нескольких имен, которые могут использоваться клиентами для проверки подлинности. Например, SPN всегда включает имя главного компьютера, на котором выполняется экземпляр службы, поэтому экземпляр службы может зарегистрировать имя участника-службы для каждого имени или псевдонима узла. Дополнительные сведения о формате SPN и создании уникального имени субъекта-службы см. в разделе форматы имен для уникальных имен участников-служб.
Прежде чем служба проверки подлинности Kerberos сможет использовать имена участников-служб для проверки подлинности службы, имя участника-службы должно быть зарегистрировано в объекте учетной записи, используемом экземпляром службы для входа в систему. Данное имя субъекта-службы может быть зарегистрировано только в одной учетной записи. Для служб Win32 установщик службы задает учетную запись входа при установке экземпляра службы. Затем установщик формирует имена участников-служб и записывает их в качестве свойства объекта Account в домен Active Directory Services. При изменении учетной записи входа в экземпляр службы имена участников-служб должны быть повторно зарегистрированы в новой учетной записи. Дополнительные сведения см. в разделе как служба регистрирует свои имена участников-служб.
Когда клиент хочет подключиться к службе, он определяет местонахождение экземпляра службы, составляет для него основное имя, подключается к службе и представляет ей это имя для проверки подлинности. Дополнительные сведения см. в разделе как клиенты составлять имена участников-служб Службы.