- tocdepth
2
Управление пользовательским доступом и правами в консоли облака Advanced через провайдера OAuth
В этой статье приведен пример настройки интеграции сервиса Identity and Access Management (IAM) со сторонними провайдерами аутентификации на примере Active Directory Federation Services (ADFS) с помощью протокола авторизации OAuth.
По умолчанию аутентификация в облаке Advanced происходит с помощью сервиса Identity and Access Management, у которого есть некоторые особенности:
Создание и удаление учетных записей пользователей производится вручную. Например, учетная запись сотрудника при его увольнении не будет автоматически удалена, что создает риски для информационной безопасности.
Отсутствие single sign-on (SSO) — технология единого входа.
Форма логина IAM состоит из трех полей:
название аккаунта;
имя IAM-пользователя или email;
пароль.
Большинство менеджеров паролей не умеют работать с подобной формой, из-за чего данные авторизации придется вводить при каждом входе в систему. Это можно решить с помощью интеграции сервиса IAM с корпоративным провайдером OAuth, например ADFS или Keycloak.
Примечание
Другие провайдеры OAuth настраиваются аналогично.
- Как работает предоставление прав
В рамках сервиса Identity and Access Management создаются группы пользователей, которым предоставляются доступы к облачным ресурсам. Когда пользователь входит в консоль облака, он автоматически сопоставляется с группой IAM-пользователей на основании данных в id_token.
Для этого необходимо создать группы пользователей в Active Directory и IAM с одинаковыми названиями, добавить пользователей в группы Active Directory и автоматически предоставить права в облаке, включая пользователя в группу IAM с таким же названием.
Перед началом работы
Условия для настройки доступа к облаку с помощью интеграции OAuth и IAM:
Развернутый и опубликованный сервис Active Directory Federation Services. Подробнее можно прочесть на официальном сайте Microsoft в инструкциях:
Примечание
При развертывании и публикации сервиса в интернет необходимо убедиться, что используется правильный публичный SSL-сертификат. Реализовать интеграцию ADFS и IAM на самоподписанных сертификатах не получится.
Опубликованный сервер ADFS в интернет. Чтобы интегрировать IAM с ADFS, ADFS должен быть опубликован в интернет. Для этого можно использовать стандартную роль Windows Server — Web Application Proxy (WAP). Вендор рекомендует располагать сервер с устанавливаемой ролью WAP в DMZ и не вводить в домен Active Directory. Этот сервер должен быть доступен из интернета по порту 443 и иметь доступ до сервера с установленной ролью ADFS по порту 443. Так же на этот сервер необходимо установить сертификат, с использованием которого ADFS будет опубликован в интернет. Подробнее о развертывании Web Application Proxy и публикации через него сервера ADFS можно прочесть на официальном сайте Microsoft.
Настройка на стороне провайдера OAuth (Active Directory Federation Services)
На стороне провайдера OAuth необходимо настроить консоль облака Advanced в качестве приложения, которое будет использовать учетные данные.
Пример настройки на стороне ADFS:
Откройте консоль ADFS.
В контекстном меню Application groups нажмите Add application group.
В полях:
Name — укажите название приложения, например Cloud Advanced.
Template — выберите тип приложения Native application accessing a web API.
Нажмите Next.
В полях:
Client Identifier — скопируйте сгенерированный Client ID для серверного приложения.
Redirect Url — вставьте ссылку
https://auth.hc.sbercloud.ru/authui/oidc/post
и нажмите Add.
Нажмите Next.
В поле Identifier укажите Client ID, полученный на шаге 5.
(опционально) На странице Choose Access Control Policy оставьте параметр Permit everyone, так как разграничение доступа к облачным ресурсам будет с помощью групп Active Directory, а не на уровне доступа к провайдеру аутентификации.
При необходимости можно указать, в каком случае пользователи Active Directory будут проходить аутентификацию на сервере ADFS. Например, можно разрешить доступ для пользователей из определенной группы Active Directory или из локальной сети.
Нажмите Next.
В поле Permitted scopes активируйте openid, email, profile и нажмите Next.
Далее необходимо настроить передачу дополнительных параметров пользователя в идентификационный токен для последующей настройки членства в группах IAM:
Откройте созданную ранее группу приложений в ADFS.
Выделите приложение Web API и нажмите Edit….
На вкладке Issuance Transform Rules нажмите Add Rule….
В поле Claim rule template выберите тип правила Send LDAP Attributes as Claims и нажмите Next.
Настройте правило:
Claim rule name — введите Send groups in id_token.
Attribute store — выберите Active Directory.
LDAP Attribute — выберите Token-Groups - Unqualified Names.
Outgoing Claim Type — выберите Group.
Чтобы завершить настройку, нажмите Finish.
Настройка интеграции на стороне Identity and Access Management
Теперь необходимо настроить сервис IAM для работы с провайдером OAuth (в нашем случае ADFS). Для этого:
Войдите в консоль управления Advanced:
В списке сервисов выберите Identity and Access Management.
В меню слева нажмите Identity Providers.
Нажмите Create Identity Provider.
В полях:
Name — укажите название подключения.
Protocol — выберите OpenID Connect.
Нажмите ОК.
После создания провайдера его нужно настроить. Для этого нажмите Modify.
Настройте подключение:
Откройте в браузере страницу https://{публичный адрес WAP сервера}/adfs/.well-known/openid-configuration:
из issuer скопируйте значение в Identity Provider URL;
из authorization_endpoint скопируйте значение в Authorization endpoint;
откройте ссылку из свойства jwks_uri, полностью скопируйте вывод и вставьте в поле Signing key.
Client ID — укажите созданный Client ID от Native Application в ADFS.
Scopes — добавьте openid, email, profile.
Response Modem — укажите form_post.
Сохраните провайдер.
Сопоставление ролей
Права в облаке предоставляются пользователям на основе сопоставления входящей информации из id_token с группами IAM-пользователей. Можно сделать набор правил, который будет сопоставлять пользователей с группами на основе их признаков (например по имени). Можно создать до 10 правил.
Политики представляют собой JSON-описание в формате массива правил. Пример описания приведен ниже.
[
{
"remote": [
{
"type": "upn"
}
],
"local": [
{
"user": {
"name": "{0}"
}
},
{
"group": {
"name": "My IAM Group"
}
}
]
}
]
В этом описании указаны:
Раздел
remote
— описывает информацию, передаваемую в id_token. В этом примере используется только одно поле — upn (имя пользователя, аутентифицировавшегося в провайдере OAuth).Раздел
local
— показывает, как полученная информация должна преобразоваться в пользователя и права доступа. В этом случае в качестве имени пользователя будет использовано имя пользователя из провайдера OAuth, а всем пользователям будет назначена одна группа — My IAM Group.
С помощью подобных правил и условий можно более тонко настроить различные права доступа разным пользователям и группам.
Сопоставление групп Active Directory и IAM
Ниже приведен пример полного сопоставления групп Active Directory и IAM для предоставления прав в облаке.
- Как это будет работать:
В id_token пользователя включен список групп Active Directory, в которые входит пользователь.
Если в облаке есть группы пользователей с такими же названиями, пользователю будет предоставлен доступ этих групп.
- Примеры групп для Active Directory и IAM:
Cloud Readers — предоставлены разрешения на чтение ресурсов.
Cloud Admins — предоставлены полные разрешения.
Права пользователя в Active Directory |
Права пользователя в облаке Advanced |
---|---|
Не входит в группы Cloud Readers и Cloud Admins |
Пользователь успешно выполнит вход, но не получит доступа ни к каким ресурсам (консоль отобразится, количество ресурсов каждого типа будет равно нулю) |
Входит в группу Cloud Readers |
Пользователь успешно выполнит вход, увидит все ресурсы, но не сможет их изменять, удалять и создавать |
Входит в группу Cloud Admins |
Пользователь успешно выполнит вход, увидит все ресурсы, сможет их изменять, удалять и создавать новые |
Входит в группы Cloud Readers и Cloud Admins |
Пользователь успешно выполнит вход, увидит все ресурсы, сможет их изменять, удалять и создавать новые |
Чтобы изменить правило:
В строке с созданным провайдером нажмите Modify.
В поле Identity Conversation Rules нажмите Edit Rule.
Скопируйте описание и вставьте в поле Edit Rule.
[ { "remote": [ { "type": "upn" }, { "type": "group" } ], "local": [ { "user": { "name": "{0}" } }, { "groups": "{1}" } ] } ]
Чтобы проверить правило, нажмите Validate.
После успешной проверки отобразится сообщение «Validation successful». Нажмите ОК.
Тестирование
Создайте группу Active Directory и включите пользователя в нее.
Создайте группу IAM с таким же названием.
Предоставьте группе IAM права в облаке.
Откройте созданный ранее Identity Provider и скопируйте URL для входа:
Откройте URL в режиме инкогнито или в другом браузере.
Браузер перенаправит вас на страницу ADFS.
Выполните вход.
Браузер перенаправит вас в консоль облака.
Проверьте, что пользователь получил права, созданные в пункте 3.
для Dev & Test