Доступ к бакету с помощью эфемерного ключа доступа
Часть сервисов Yandex Cloud поддерживает аутентификацию с помощью эфемерных ключей доступа.
Эфемерные ключи доступа создаются для аккаунтов на Яндексе, федеративных аккаунтов, локальных пользователей и сервисных аккаунтов.
Создать эфемерный ключ доступа
Если у вас еще нет интерфейса командной строки 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. Повторно получить эти значения будет невозможно.
Протестировать доступ к бакету
-
Убедитесь, что у аккаунта, для которого вы создали эфемерный ключ доступа, есть доступ к бакету, к которому вы хотите получить доступ с помощью ключа. Если доступа нет, назначьте аккаунту нужную роль, например 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 ./<имя_объекта>