SAML-совместимые федерации удостоверений

Яндекс.Облако поддерживает идентификацию федераций удостоверений с помощью SAML 2.0. Это популярный язык разметки для реализации системы единого входа (Single Sign-On, SSO) — технологии, с помощью которой пользователи могут получать доступ ко множеству приложений без необходимости каждый раз вводить свой логин и пароль. Например, когда вы заходите на сайт и видите кнопку Войти с помощью Яндекс, Google или Facebook — все это реализация системы единого входа.

Такой подход получил название федерация удостоверений — когда вся информация об логинах и паролях пользователей хранится у доверенного поставщика удостоверений (Identity Provider, IdP). А поставщик услуг (Service Provider, SP), например Яндекс.Облако, отправляет пользователя проходить аутентификацию на сервере поставщика удостоверений (IdP).

Для чего нужны федерации в Яндекс.Облаке?

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

С помощью федераций удостоверений, компания может настроить Single Sign-On — аутентификацию в Яндекс.Облаке через свой сервер. Тогда сотрудники компании смогут использовать свои корпоративные аккаунты для работы в Яндекс.Облаке.

Так как процесс аутентификации происходит на стороне сервера IdP, то можно настроить более надежную проверку данных пользователя, например двухфакторуню аутентификацию или использование USB-токенов.

Как происходит аутентификация в федерации

Чтобы войти в консоль управления, федеративный пользователь должен пройти по ссылке, в которой содержится идентификатор федерации:

https://console.cloud.yandex.ru/federations/<ID федерации>

Процесс аутентификации показан на диаграмме:

image

  1. Пользователь открывает в браузере ссылку для входа в консоль.

  2. Если это первая аутентификация пользователя, то консоль отправляет его на сервер IdP для прохождения аутентификации.

    Если пользователь уже проходил аутентификацию, то информация об этом сохранена в cookie его браузера. Если время жизни cookie не истекло, то консоль управления сразу аутентифицирует пользователя и отправляет на главную страницу. Время жизни cookie указывается при создании федерации.

    Если время жизни cookie истекло, то консоль отправляет пользователя на сервер IdP для повторной аутентификации.

  3. Сервер IdP показывает пользователю страницу аутентификации. Например, просит ввести логин и пароль.

  4. Пользователь вводит на сервере IdP данные, необходимые для аутентификации.

  5. В случае успешной аутентификации сервер IdP отправляет браузер пользователя назад на страницу для входа в консоль управления.

  6. Консоль управления спрашивает IAM, добавлен ли такой пользователь в облако. Если да, то консоль управления аутентифицирует пользователя и отправляет на главную страницу.