Федерация консоли облака Advanced с доменом Active Directory

Контроль доступа к ресурсам облака Advanced осуществляется с помощью втроенной системы Identity and Access Management. Эта система доступа имеет ряд особенностей:

  • Создание и удаление учетных записей пользователей только вручную. По этой причине, например, учетная запись сотрудника при его увольнении не будет автоматически удалена, что создает риски информационной безопасности.

  • Отсутствие технологии единого входа Single sign-on (SSO).

  • Нестандартный вид формы логина IAM. Она состоит из трех полей:

    • название аккаунта;

    • имя IAM-пользователя или email;

    • пароль.

    Большинство менеджеров паролей не умеют работать с подобной формой, из-за чего данные для авторизации придется вводить при каждом входе в систему.

В консоли Advanced можно реализовать аутентификацию с помощью корпоративных доменных учетных записей. Для этого в IAM нужно добавить дополнительного провайдера аутентификации. В случае, когда учетные записи пользователей располагаются в домене Active Directory, в роли провайдера аутентификации должен выступать Active Directory Federation Service (ADFS). Аутентификация в IAM будет производиться по спецификации SAML.

Перед началом работы

Для настройки доступа к облаку с помощью корпоративных доменных учетных записей необходимо выполнение следующих условий:

  1. Развернутый сервис ADFS. Процесс развертывания и публикации сервиса ADFS описан в инструкциях Microsoft:

    Примечание

    При развертывании и публикации сервиса в интернет необходимо убедиться, что используется правильный публичный SSL-сертификат. Реализовать интеграцию ADFS и IAM на самоподписанных сертификатах не получится.

  2. Опубликованный сервер ADFS в интернет.

    Чтобы интегрировать IAM с ADFS, ADFS должен быть опубликован в интернет. Для публикации можно использовать стандартную роль Windows Server — Web Application Proxy (WAP). Вендор рекомендует располагать сервер с ролью WAP в DMZ и не вводить его в домен Active Directory. Этот сервер должен быть доступен из интернета по порту 443 и иметь доступ до сервера с ролью ADFS по порту 443. Также на него необходимо установить сертификат, с использованием которого ADFS будет опубликован в интернет.

    Инструкция по развертыванию Web Application Proxy и публикации через него сервера ADFS доступна на официальном сайте Microsoft.

Настройка интеграции со стороны ADFS

Для интеграции c IAM со стороны ADFS необходимо:

Чтобы добавить Relying Party Trust:

  1. Откройте оснастку ADFS Management на сервере с ролью ADFS.

  2. Перейдите в раздел Relying Party Trust и в правом меню нажмите Add Relying Party Trust:

    ../../_images/s__add-relying-party-trust.png
  3. Чтобы указать, что доверительные отношения будут использовать клеймы, на первой странице мастера выберите Claims Aware и нажмите Start.

  4. Далее необходимо указать настройки SAML со стороны IAM. Это можно сделать двумя способами:

    • Указать URL файла конфигурации. Файл конфигурации доступен по адресу https://auth.hc.sbercloud.ru/authui/saml/metadata.xml. Он одинаковый для всех пользователей облака Advanced. Сервер ADFS, имеющий выход в интернет, сможет автоматически скачать файл и сохранить конфигурацию. Чтобы воспользоваться этим способом, выберите первую опцию мастера импорта, введите URL и нажмите Next.

    • Загрузить файл конфигурации с компьютера. Если сервер ADFS не имеет выхода в интернет, файл конфигурации можно загрузить с компьютера. Для этого перейдите по адресу https://auth.hc.sbercloud.ru/authui/saml/metadata.xml и сохраните файл в формате .xml (нажмите правой кнопкой мыши и выберите Сохранить как). Затем выберите вторую опцию мастера импорта, укажите путь к файлу или выберите его с помощью Browse и нажмите Next.

  5. Укажите название создаваемого доверительного отношения в поле Display name.

  6. На странице Choose Access Control Policy можно указать, в каком случае пользователи Active Directory будут проходить аутентификацию на сервере ADFS. Например, можно разрешить доступ только пользователям из определенной группы Active Directory или только пользователям из локальной сети. Это опциональная настройка, поэтому можно оставить политику Permit everyone. В этом случае со стороны IAM будет производиться сопоставление групп пользователя из Active Directory.

  7. Нажмите Next.

  8. Проверьте, что информация о конфигурации загрузилась правильно и выглядит как на скриншоте:

    ../../_images/s__check-configuration-options.png
  9. Нажмите Next.

  10. Чтобы закрыть мастер, отключите опцию Configure Claim Issuance policy и нажмите Close.

