Администрирование делегирования Kerberos
Механизм делегирования в рамках протокола Kerberos обеспечивает предоставление одному сервису (делегирующий сервис) доступа к другому сервису (целевой сервис) от имени прошедшего аутентификацию пользователя.
Для администрирования делегирования в домене Эллес с помощью утилиты samba-tool используется группа подкоманд delegation.
Виды делегирования
В домене Эллес доступны следующие виды делегирования:
-
неограниченное делегирование — делегирующий сервис может получить доступ к любому целевому сервису от имени любого пользователя (кроме пользователей из группы «Защищенные пользователи»);
Общая схема работы механизма неограниченного делегирования:
Описание шагов:
-
Пользователь проходит аутентификацию в KDC и запрашивает билет TGT для генерации других билетов (forwardable TGT).
-
KDC возвращает билет TGT.
-
Пользователь запрашивает новый билет TGT (forwarded TGT) на основе билета TGT, полученного на шаге 2.
-
KDC возвращает сгенерированный билет TGT для пользователя.
-
Пользователь запрашивает сервисный билет (service ticket) для доступа к Сервису 1, используя TGT, полученный на шаге 2.
-
Служба TGS возвращает сервисный билет.
-
Пользователь выполняет запрос к Сервису 1, предъявляя сервисный билет, билет TGT, полученный на шаге 4 (forwarded TGT), и сессионный ключ для данного билета TGT.
-
В процессе обработки запроса пользователя Сервису 1 необходимо запросить выполнение определенного действия в Сервисе 2 от имени пользователя. Сервис 1 отправляет полученный от пользователя билет TGT в KDC для получения билета для доступа к Сервису 2 от имени пользователя.
-
KDC возвращает Сервису 1 билет для доступа к Сервису 2 вместе с сессионным ключом. В билете в качестве клиента указывается пользователь, а не Сервис 1.
-
Сервис 1 выполняет запрос к Сервису 2, выдавая себя за пользователя.
-
Сервис 2 отвечает.
-
Сервис 1 отвечает на запрос пользователя, полученный на шаге 7.
-
Поскольку описанный механизм делегирования не накладывает ограничений на использование Сервисом 1 предоставленного пользователем билета TGT (forwarded TGT), Сервис 1 может запросить у KDC билет для получения доступа к любому другому сервису от имени пользователя.
-
KDC возвращает запрошенный билет.
-
Сервис 1 выполняет запрос к Сервису N, выдавая себя за пользователя.
-
Сервис N отвечает на запрос Сервиса 1 так, как если бы это был запрос от пользователя.
Данный вид делегирования контролируется атрибутом учетной записи
UF_TRUSTED_FOR_DELEGATION.По умолчанию он активен (
UF_TRUSTED_FOR_DELEGATION: True) только у машинных учетных записей контроллеров домена. -
-
ограниченное делегирование (S4U2Proxy) — делегирующий сервис может получить доступ только к заданным целевым сервисам от имени любого пользователя (кроме пользователей из группы «Защищенные пользователи»).
Общая схема работы механизма ограниченного делегирования (S4U2Proxy):
-
Пользователь выполняет запрос к Сервису 1. Сервису 1 требуется доступ к ресурсам Сервиса 2 от имени пользователя. Однако у Сервиса 1 отсутствует билет TGT (forwarded TGT) от пользователя.
Для успешного выполнения запроса должны соблюдаться два условия:
-
Сервис 1 прошел аутентификацию в KDC и имеет действительный билет TGT;
-
у Сервиса 1 имеется сервисный билет с флагом
Forwardableот пользователя.
-
-
Сервис 1 запрашивает в KDC билет для доступа к Сервису 2 от имени пользователя. Для идентификации пользователя используются имя и область безопасности клиента, указанные в билете для доступа к Сервису 1.
-
Если SPN Сервиса 2, доступ к которому запрашивается (целевой сервис), содержится в атрибуте
msds-allowedtodelegatetoучетной записи владельца Сервиса 1 (делегирующий сервис), KDC возвращает билет для доступа к Сервису 2, в котором для идентификации клиента используются данные пользователя, а не Сервиса 1. -
Сервис 1 использует полученный билет для выполнения запроса к Сервису 2. Сервис 2 обрабатывает запрос как исходящий от пользователя, основываясь на допущении, что пользователь прошел аутентификацию в KDC.
-
Сервис 2 отвечает на запрос.
-
Сервис 1 отвечает на запрос пользователя.
Данный вид делегирования контролируется атрибутом учетной записи
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION.Имена экземпляров целевых сервисов (SPN), к которым может быть получен доступ через механизм ограниченного делегирования, перечисляются в атрибуте
msDS-AllowedToDelegateToучетной записи владельца делегирующего сервиса. -
-
ограниченное делегирование на основе ресурсов (RBCD) — целевой сервис самостоятельно определяет, какие участники взаимодействия по протоколу Kerberos могут получать к нему доступ через механизм делегирования.
Отличие схемы работы механизма ограниченного делегирования на основе ресурсов («входящее» делегирование) от схемы работы механизма ограниченного делегирования S4U2Proxy («исходящее» делегирование):
При данном виде делегирования идентификаторы безопасности (SID) учетных записей участников, которым должен быть разрешен доступ путем делегирования, перечисляются в атрибуте
msDS-AllowedToActOnBehalfOfOtherIdentityучетной записи владельца целевого сервиса.
Получение атрибутов делегирования учетной записи
Для получения относящихся к делегированию атрибутов учетной записи в домене Эллес используется следующий формат вызова:
samba-tool delegation show <accountname> [options]
Переданное в команде значение accountname интерпретируется как sAMaccountName.
В выводе содержится следующая информация:
-
значение атрибута
UF_TRUSTED_FOR_DELEGATION:-
True— неограниченное делегирование активно; -
False— неограниченное делегирование неактивно;
-
-
значение атрибута
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION:-
True— ограниченное делегирование активно; -
False— ограниченное делегирование неактивно;
-
-
имена экземпляров сервисов (SPN), к которым данная учетная запись может получить доступ через механизм ограниченного делегирования (значение атрибута
msDS-AllowedToDelegateToучетной записи); -
идентификаторы безопасности (SID) участников взаимодействия по протоколу Kerberos, которым разрешен доступ к данной учетной записи через механизм ограниченного делегирования на основе ресурсов (значение атрибута
msDS-AllowedToActOnBehalfOfOtherIdentityучетной записи).
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.
Примеры
Пример получения относящихся к делегированию атрибутов учетной записи с указанием удаленного LDAP-сервера:
samba-tool delegation show Account1 -H ldap://samba.samdom.example.com -U administrator
Пример получения относящихся к делегированию атрибутов учетной записи на локальном сервере:
samba-tool delegation show Account2
Управление атрибутом неограниченного делегирования
Для управления атрибутом UF_TRUSTED_FOR_DELEGATION, контролирующим возможность неограниченного делегирования для учетной записи, в домене Эллес используется следующий формат вызова:
samba-tool delegation for-any-service <accountname> [(on|off)] [options]
Переданное в команде значение accountname интерпретируется как sAMaccountName.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.
Примеры
Пример установки атрибута UF_TRUSTED_FOR_DELEGATION для учетной записи с указанием удаленного LDAP-сервера:
samba-tool delegation for-any-service Account1 on
-H ldap://samba.samdom.example.com -U administrator
Пример снятия атрибута UF_TRUSTED_FOR_DELEGATION для учетной записи на локальном сервере:
samba-tool delegation for-any-service Account2 off
Управление атрибутом ограниченного делегирования
Для управления атрибутом UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION, контролирующим возможность ограниченного делегирования для учетной записи, в домене Эллес используется следующий формат вызова:
samba-tool delegation for-any-protocol <accountname> [(on|off)] [options]
Переданное в команде значение accountname интерпретируется как sAMaccountName.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.
Примеры
Пример установки атрибута UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION для учетной записи с указанием удаленного LDAP-сервера:
samba-tool delegation for-any-protocol Account1 on
-H ldap://samba.samdom.example.com -U administrator
Пример снятия атрибута UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION для учетной записи на локальном сервере:
samba-tool delegation for-any-protocol Account2 off
Добавление экземпляра сервиса для ограниченного делегирования
Для добавления в атрибут msDS-AllowedToDelegateTo учетной записи имен экземпляров целевых сервисов (SPN), к которым может быть получен доступ через механизм ограниченного делегирования (S4U2Proxy), используется следующий формат вызова:
samba-tool delegation add-service <accountname> <principal> [options]
Переданное в команде значение accountname интерпретируется как sAMaccountName, а principal — как имя экземпляра сервиса в формате SPN.
Удаление экземпляра сервиса для ограниченного делегирования
Для удаления из атрибута msDS-AllowedToDelegateTo учетной записи имен экземпляров целевых сервисов (SPN) для запрещения доступа к ним через механизм ограниченного делегирования (S4U2Proxy) используется следующий формат вызова:
samba-tool delegation del-service <accountname> <principal> [options]
Переданное в команде значение accountname интерпретируется как sAMaccountName, а principal — как имя экземпляра сервиса в формате SPN.
Добавление участника для ограниченного делегирования на основе ресурсов
Для добавления в атрибут msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи идентификаторов безопасности (SID) участников, которым должен быть разрешен доступ к данной учетной записи с помощью механизма ограниченного делегирования на основе ресурсов, используется следующий формат вызова:
samba-tool delegation add-principal <accountname> <principal> [options]
Переданные в команде значения accountname и principal интерпретируются как имена учетных записей SAM (значение атрибута sAMaccountName).
Подкоманда получает значение атрибута SID для переданного значения principal и добавляет его в атрибут msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи с accountname.
Удаление участника для ограниченного делегирования на основе ресурсов
Для удаления из атрибута msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи идентификаторов безопасности (SID) участников для запрещения им доступа к данной учетной записи с помощью механизма ограниченного делегирования на основе ресурсов используется следующий формат вызова:
samba-tool delegation del-principal <accountname> <principal> [options]
Переданные в команде значения accountname и principal интерпретируются как имена учетных записей SAM (значение атрибута sAMaccountName).
Подкоманда получает значение атрибута SID для переданного значения principal и удаляет его из атрибута msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи с accountname.