Управление эфемерными ключами доступа
Часть сервисов Yandex Cloud поддерживает аутентификацию с помощью эфемерных ключей доступа.
Эфемерные ключи доступа создаются для аккаунтов на Яндексе, федеративных аккаунтов, локальных пользователей и сервисных аккаунтов.
Чтобы создать эфемерный ключ доступа, пользователю необходима роль iam.serviceAccounts.ephemeralAccessKeyAdmin или выше на каталог.
Создать эфемерный ключ доступа
Примечание
Создание эфемерных ключей доступа для сервисных аккаунтов может быть запрещено политиками авторизации на уровне каталога, облака или организации.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
-
Посмотрите описание команды создания эфемерного ключа доступа:
yc iam access-key issue-ephemeral --help -
Создайте эфемерный ключ доступа:
yc iam access-key issue-ephemeral \ --subject-id <идентификатор_аккаунта> \ --session-name <имя_сессии> \ --policy <путь_к_файлу> \ --duration <срок_жизни>Где:
--subject-id— идентификатор сервисного аккаунта. Если параметр не указан, ключ будет создан для пользователя, отправившего запрос.--session-name— имя сессии длиной от 1 до 64 символов. Необходимо для идентификации сессии в случае, если сервисный аккаунт имперсонирован для нескольких пользователей. Обязательный параметр.--policy— путь к файлу с политикой доступа в виде схемы данных формата JSON. Если параметр не указан, ключ даст полный доступ к бакету.--duration— срок жизни ключа от15mдо12h. Если параметр не указан, срок жизни ключа будет ограничен сроком действия IAM-токена текущей сессии.
Результат:
access_key_id: ajelprpohp8t******** secret: YCOs05v-KRXqhYpUINdWArH4MINhMyJ6CGU******** session_token: s1.9muilY******** expires_at: "2025-12-16T06:23:51.383485065Z" -
Сохраните идентификатор ключа
access_key_id, секретный ключsecretи токен сессииsession_token. Повторно получить эти значения будет невозможно.
Воспользуйтесь методом REST API createEphemeral для ресурса TemporaryAccessKey или вызовом gRPC API TemporaryAccessKeyService/CreateEphemeral.
Протестировать доступ к бакету
-
Убедитесь, что у аккаунта, для которого вы создали эфемерный ключ доступа, есть доступ к бакету, к которому вы хотите получить доступ с помощью ключа. Если доступа нет, назначьте аккаунту нужную роль, например storage.viewer, на бакет.
В качестве альтернативы можно использовать разрешения ACL для бакета.
-
Добавьте новый профиль в
~/.aws/credentials:[<имя_профиля>] aws_access_key_id = <идентификатор_ключа> aws_secret_access_key = <секретный_ключ> aws_session_token = <токен_сессии>Укажите в профиле значения, полученные при создании эфемерного ключа доступа:
aws_access_key_id— идентификатор ключаaccess_key_id.aws_secret_access_key— секретный ключsecret.aws_session_token— токен сессииsession_token
-
Сохраните на клиентское устройство объект из префикса бакета, к которому был открыт доступ:
aws --endpoint https://storage.yandexcloud.net s3 cp \ s3://<имя_бакета>/<префикс><имя_объекта> ./Результат:
download: s3://<имя_бакета>/<префикс><имя_объекта> to ./<имя_объекта>