Relying Party Trust добавлен.

Теперь необходимо указать свойства пользователей из Active Directory, которые будут отправляться в виде клеймов в IAM. Для этого:

  1. Нажмите правой кнопкой мыши на ранее созданное доверительное отношение и нажмите Edit Claim Issuance Policy:

    ../../_images/s__edit-claim-policy.png
  2. В открывшемся окне нажмите Add Rule.

  3. В списке выберите Send Claims Using Custom Role и нажмите Next.

  4. Задайте название, а в поле Custom rule вставьте следующее правило:

    c:[Type =="http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",Issuer == "AD AUTHORITY"]=> add(store = "Active Directory", types =("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"),query = ";sAMAccountName;{0}", param = c.Value);
    

    Это правило отправляет свойство пользователя «windowsaccountname» в виде клейма «nameidentifier».

  5. Аналогичным образом создайте второе правило:

    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]=> issue(Type ="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value,ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"]= "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"]= "https://auth.hc.sbercloud.ru/");
    

    Оно преобразовывает формат клейма из предыдущего правила и добавляет еще одно свойство — «spnamequalifier».

В облаке можно настроить сложные ролевые модели. Для этого нужно создать необходимые роли в IAM, а в Active Directory создать группы с идентичными ролям названиями. Это позволит отправлять в виде одного из клеймов список всех групп пользователя в Active Directory и сопоставлять их с ролями IAM.

Для отправки всех групп пользователя в клейме:

  1. Добавьте новое правило на основе шаблона «Send LDAP attribute as a claim»:

    ../../_images/s__add-new-ldap-rule.png
  2. В первом столбце выберите Token-Groupd - Unqualified Names, а во втором Group и нажмите OK:

    ../../_images/s__add-rule-groups.png
  3. Затем добавьте новое правило отправки данных о пользователе. При его создании снова используйте шаблон «Send LDAP attribute as a claim».

  4. Укажите название правила и в выпадающем списке Attribute store выберите Active Directory.

  5. Сопоставьте LDAP-атрибуты с клеймами следующим образом:

    • SAM-Account-NameWindows account name;

    • E-Mail-AddressesE-Mail Address.

    ../../_images/s__add-rule-user.png
  6. Нажмите Finish.

  7. Чтобы сохранить настройки, нажмите OK:

    ../../_images/s__check-claim-issurance-policy.png

Настройка на стороне ADFS завершена. Теперь необходимо выполнить настройки со стороны сервиса IAM.

Настройка интеграции со стороны IAM

На стороне сервиса IAM нужно добавить ADFS в качестве Identity Provider и указать, какими правами в облаке будут обладать пользователи Active Directory. Для этого:

  1. Войдите консоль управления Advanced от учетной записи с правами «Administrator».

  2. В списке всех сервисов выберите Identity and Access Management.

  3. Перейдите в раздел User Groups.

  4. В правом верхнем углу нажмите Create User Group.

  5. Задайте название группы и нажмите OK.

  6. Найдите в списке только что созданную группу и нажмите Manage Permissions.

  7. На странице управления разрешениями нажмите Assign Permissions.

  8. Разрешения делятся на две категории:

    • Global service project;

    • Region-specific project.

    В первой категории находятся сервисы, которые не привязаны к региону и доступны из любого из них. Во второй, соответственно, те сервисы, доступ к которым ограничивается проектами и регионами. Выберите нужную категорию и отметьте требуемые резрешения.

    Если выбрана категория «Region-specific projects», в выпадающем списке выберите проекты, на которые будут действовать эти разрешения:

    ../../_images/s__select-one-or-more-project.png
  9. Чтобы сохранить настройки прав, нажмите OK.

