Обзор сервиса IAM, типы аккаунтов
Кратко:
- Сервис Yandex Identity and Access Management (IAM) обеспечивает доступ пользователей к облачным ресурсам.
- Аутентификация включает проверку личности пользователя и может использовать пароль, физическое устройство или биометрические данные.
- Авторизация проверяет права пользователя на выполнение действий.
- Три типа аккаунтов: Яндекс ID, федерация удостоверений и сервисные аккаунты.
- Яндекс ID - единый аккаунт для всех сервисов Яндекса с cookie на домен верхнего уровня .yandex.
- Федерация удостоверений использует протокол SAML для хранения информации об аутентификации.
- Сервисные аккаунты используются для доступа к ресурсам от имени приложений и виртуальных машин.
- Аутентификация сервисного аккаунта может осуществляться с помощью авторизованных ключей, API-ключей или статических ключей доступа.
Обзор сервиса IAM, типы аккаунтов
Чтобы оградить дом или офис от нежданных гостей, люди придумали дверные замки: достаточно позаботиться о том, чтобы ключи не достались чужакам. В облаке примерно то же самое. Только в роли замка выступает сервис Yandex Identity and Access Management (IAM), который отвечает за доступ пользователей к вашим облачным ресурсам. На этом уроке мы рассмотрим, какие «ключи» используются для аутентификации пользователей в облаке и их авторизации в сервисах.
Аутентификация — это проверка, является ли входящий тем, за кого себя выдаёт. Для аутентификации может использоваться пароль, физическое устройство, сканирование биометрических данных. Если нужно обеспечить высокий уровень безопасности, используют двухфакторную аутентификацию.
Авторизация — это проверка прав на выполнение каких-либо действий. Например, DevOps-инженер Петров имеет права создавать и конфигурировать в облаке своей компании любые ресурсы, которые могут понадобиться. Но поскольку у Петрова нет прав на доступ к бакету бизнес-аналитика Васечкина в Object Storage, то пройти авторизацию и посмотреть, что же там хранится, он не сможет.
Теперь рассмотрим, как получить доступ к ресурсам Yandex Cloud. Предусмотрены три типа аккаунтов.
Тип 1. Учетная запись Яндекс ID. Это единый аккаунт для всех сервисов Яндекса, в котором хранятся личные данные пользователей, выполняется их аутентификация и авторизация. Если аутентификация прошла успешно, то Яндекс ID устанавливает в браузере пользователя cookie на домен верхнего уровня .yandex.
Когда вы входите в консоль управления Yandex Cloud, облако — точнее, сервис IAM — использует сookie Яндекс ID для аутентификации и, если она прошла успешно, устанавливает собственные cookie на поддомены cloud.yandex.TLD. В консоли эти cookie обмениваются на IAM-токены. IAM-токен — это информация для авторизации, подписанная секретным ключом IAM. Он содержит, например, ID пользователя, время жизни самого токена, ресурсы или сервисы, которые могут быть доступны с этим токеном. С помощью IAM-токена пользователь авторизуется в API Yandex Cloud и выполняет операции с ресурсами.
Если вы работаете в интерфейсе командной строки (CLI), то на вашем компьютере будет сохранен OAuth-токен Яндекс ID. Утилита
yc
будет обменивать этот токен на IAM-токены со сроком жизни 12 часов для взаимодействия с API Yandex Cloud.Тип 2. Федерация удостоверений. Удостоверения (credentials) — это информация об атрибутах пользователей, таких как логин или адрес электронной почты, и способах аутентификации. При использовании федерации удостоверений они хранятся не у облачного провайдера, а у третьей доверенной стороны — поставщика удостоверений (IdP, Identity Provider).
В Yandex Cloud вы можете создать федерацию удостоверений с помощью сервиса Yandex Cloud Organization. Этот сервис работает с любой системой управления учётными записями, которая поддерживает протокол SAML (например Active Directory или Google Workspace).
Упрощённо аутентификация с использованием федерации удостоверений происходит следующим образом.

- Пользователь хочет открыть в браузере консоль управления Yandex Cloud.
- Если пользователь уже проходил аутентификацию и время жизни cookie в его браузере не истекло, то он переходит на главную страницу консоли управления. Если это не так, то консоль отправляет его на сервер поставщика удостоверений для аутентификации.
- Пользователь переходит на страницу аутентификации на сервере поставщика удостоверений и вводит свои логин и пароль.
- Если аутентификация прошла успешно, сервер поставщика удостоверений переадресует пользователя обратно на страницу входа в консоль управления.
- Поставщик удостоверений направляет сервису IAM облака подписанное сообщение (SAML Response) с информацией о том, что пользователь прошел аутентификацию.
После проверки подписи сообщения IAM устанавливает пользователю cookie на поддомен cloud.yandex. Сookie обменивается на IAM-токен, который позволяет пользователю выполнять операции с защищенными ресурсами. Криптографические ключи для контроля целостности cookie хранятся в IAM.
Тип 3. Аутентифицированные пользователи могут выполнять операции с облаком не только под своими пользовательскими аккаунтами, но и через сервисные аккаунты.
Сервисные аккаунты — это специальный тип аккаунтов, которые используются для доступа к ресурсам Yandex Cloud от имени приложений. Также под сервисными аккаунтами могут выполнять операции облачные функции и сервисы, которые запущены в виртуальных машинах.
С помощью сервисного аккаунта нельзя войти в консоль управления Yandex Cloud. Подразумевается, что операции от имени сервисного аккаунта выполняют программы, а не люди.
С помощью сервисного аккаунта другие пользователи могут управлять вашими ресурсами в Yandex Cloud. Учётным записям этих пользователей нужно лишь предоставить права на использование созданного вами сервисного аккаунта.
Для сервисного аккаунта можно создать ключи для аутентификации в Yandex Cloud с помощью API, CLI и других инструментов. Эти ключи будут удалены при удалении сервисного аккаунта. Если сервисный аккаунт привязан к виртуальным машинам или функциям, в которых запускается ваша программа, то его токен доступа будет вызываться из машины или функции, то есть хранить ключи доступа и управлять ими не придётся.
Аутентификацию сервисного аккаунта можно выполнять тремя способами:
-
Авторизованные ключи. Используются для получения IAM-токена с помощью открытого и секретного ключа. Этот способ вы примените в следующей практической работе.
-
API-ключи. Используются в некоторых сервисах для упрощённой аутентификации вместо IAM-токена. Могут пригодиться для работы с сервисами SpeechKit, Vision и Translate.
-
Статические ключи доступа. Необходимы при использовании AWS-совместимых сервисов, например в Object Storage или Message Queue.