Аутентификация с помощью Azure Active Directory
С помощью федерации удостоверений вы можете использовать Azure Active Directory (далее — Azure AD) для аутентификации пользователей в организации.
Настройка аутентификации состоит из следующих этапов:
Перед началом
Чтобы воспользоваться инструкциями в этом разделе, вам понадобится учетная запись Azure с активной подпиской.
Создание и настройка SAML-приложения в Azure AD
Создайте SAML-приложение и скачайте сертификат
В роли поставщика удостоверений (IdP) выступает SAML-приложение в Azure AD. Начните создавать приложение и скачайте сертификат:
-
Перейдите на портал Azure AD.
-
В разделе Службы Azure выберите Azure Active Directory.
-
На панели слева выберите Корпоративные приложения.
-
Нажмите Новое приложение.
-
На странице Обзор коллекции Azure AD нажмите Создайте собственное приложение.
-
В открывшемся окне:
-
Введите название приложения.
-
Выберите вариант Integrate any other application you don't find in the gallery (Non-gallery).
-
Нажмите кнопку Создать.
-
-
На открывшейся странице Обзор на панели слева выберите Единый вход.
-
Выберите метод единого входа SAML.
-
На странице Вход на основе SAML в разделе 3. Сертификат подписи SAML скачайте сертификат (Base64). С помощью него поставщик удостоверений подписывает сообщение о том, что пользователь прошел аутентификацию.
Не закрывайте страницу: данные IdP-сервера понадобятся при создании и настройке федерации.
Добавьте пользователей
Добавьте пользователей на IdP-сервер:
-
Перейдите на страницу Корпоративные приложения.
-
Выберите созданное SAML-приложение.
-
На панели слева выберите Пользователи и группы.
-
Нажмите Добавить пользователя или группу.
-
В поле Пользователи нажмите Не выбрано.
-
В открывшемся окне отметьте пользователей и нажмите кнопку Выбрать.
-
Нажмите кнопку Назначить.
Создание и настройка федерации в Yandex Cloud Organization
Создайте федерацию
-
Перейдите в сервис Yandex Cloud Organization.
-
На панели слева выберите раздел Федерации .
-
Нажмите кнопку Создать федерацию.
-
Задайте имя федерации. Имя должно быть уникальным в каталоге.
-
При необходимости добавьте описание.
-
В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.
-
В поле IdP Issuer вставьте ссылку, которая указана в поле Идентификатор Azure AD на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://sts.windows.net/<ID SAML-приложения>/
-
В поле Ссылка на страницу для входа в IdP вставьте ссылку, которая указана в поле URL-адрес входа на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://login.microsoftonline.com/<ID SAML-приложения>/saml2
-
Включите опцию Автоматически создавать пользователей, чтобы пользователь после аутенцификации автоматически добавлялся в организацию. Если опция отключена, федеративных пользователей потребуется добавить вручную.
-
Нажмите кнопку Создать федерацию.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды создания федерации:
yc organization-manager federation saml create --help
-
Создайте федерацию:
yc organization-manager federation saml create --name my-federation \ --organization-id <ID организации> \ --auto-create-account-on-login \ --cookie-max-age 12h \ --issuer "https://sts.windows.net/<ID SAML-приложения>/" \ --sso-binding POST \ --sso-url "https://login.microsoftonline.com/<ID SAML-приложения>/saml2"
Где:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
organization-id
— идентификатор организации. -
auto-create-account-on-login
— флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли системной группеallUsers
илиallAuthenticatedUsers
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем IdP-сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
cookie-max-age
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, которая указана в поле Идентификатор Azure AD на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://sts.windows.net/<ID SAML-приложения>/
-
sso-url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Используйте ссылку, которая указана в поле URL-адрес входа на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://login.microsoftonline.com/<ID SAML-приложения>/saml2
-
sso-binding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
.
-
-
Получите идентификатор каталога, в котором вы будете создавать федерацию.
-
Создайте файл с телом запроса, например
body.json
:{ "folderId": "<ID каталога>", "name": "my-federation", "organizationId": "<ID организации>", "autoCreateAccountOnLogin": true, "cookieMaxAge":"43200s", "issuer": "https://sts.windows.net/<ID SAML-приложения>/", "ssoUrl": "https://login.microsoftonline.com/<ID SAML-приложения>/saml2", "ssoBinding": "POST" }
Где:
-
folderId
— идентификатор каталога. -
name
— имя федерации. Имя должно быть уникальным в каталоге. -
organizationId
— идентификатор организации. -
autoCreateAccountOnLogin
— флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли системной группеallUsers
илиallAuthenticatedUsers
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем IdP-сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
cookieMaxAge
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, которая указана в поле Идентификатор Azure AD на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://sts.windows.net/<ID SAML-приложения>/
-
ssoUrl
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Используйте ссылку, которая указана в поле URL-адрес входа на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://login.microsoftonline.com/<ID SAML-приложения>/saml2
-
ssoBinding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
.
-
-
Создайте федерацию с помощью метода create:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <IAM-токен>" \ -d '@body.json' \ https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/federations { "done": true, "metadata": { "@type": "type.googleapis.com/yandex.cloud.organization-manager.v1.saml.CreateFederationMetadata", "federationId": "ajeobmje4dgj0belagb9" }, ...
В ответе в свойстве
federationId
будет указан идентификатор созданной федерации: сохраните его. Этот идентификатор понадобится на следующих шагах.
Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
В конфигурационном файле опишите параметры федерации:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
description
— описание федерации. -
organization_id
— идентификатор организации. -
labels
— набор пар меток ключ/значение, которые присвоены федерации. -
issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, которая указана в поле Идентификатор Azure AD на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://sts.windows.net/<ID SAML-приложения>/
-
sso_binding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
sso_url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Используйте ссылку, которая указана в поле URL-адрес входа на странице Вход на основе SAML в Azure AD. Формат ссылки:
https://login.microsoftonline.com/<ID SAML-приложения>/saml2
-
cookie_max_age
— время в секундах, в течение которого браузер не должен требовать у пользователя повторной аутентификации. Значение по умолчанию8 часов
. -
auto_create_account_on_login
— флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли системной группеallUsers
илиallAuthenticatedUsers
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
case_insensitive_name_ids
— зависимость имен пользователей от регистра.
Если опция включена, идентификаторы имен федеративных пользователей будут нечувствительны к регистру. -
security_settings
— настройки безопасности федерации:encrypted_assertions
— подписывать запросы аутентификации.
Если включить опцию, то все запросы аутентификации от Yandex Cloud будут содержать цифровую подпись. Вам потребуется скачать и установить сертификат Yandex Cloud.
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_saml_federation" federation { name = "my-federation" organization_id = "<ID организации>" auto_create_account_on_login = "true" issuer = "https://sts.windows.net/<ID SAML-приложения>/" sso_url = "https://login.microsoftonline.com/<ID SAML-приложения>/saml2" sso_binding = "POST" security_settings { encrypted_assertions = "true" } }
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
$ terraform plan
Если конфигурация описана верно, в терминале отобразятся параметры федерации. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте федерацию.
-
Если в конфигурации нет ошибок, выполните команду:
$ terraform apply
-
Подтвердите создание федерации.
После этого в указанной организации будет создана федерация. Проверить появление федерации и ее настроек можно в организации в разделе Федерации.
-
Добавьте сертификаты
При аутентификации у сервиса Organization должна быть возможность проверить сертификат IdP-сервера. Для этого добавьте скачанный ранее сертификат в федерацию:
-
На панели слева выберите раздел Федерации .
-
Нажмите имя федерации, для которой нужно добавить сертификат.
-
Внизу страницы нажмите кнопку Добавить сертификат.
-
Введите название и описание сертификата.
-
Выберите способ добавления сертификата:
-
Чтобы добавить сертификат в виде файла, нажмите Выбрать файл и укажите путь к нему.
-
Чтобы вставить скопированное содержимое сертификата, выберите способ Текст и вставьте содержимое.
-
-
Нажмите кнопку Добавить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды добавления сертификата:
yc organization-manager federation saml certificate create --help
-
Добавьте сертификат для федерации, указав путь к файлу сертификата:
yc organization-manager federation saml certificate create \ --federation-id <ID федерации> \ --name "my-certificate" \ --certificate-file certificate.cer
Воспользуйтесь методом create для ресурса Certificate:
-
Сформируйте тело запроса. В свойстве
data
укажите содержимое сертификата:{ "federationId": "<ID федерации>", "name": "my-certificate", "data": "-----BEGIN CERTIFICATE..." }
-
Отправьте запрос на добавление сертификата:
$ export IAM_TOKEN=CggaATEVAgA... $ curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/certificates"
Совет
Чтобы аутентификация не прерывалась в тот момент, когда у очередного сертификата закончился срок действия, рекомендуется добавлять в федерацию несколько сертификатов — текущий и те, которые будут использоваться после текущего. Если один сертификат окажется недействительным, Yandex Cloud попробует проверить подпись другим сертификатом.
Получите ссылку для входа в консоль
Когда вы настроите аутентификацию с помощью федерации, пользователи смогут войти в консоль управления по ссылке, в которой содержится идентификатор федерации. Эту же ссылку необходимо будет указать при настройке системы единого входа (SSO).
Получите ссылку:
-
Скопируйте идентификатор федерации:
-
На панели слева выберите раздел Федерации .
-
Скопируйте идентификатор федерации, для которой вы настраиваете доступ.
-
-
Сформируйте ссылку с помощью полученного идентификатора:
https://console.cloud.yandex.ru/federations/<ID федерации>
Настройка системы единого входа (SSO)
Добавьте ссылку для входа в консоль
Когда вы создали федерацию и получили ссылку для входа в консоль, завершите создание SAML-приложения в Azure AD:
-
Откройте страницу настроек SAML-приложения Вход на основе SAML.
-
В разделе 1. Базовая конфигурация SAML укажите сведения о Yandex Cloud, выступающем в роли поставщика услуг.
Для этого в полях Идентификатор (сущности) и URL-адрес ответа (URL-адрес службы обработчика утверждений) введите полученную ранее ссылку для входа в консоль.
-
Нажмите Сохранить.
Настройте сопоставление атрибутов пользователей
После аутентификации пользователя IdP-сервер отправит в Yandex Cloud SAML-сообщение, которое будет содержать:
-
информацию об успешной аутентификации;
-
атрибуты пользователя, такие как идентификатор Name ID, имя и адрес электронной почты.
Вы можете настроить сопоставление между атрибутами SAML-сообщения и персональными данными, которые хранятся на IdP-сервере. Для этого на странице Вход на основе SAML в разделе 2. Утверждения и атрибуты пользователя нажмите Изменить.
Типы персональных данных, которые поддерживает Yandex Cloud Organization для Azure AD, приведены ниже.
Данные пользователя | Комментарий | Атрибуты приложений |
---|---|---|
Уникальный идентификатор пользователя (Name ID) | Обязательный атрибут. По умолчанию в Azure AD в качестве источника атрибута используется User Principal Name (UPN) в формате <login>_<domain>#EXT#@<supplier>.onmicrosoft.com . При добавлении пользователей в федерацию вручную такой формат Name ID не поддерживается. Рекомендуется в Azure AD изменить источник атрибута: вместо UPN user.userprincipalname выбрать адрес электронной почты user.mail . |
Утверждение Уникальный идентификатор пользователя (ID) |
Фамилия | Отображается в сервисах Yandex Cloud. | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname |
Имя | Отображается в сервисах Yandex Cloud. | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname |
Полное имя | Отображается в сервисах Yandex Cloud. Пример: Иван Иванов |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name |
Почта | Используется для отправки уведомлений из сервисов Yandex Cloud. Пример: ivanov@example.com |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
Добавьте пользователей в организацию
Если при создании федерации вы не включили опцию Автоматически создавать пользователей, федеративных пользователей нужно добавить в организацию вручную.
Для этого вам понадобятся пользовательские Name ID. Их возвращает IdP-сервер вместе с ответом об успешной аутентификации.
Добавить пользователя может администратор (роль organization-manager.admin
) или владелец (роль organization-manager.organizations.owner
) организации. Как назначить роль пользователю, читайте в разделе Роли.
-
Войдите в аккаунт администратора или владельца организации.
-
Перейдите в сервис Yandex Cloud Organization.
-
На левой панели выберите раздел Пользователи .
-
В правом верхнем углу нажмите на стрелку возле кнопки Добавить пользователя. Выберите пункт Добавить федеративных пользователей.
-
Выберите федерацию, из которой необходимо добавить пользователей.
-
Перечислите Name ID пользователей, разделяя их переносами строк.
-
Нажмите кнопку Добавить. Пользователи будут подключены к организации.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды добавления пользователей:
yc organization-manager federation saml add-user-accounts --help
-
Добавьте пользователей, перечислив их Name ID через запятую:
yc organization-manager federation saml add-user-accounts --id <ID федерации> \ --name-ids=alice@example.com,bob@example.com,charlie@example.com
Где:
-
id
— идентификатор федерации. -
name-ids
— Name ID пользователей.
-
Чтобы добавить пользователей федерации в облако:
-
Сформируйте файл с телом запроса, например
body.json
. В теле запроса укажите массив Name ID пользователей, которых необходимо добавить:{ "nameIds": [ "alice@example.com", "bob@example.com", "charlie@example.com" ] }
-
Отправьте запрос, указав в параметрах идентификатор федерации:
$ curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <IAM-токен>" \ -d '@body.json' \ https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/federations/<ID федерации>:addUserAccounts
Проверка аутентификации
Когда вы закончили настройку SSO, протестируйте, что все работает:
-
Откройте браузер в гостевом режиме или режиме инкогнито.
-
Перейдите по ссылке для входа в консоль, полученной ранее. Браузер должен перенаправить вас на страницу аутентификации в Microsoft.
-
Введите данные для аутентификации и нажмите кнопку Далее.
После успешной аутентификации IdP-сервер перенаправит вас обратно по ссылке для входа в консоль, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.