Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Identity and Access Management
    • Все инструкции
    • Обработка секретов, попавших в открытый доступ
      • Управление статическими ключами доступа
      • Управление API-ключами
      • Управление авторизованными ключами
      • Создание временного ключа доступа с помощью Security Token Service
  • Безопасное использование Yandex Cloud
  • Управление доступом
  • Правила тарификации
  • Справочник ролей
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Аутентификация
  3. Создание временного ключа доступа с помощью Security Token Service

Создать временный ключ доступа с помощью Security Token Service

Статья создана
Yandex Cloud
Обновлена 7 марта 2025 г.

С помощью Security Token Service вы можете получить временные ключи для ограниченного доступа в бакеты Yandex Object Storage.

Временные ключи доступа в качестве способа аутентификации поддерживаются только в сервисе Object Storage.

У вас должны быть следующие минимальные роли:

  • для создания сервисного аккаунта и получения на него ключей доступа — iam.serviceAccounts.admin на каталог. Если вы хотите использовать существующий сервисный аккаунт, достаточно роли iam.serviceAccounts.admin на этот сервисный аккаунт.

  • для назначения сервисному аккаунту нужной роли — storage.admin на бакет или каталог. Альтернативно можно использовать разрешение FULL_CONTROL в ACL бакета.

Если у вас примитивная роль admin на каталог, назначать дополнительно роли не требуется.

Чтобы получить временный ключ доступа:

  1. Создайте сервисный аккаунт. Вы также можете использовать существующий сервисный аккаунт.

  2. Назначьте сервисному аккаунту нужную роль, например storage.viewer на бакет, к которому вы хотите получить доступ с помощью временного ключа, или каталог.

    Примечание

    Назначайте роль на каталог, если хотите с помощью сервисного аккаунта иметь доступ ко всем бакетам в каталоге.

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

    Совет

    Если сервисному аккаунту назначены роли в Object Storage на каталог, то пользователи с временными ключами получат доступ к просмотру бакетов в этом каталоге. Рекомендуем назначать сервисному аккаунту роли на конкретные бакеты, а не на каталог.

    В качестве альтернативы можно использовать разрешения ACL для бакета.

  3. Создайте статический ключ доступа для сервисного аккаунта.

  4. Установите и сконфигурируйте AWS Command Line Interface (AWS CLI).

  5. Опишите конфигурацию политики доступа в виде схемы данных формата JSON.

    Временные ключи Security Token Service наследуют права доступа сервисного аккаунта, но ограничиваются политикой доступа на уровне бакетов. Если задать в политике доступа для временного ключа разрешения на выполнение операций, которые не разрешены для сервисного аккаунта, операции не будут выполнены.

    Пример политики

    Эта политика позволяет пользователю с временным ключом получать объекты из указанного префикса бакета.

    {
      "Version": "2012-10-17",
      "Statement": {
        "Sid": "all",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::<имя_бакета>/<префикс>"
      }
    }
    

    Где:

    • Version — (опционально) версия описания политик доступа, например 2012-10-17.

    • Statement — правила политики доступа:

      • Sid — (опционально) пользовательский идентификатор правила, например: all, Statement Allow, Statement Deny.

      • Effect — запрет или разрешение запрошенного действия, возможные значения: Allow, Deny.

      • Principal — возможное значение: *. Параметр нужен для совместимости с AWS S3 API.

      • Action — действие, которое выполнится при срабатывании политики, например: s3:GetObject, s3:PutObject, *.

      • Resource — ресурс, с которым будет произведено действие, возможные значения:

        • arn:aws:s3:::<имя_бакета> — бакет.
        • arn:aws:s3:::<имя_бакета>/<ключ_объекта> — объект в бакете.
        • arn:aws:s3:::<имя_бакета>/<префикс>* — все объекты в бакете, ключи которых начинаются с префикса, например arn:aws:s3:::samplebucket/some/path/*. Префикс может быть пустым: arn:aws:s3:::samplebucket/* — тогда правило будет относиться ко всем объектам в бакете.

        Ресурс бакета не включает в себя ресурсы всех его объектов. Чтобы правило в политике доступа относилось к бакету и всем объектам, их нужно указать как отдельные ресурсы, например arn:aws:s3:::samplebucket и arn:aws:s3:::samplebucket/*.

      Если при создании временных ключей доступа применить политику доступа без правил, то доступ по временному ключу будет запрещен.

    Сохраните готовую конфигурацию в файле policy.json.

    Важно

    Проверка доступа по ACL объекта происходит после проверки политики Security Token Service. Поэтому если для сервисного аккаунта, через который вы получаете временные ключи доступа, настроены разрешения ACL на объекты в бакете, эти объекты станут доступны для запросов с временным ключом доступа, независимо от указанной политики. Подробнее см. на схеме взаимодействия механизмов управления доступом в Object Storage.

  6. Получите временный ключ доступа:

    AWS CLI

    Выполните команду:

    aws --endpoint https://sts.yandexcloud.net/ sts assume-role \
      --role-arn <произвольное_описание> \
      --role-session-name <имя_ключа> \
      --duration-seconds <время_жизни_ключа> \
      --policy file://policy.json
    

    Где:

    • --endpoint — эндпоинт Security Token Service.
    • --role-arn — произвольное описание длиной не менее 20 символов. Поддерживаются буквы латинского алфавита, цифры, символы _ и -.
    • --role-session-name — уникальное имя ключа. Поддерживаются буквы латинского алфавита, цифры, символы _ и -.
    • --duration-seconds — время жизни ключа в секундах, не более 43200.
    • --policy file:// — путь к файлу с политикой доступа.

    Подробнее о команде aws sts assume-role см. в документации AWS.

    Результат:

    {
        "Credentials": {
            "AccessKeyId": "YCAJEkNuezZyt4b**********",
            "SecretAccessKey": "YCMUWwxFAnZ**********...",
            "SessionToken": "s1.9euelZqPjcj**********...",
            "Expiration": "2024-02-29T23:30:53+00:00"
        },
        "AssumedRoleUser": {
            "Arn": "a1234567891234567890/test-2"
        },
        "PackedPolicySize": 0,
        "SourceIdentity": ""
    }
    

    Где:

    • AccessKeyId — идентификатор ключа (совпадает с идентификатором статического ключа).
    • SecretAccessKey — секретный ключ.
    • SessionToken — токен сессии.

    Сохраните эти параметры.

  7. Добавьте полученные параметры временного ключа доступа в переменные окружения для пользователя, которому вы хотите выдать права доступа к бакету:

    export AWS_ACCESS_KEY_ID=<идентификатор_ключа>
    export AWS_SECRET_ACCESS_KEY=<секретный_ключ>
    export AWS_SESSION_TOKEN=<токен_сессии>
    
  8. Чтобы протестировать доступ к бакету, сохраните на клиентское устройство объект из префикса бакета, к которому был открыт доступ:

    AWS CLI
    aws --endpoint https://storage.yandexcloud.net s3 cp \
      s3://<имя_бакета>/<префикс><имя_объекта> ./
    

    Результат:

    download: s3://<имя_бакета>/<префикс><имя_объекта> to ./<имя_объекта>
    

См. такжеСм. также

  • Обзор способов управления доступом в Object Storage

Была ли статья полезна?

Предыдущая
Управление авторизованными ключами
Следующая
Просмотр статусов сервисов
Проект Яндекса
© 2025 ООО «Яндекс.Облако»