Майк Стивенс — старший инженер поддержки в группе Microsoft Commercial Technical Support. Имеет сертификаты Microsoft Certified IT Professional (MCITP-EA) и Microsoft Certified Trainer (MCT)
. В первой части статьи я расскажу о преимуществах применения ограниченного делегирования Kerberos и Windows Server 2012 по сравнению с предыдущими версиями Windows Server.
Что такое ограниченное делегирование?
Ограниченное делегирование позволяет ограничить внутренние службы, для которых внешняя служба может запросить билеты от имени другого пользователя. Типичный пример ограниченного делегирования – процесс взаимодействия браузер-IIS-SQL Server. В этой ситуации пользователь переходит к серверу веб-отчетов, размещенному на Microsoft IIS, который извлекает данные с помощью проверенного подключения к системе Microsoft SQL Server. Серверу IIS необходимо пройти проверку на компьютере SQL Server от имени пользователя. Через делегирование Kerberos сервер (то есть внешняя служба) может запросить билет службы для любой службы (то есть внутренней службы) — не только SQL Server — от имени пользователя. Это означает, что сервер IIS, в сущности, может выполнить проверку подлинности от имени пользователя в SQL Server, на файловом ресурсе с общим доступом или в веб-службе. С помощью ограниченного делегирования можно ограничить сервер IIS (внешний компонент), чтобы он мог представлять пользователя только в SQL Server (внутренний компонент) и ни в одной другой службе или приложении.
Ограниченное делегирование Kerberos было частью операционной системы со времен Windows Server 2003. Администратор должен настроить список разрешенных полных имен пользователя (SPN) для объектов пользователей и компьютеров в Active Directory (AD). Вы добавляете список имен SPN, представляющий внутренние службы, из которых внешней службе позволено запрашивать билеты от имени пользователя к атрибуту ms-DS-Allowed-To-Delegate-To субъекта, который выполняет приложение или службу на внешнем сервере. В предшествующем примере внешняя служба — IIS, а внутренняя — SQL Server. Чтобы ограничить делегирование для IIS, следует добавить имена SPN для экземпляров SQL Server, выполняемых на компьютере SQL Server, к атрибуту ms-DS-Allowed-To-Delegate-To учетной записи компьютера IIS в AD (или учетной записи пользователя, от имени которой запущен пул приложений IIS). В этой модели внешняя служба ограничена лишь возможностью запрашивать билеты службы, перечисленные в атрибуте ms-DS-Allowed-To-Delegate-To. Недостаток этой модели делегирования — зависимость от имен SPN.
Полные имена пользователя SPN
Имена SPN отличаются сложностью управления. Несмотря на концептуальную простоту, имена SPN могут стать причиной значительных трудностей, связанных с уникальными ограничениями.
В Kerberos имена SPN используются для идентификации субъекта безопасности, ответственного за запуск приложения или службы. Это позволяет центру распространения ключей Key Distribution Center (KDC) шифровать билеты и ключи с хэшированием, чтобы субъект безопасности (запускающий приложение или службу) мог расшифровать билет службы при получении запроса AP_REQ. При такой структуре необходимо, чтобы имена SPN, зарегистрированные в субъекте безопасности, были уникальными для леса AD. Имя SPN, зарегистрированное в нескольких субъектах безопасности, приведет к сбою проверки подлинности.
На первый взгляд, ограниченное делегирование противоречит основному правилу регистрации дублированных имен SPN; но это только кажется. KDC не обращается к атрибуту ms-DS-Allowed-To-Delegate-To при попытке сопоставить SPN субъекту безопасности. Поэтому требование уникальности SPN ограничено лишь значениями в атрибуте servicePrincipalName. Чтобы ограничить делегирование службы или приложения, необходимо составить список имен SPN службы на субъекте безопасности, который запускает приложение на внешнем сервере.
Управлять количеством имен SPN, знать место и время их регистрации, и избегать дубликатов — трудоемкая задача. Поэтому ограниченное делегирование сложно реализовать, обслуживать и диагностировать.
Точка делегирования
Ограниченное делегирование — модель, которая управляет делегированием на внешнем сервере. Большинство моделей делегирования управляют точкой делегирования, ближайшей к ресурсу (то есть внутреннему компоненту). При реализации делегирования на внешнем компоненте обязанности управления изымаются у администратора ресурса и передаются администратору внешнего сервера (или приложения). Такая модель не позволяет администратору ресурса управлять доступом к ресурсу. В существующей модели для изменения атрибута ms-DS-Allowed-To-Delegate-To необходимы права администратора домена. Таким образом, требуются дополнительные административные усилия для управления ограниченным делегированием.
Область делегирования
Область делегирования определяет предел распространения делегирования с внешнего сервера на внутренний. Область существующей модели ограниченного делегирования не выходит за рамки домена, то есть субъект безопасности, выполняющий приложение, может передавать билеты ограниченного делегирования только приложению или службе, выполняемой субъектом безопасности в том же домене. Нельзя использовать ограниченное делегирование в доверенных доменах или лесах.
Новшества Windows Server 2012
В Server 2012 появился новый тип ограниченного делегирования Kerberos, в котором устранены многие недостатки предшествующей модели. В новой реализации ограниченного делегирования удалены зависимости схемы делегирования от имен SPN, устранена необходимость в административных правах домена, администратору ресурса разрешается самостоятельно выполнять делегирование, а также расширена область делегирования.
В ограниченном делегировании в Server 2012 появилась концепция управления делегированием билетов службы с использованием дескриптора безопасности вместо списка разрешенных имен SPN. В результате упрощается делегирование благодаря предоставляемой ресурсу возможности определить, каким субъектам безопасности разрешено запрашивать билеты от имени другого пользователя.
На приведенном рисунке показан простой пример. Сервер в домене A выполняет приложение IIS. Субъект безопасности, выполняющий пул AppPool приложений IIS, имеет имена SPN, зарегистрированные для внешней службы или приложения (HTTP/app1.contoso.com). Эти имена SPN позволяют пользователям проверить подлинность внешнего сервера с помощью обычной проверки Kerberos.
Рисунок. Ограниченное делегирование в Server 2012 |
Приложение получает данные из внутреннего сервера в домене B, на котором выполняется SQL Server. Субъект безопасности, выполняющий службу SQL Server, имеет имена SPN, зарегистрированные для SQL Server, и экземпляры SQL Server. Такая схема обычна для включения проверки подлинности Kerberos. Центр распространения ключей KDC в домене, в котором находится субъект безопасности, выполняющий SQL Server, получает запрос Service-for-User-to-Proxy (S4U2Proxy) службы предоставления билетов Ticket Granting Service (TGS) от сервера IIS, действующего от имени другого пользователя. KDC читает дескриптор безопасности, сохраненный в атрибуте msDS-AllowedToActOnBehalfOfOtherIdentity на субъекте безопасности, выполняющем службу SQL Server, и проверяет доступ с использованием удостоверения, с которым работает группа приложений IIS. В случае успеха процесс проверки подлинности продолжается, а неудачная проверка доступа приводит к ошибке проверки подлинности.
Ограниченное делегирование на основе ресурсов функционирует корректно, независимо от функционального уровня домена и числа контроллеров домена, работающих с версией Windows Server, предшествующей Server 2012, при наличии, по крайней мере, одного контроллера домена Server 2012 в том же домене, в котором расположен внешний сервер, и одного контроллера домена Server 2012 в домене, содержащем внутренний сервер. Если домен гибридный (имеются как контроллеры домена Server 2012, так и контроллеры с предшествующей версией Windows Server), то компьютеры Windows 8 и Windows 2012 работают с контроллером домена Server 2012 для ограниченного делегирования на основе ресурсов, целенаправленно обнаруживая контроллер домена Server 2012.
Требования
Для новой реализации ограниченного делегирования Kerberos необходимо выполнить следующие требования:
- центры распространения ключей KDC Server 2012 должны находиться в домене внешней учетной записи;
- центры KDC Server 2012 должны находиться в домене внутренней учетной записи;
- внешний сервер должен работать с Server 2012.
Необходимость в центрах KDC Server 2012 объясняется тем, что это единственные центры KDC, обеспечивающие возвращение ссылочных запросов S4U2Proxy, и использованием нового атрибута msDS-AllowedToActOnBehalfOfOtherIdentity для учетной записи службы. Для внешнего сервера требуется Server 2012, так как версия Kerberos на этих серверах распознает необходимость получить ссылки S4U2Proxy на доверенные домены и леса.
Управление
Для управления ограниченным делегированием Kerberos в Server 2012 применяется Windows PowerShell. Используйте следующие команды Windows PowerShell для управления ограниченным делегированием. Обычно приходится задействовать Get-ADUser, Get-ADComputer или Get-ADServiceAccount субъекта, выполняющего внешнюю службу, и передавать этот объект субъекта в качестве значения для аргумента -PrincipalsAllowedToDelegateToAccount.
Set-ADComputer computerName -PrincipalsAllowedToDelegateToAccount principal1, principal2,. .. Set-ADUser userName -PrincipalsAllowedToDelegateToAccount principal1, principal2,. .. Set-ADServiceAccount serviceAccountName -PrincipalsAllowedToDelegateToAccount principal1, principal2,. .. Get-ADComputer computerName -Property PrincipalsAllowedToDelegateToAccount Get-ADUser userName -Property PrincipalsAllowedToDelegateToAccount Get-ADServiceAccount serviceName -Property PrincipalsAllowedToDelegateToAccount
В этой статье я перечислил проблемы, возникающие перед ИТ-администраторами, внедряющими ограниченное делегирование Kerberos. Убедительный ответ на эти проблемы дает Server 2012 благодаря ограниченному делегированию Kerberos на основе ресурсов. Во второй части статьи будут приведены дополнительные подробности о принципах ограниченного делегирования на основе ресурсов и последовательности действий при проверке подлинности, совершаемых между компьютерами с операционной системой Server 2012.