Администрирование делегирования Kerberos

Механизм делегирования в рамках протокола Kerberos обеспечивает предоставление одному сервису (делегирующий сервис) доступа к другому сервису (целевой сервис) от имени прошедшего аутентификацию пользователя.

Для администрирования делегирования в домене Эллес с помощью утилиты samba-tool используется группа подкоманд delegation.

Виды делегирования

В домене Эллес доступны следующие виды делегирования:

  • неограниченное делегирование — делегирующий сервис может получить доступ к любому целевому сервису от имени любого пользователя (кроме пользователей из группы «Защищенные пользователи»);

    Общая схема работы механизма неограниченного делегирования:

    unconstrained delegation

    Описание шагов:

    1. Пользователь проходит аутентификацию в KDC и запрашивает билет TGT для генерации других билетов (forwardable TGT).

    2. KDC возвращает билет TGT.

    3. Пользователь запрашивает новый билет TGT (forwarded TGT) на основе билета TGT, полученного на шаге 2.

    4. KDC возвращает сгенерированный билет TGT для пользователя.

    5. Пользователь запрашивает сервисный билет (service ticket) для доступа к Сервису 1, используя TGT, полученный на шаге 2.

    6. Служба TGS возвращает сервисный билет.

    7. Пользователь выполняет запрос к Сервису 1, предъявляя сервисный билет, билет TGT, полученный на шаге 4 (forwarded TGT), и сессионный ключ для данного билета TGT.

    8. В процессе обработки запроса пользователя Сервису 1 необходимо запросить выполнение определенного действия в Сервисе 2 от имени пользователя. Сервис 1 отправляет полученный от пользователя билет TGT в KDC для получения билета для доступа к Сервису 2 от имени пользователя.

    9. KDC возвращает Сервису 1 билет для доступа к Сервису 2 вместе с сессионным ключом. В билете в качестве клиента указывается пользователь, а не Сервис 1.

    10. Сервис 1 выполняет запрос к Сервису 2, выдавая себя за пользователя.

    11. Сервис 2 отвечает.

    12. Сервис 1 отвечает на запрос пользователя, полученный на шаге 7.

    13. Поскольку описанный механизм делегирования не накладывает ограничений на использование Сервисом 1 предоставленного пользователем билета TGT (forwarded TGT), Сервис 1 может запросить у KDC билет для получения доступа к любому другому сервису от имени пользователя.

    14. KDC возвращает запрошенный билет.

    15. Сервис 1 выполняет запрос к Сервису N, выдавая себя за пользователя.

    16. Сервис N отвечает на запрос Сервиса 1 так, как если бы это был запрос от пользователя.

    Данный вид делегирования контролируется атрибутом учетной записи UF_TRUSTED_FOR_DELEGATION.

    По умолчанию он активен (UF_TRUSTED_FOR_DELEGATION: True) только у машинных учетных записей контроллеров домена.

  • ограниченное делегирование (S4U2Proxy) — делегирующий сервис может получить доступ только к заданным целевым сервисам от имени любого пользователя (кроме пользователей из группы «Защищенные пользователи»).

    Общая схема работы механизма ограниченного делегирования (S4U2Proxy):

    constrained delegation
    1. Пользователь выполняет запрос к Сервису 1. Сервису 1 требуется доступ к ресурсам Сервиса 2 от имени пользователя. Однако у Сервиса 1 отсутствует билет TGT (forwarded TGT) от пользователя.

      Для успешного выполнения запроса должны соблюдаться два условия:

      • Сервис 1 прошел аутентификацию в KDC и имеет действительный билет TGT;

      • у Сервиса 1 имеется сервисный билет с флагом Forwardable от пользователя.

    2. Сервис 1 запрашивает в KDC билет для доступа к Сервису 2 от имени пользователя. Для идентификации пользователя используются имя и область безопасности клиента, указанные в билете для доступа к Сервису 1.

    3. Если SPN Сервиса 2, доступ к которому запрашивается (целевой сервис), содержится в атрибуте msds-allowedtodelegateto учетной записи владельца Сервиса 1 (делегирующий сервис), KDC возвращает билет для доступа к Сервису 2, в котором для идентификации клиента используются данные пользователя, а не Сервиса 1.

    4. Сервис 1 использует полученный билет для выполнения запроса к Сервису 2. Сервис 2 обрабатывает запрос как исходящий от пользователя, основываясь на допущении, что пользователь прошел аутентификацию в KDC.

    5. Сервис 2 отвечает на запрос.

    6. Сервис 1 отвечает на запрос пользователя.

    Данный вид делегирования контролируется атрибутом учетной записи UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION.

    Имена экземпляров целевых сервисов (SPN), к которым может быть получен доступ через механизм ограниченного делегирования, перечисляются в атрибуте msDS-AllowedToDelegateTo учетной записи владельца делегирующего сервиса.

  • ограниченное делегирование на основе ресурсов (RBCD) — целевой сервис самостоятельно определяет, какие участники взаимодействия по протоколу Kerberos могут получать к нему доступ через механизм делегирования.

    Отличие схемы работы механизма ограниченного делегирования на основе ресурсов («входящее» делегирование) от схемы работы механизма ограниченного делегирования S4U2Proxy («исходящее» делегирование):

    rbcd delegation

    При данном виде делегирования идентификаторы безопасности (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.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример добавления имени экземпляра сервиса (SPN) для предоставления учетной записи доступа к нему:

samba-tool delegation add-service Account1 HTTP/proxy.samdom.example.com

Удаление экземпляра сервиса для ограниченного делегирования

Для удаления из атрибута msDS-AllowedToDelegateTo учетной записи имен экземпляров целевых сервисов (SPN) для запрещения доступа к ним через механизм ограниченного делегирования (S4U2Proxy) используется следующий формат вызова:

samba-tool delegation del-service <accountname> <principal> [options]

Переданное в команде значение accountname интерпретируется как sAMaccountName, а principal — как имя экземпляра сервиса в формате SPN.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример удаления имени экземпляра сервиса (SPN) для запрещения учетной записи доступа к нему:

samba-tool delegation del-service Account1 HTTP/proxy.samdom.example.com

Добавление участника для ограниченного делегирования на основе ресурсов

Для добавления в атрибут msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи идентификаторов безопасности (SID) участников, которым должен быть разрешен доступ к данной учетной записи с помощью механизма ограниченного делегирования на основе ресурсов, используется следующий формат вызова:

samba-tool delegation add-principal <accountname> <principal> [options]

Переданные в команде значения accountname и principal интерпретируются как имена учетных записей SAM (значение атрибута sAMaccountName).

Подкоманда получает значение атрибута SID для переданного значения principal и добавляет его в атрибут msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи с accountname.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример добавления SID участника, которому должен быть разрешен доступ к данной учетной записи от имени пользователей:

samba-tool delegation add-principal Account1 Account2

Удаление участника для ограниченного делегирования на основе ресурсов

Для удаления из атрибута msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи идентификаторов безопасности (SID) участников для запрещения им доступа к данной учетной записи с помощью механизма ограниченного делегирования на основе ресурсов используется следующий формат вызова:

samba-tool delegation del-principal <accountname> <principal> [options]

Переданные в команде значения accountname и principal интерпретируются как имена учетных записей SAM (значение атрибута sAMaccountName).

Подкоманда получает значение атрибута SID для переданного значения principal и удаляет его из атрибута msDS-AllowedToActOnBehalfOfOtherIdentity учетной записи с accountname.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример удаления SID участника для запрещения ему доступа к данной учетной записи от имени пользователей:

samba-tool delegation del-principal Account1 Account2