Теперь необходимо указать, как IAM будет работать с ADFS. Для этого:

  1. На странице IAM перейдите в раздел Identity Providers.

  2. В правом верхнем углу нажмите Create Identity Provider.

  3. Задайте название подключения, выберите протокол «SAML» и нажмите OK.

  4. Перейдите к настройкам созданного провайдера. Для этого нажмите Modify.

  5. Скачайте файл метаданных с сайта ADFS на локальный компьютер. Он доступен по адресу:

    https://{название ADFS сервера}/federationmetadata/2007-06/federationmetadata.xml

    {название ADFS сервера} замените на название вашего сервера.

  6. Загрузите скачанный XML-файл в IAM. Для этого в разделе Metadata Configuration нажмите Select File, выберите ранее скачанный файл и нажмите Upload.

    После успешного добавления файла откроется окно с подтверждением настроек:

    ../../_images/s__config-check.png
  7. Настройте сопоставление ролей на основании входящих клеймов. Для этого в разделе Identity Conversation Rules нажмите Edit Rule.

  8. Вставьте в текстовое поле данные из примера ниже и при необходимости отредактируйте их. Это пример политик сопоставления ролей, которые представляют собой JSON-описание в формате массива правил:

    [
       {
                      "remote": [
                                  {
                                           "type": "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"
                                  },
                                  {
                                           "type": "http://schemas.xmlsoap.org/claims/Group"
                                  }
                      ],
                      "local": [
                                  {
                                           "user": {
                                                    "name": "{0}"
                                           }
                                  },
                                  {
                                           "groups": "{1}"
                                  }
                      ]
             }
    ]
    

    Где:

    • remote — раздел, в котором указано, с какими клеймами будет выполняться работа. В примере мы получаем значения двух клеймов: «windowsaccountname» и «Group». При написании запросов клеймов важно учитывать их тип, так как они сильно отличаются, что видно в примере.

    • locаl — раздел, в котором указывается, как именно будет сопоставляться пользователь из ADFS с IAM-системой.

    В частности, можно указать:

    • user — имя пользователя, которое будет отображаться в консоли управления. В примере выше оно берется из раздела remote. К нему можно добавлять суффиксы и префиксы в следующем формате:

      "name": "prefix {0} suffix"

    • groups — позволяет произвести сопоставление групп в IAM с группами пользователя в Active Directory и выдать пользователю все необходимые права в облаке. Если нет необходимости использовать сложную ролевую модель и нужно всех пользователей добавлять в одну группу, можно использовать следующий формат описания:

      "group": {"name": "admin"}

  9. Чтобы проверить корректность синтаксиса описания, нажмите Validate.

  10. Чтобы закрыть окно с описанием запроса, нажмите OK.

  11. В поле Login link скопируйте URL для входа в консоль с использованием ADFS.

  12. Чтобы сохранить настройки, нажмите OK.

  13. Откройте в браузере скопированный URL. Если все было выполнено правильно, у вас откроется страница аутентификации ADFS.

  14. Введите логин от доменной учетной записи в формате «domain\username» или «username@domain», пароль и нажмите Вход. Откроется страница консоли Advanced.

Решение проблем

В случае возникновения ошибок при входе в консоль с использованием корпоративной учетной записи проверьте логи на сервере ADFS. Для просмотра логов откройте «Event Viewer» и перейдите в раздел Applications and Services Logs → AD FS → Admin:

../../_images/s__logs-path.png

Самая частая ошибка при настройке федерации — неправильные настройки клеймов со стороны ADFS. В этом случае в логах можно увидеть, что ADFS отправляет не те клеймы, которые ожидает IAM:

../../_images/s__log-adfs.png
Масштабная конференция
GoCloud 2024:
облачные грани будущего