Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все инструкции
      • Создание бакета
      • Удаление бакета
      • Ограничение максимального размера бакета
      • Шифрование бакета
      • Управление жизненными циклами объектов
      • Управление конфигурацией CORS
      • Настройка прав доступа с помощью IAM
      • Редактирование ACL бакета
      • Управление политикой доступа
      • Настройка публичного доступа к бакету
      • Доступ в бакет с помощью Security Token Service
      • Доступ в бакет с помощью сервисного подключения из VPC
      • Управление версионированием бакета
      • Включение механизма логирования
      • Управление блокировками версий объектов
      • Управление метками бакета
      • Получение информации и статистики о бакете
      • Просмотр метрик бакета
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Применить или изменить политику
  • Просмотреть политику
  • Удалить политику
  • См. также
  1. Пошаговые инструкции
  2. Бакеты
  3. Управление политикой доступа

Управление политикой доступа (bucket policy)

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Применить или изменить политику
  • Просмотреть политику
  • Удалить политику
  • См. также

В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.

Политики доступа (bucket policy) устанавливают права на действия с бакетами, объектами и группами объектов.

Образцы политик доступа для решения конкретных задач см. в подразделе Примеры конфигураций.

Важно

Если вы хотите настроить политику доступа для бакета и подключаться к нему из кластера Hive Metastore или Yandex Managed Service for Apache Airflow™, вам потребуется дополнительная настройка инфраструктуры. Подробнее см. в инструкциях для Metastore и Managed Service for Apache Airflow™.

Применить или изменить политикуПрименить или изменить политику

Минимально необходимая роль для применения или изменения политики доступа — storage.configurer. См. описание роли.

Примечание

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

Для применения или изменения политики доступа к бакету:

Консоль управления
Yandex Cloud CLI
AWS CLI
Terraform
API
  1. В консоли управления в списке сервисов выберите Object Storage и перейдите в бакет, в котором нужно настроить политику доступа.

  2. На панели слева выберите Безопасность и перейдите на вкладку Политика доступа.

  3. Нажмите кнопку Настроить доступ.

  4. Введите идентификатор политики доступа.

  5. Настройте правило:

    1. Введите идентификатор правила.

    2. Настройте параметры правила:

      • Результат — разрешить или запретить.

      • Принцип выбора — включить или исключить пользователей.

      • Пользователь — выберите всех пользователей или задайте набор конкретных субъектов.

        Чтобы задать набор конкретных субъектов:

        • Выберите опцию Выбрать пользователей.

        • Выберите нужных субъектов из списка. Для этого поместите курсор в поле для ввода данных субъекта и в появившейся форме выберите нужного пользователя, сервисный аккаунт, группу пользователей, системную группу или публичную группу. При необходимости воспользуйтесь соответствующими вкладками формы или строкой поиска по имени или электронному адресу субъекта.

          Вы можете выбрать одновременно нескольких субъектов, для этого выбирайте их поочередно.

      • Действие, для которого создается правило. Вы также можете выбрать опцию Все действия.

      • Ресурс — по умолчанию указан выбранный бакет. Чтобы добавить другие ресурсы в правило, нажмите кнопку Добавить ресурс.

        Примечание

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

    3. При необходимости добавьте условие для правила:

      • Выберите Ключ из списка.
      • Выберите Оператор из списка. Чтобы оператор действовал в существующих полях, выберите опцию Применить, если поле существует. Тогда, если поля не существует, условие будет считаться выполненным.
      • Введите Значение.
      • Нажмите кнопку Добавить значение, чтобы добавить дополнительное значение в условие.

      Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой И. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.

      Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой ИЛИ. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

  6. При необходимости добавьте правила и настройте их.

  7. Нажмите кнопку Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для редактирования ACL бакета:

    yc storage bucket update --help
    
  2. Опишите конфигурацию политики доступа в виде схемы данных в формате JSON:

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::<имя_бакета>/*",
        "Condition": {
          "Bool": {
            "aws:SecureTransport": "true"
          }
        }
      }
    }
    

    Где:

    • Version — версия описания политик доступа. Необязательный параметр.
    • Statement — правила политики доступа:
      • Effect — запрет или разрешение запрошенного действия. Возможные значения: Allow и Deny.

      • Principal — идентификатор субъекта запрошенного разрешения. Получателем может быть пользователь, сервисный аккаунт или группа пользователей. Возможные значения: *, <идентификатор_субъекта>. Необязательный параметр.

        Идентификаторы можно получить следующими способами:

        • Пользователь.
        • Сервисный аккаунт.
        • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
      • Action — действие, которое будет разрешено при срабатывании политики. Возможные значения: s3:GetObject, s3:PutObject и * если необходимо применять политику ко всем действиям.

      • Resource — ресурс, к которому будет применяться правило.

      • Condition — условие, которое будет проверяться. Необязательный параметр.

        Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой И. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.

        Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой ИЛИ. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

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

    yc storage bucket update \
      --name <имя_бакета> \
      --policy-from-file <путь_к_файлу_с_политиками>
    

    Результат:

    name: my-bucket
    folder_id: csgeoelk7fl1********
    default_storage_class: STANDARD
    versioning: VERSIONING_SUSPENDED
    max_size: "10737418240"
    policy:
        Statement:
          Action: s3:GetObject
          Condition:
            Bool:
              aws:SecureTransport: "true"
            Effect: Allow
            Principal: '*'
            Resource: arn:aws:s3:::my-bucket
          Version: "2012-10-17"
    acl: {}
    created_at: "2022-12-14T08:42:16.273717Z"
    

Примечание

Для управления политикой доступа с помощью AWS CLI сервисному аккаунту должна быть назначена роль storage.admin.

Если у вас еще нет AWS CLI, установите и сконфигурируйте его.

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

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::<имя_бакета>/*",
        "Condition": {
          "Bool": {
            "aws:SecureTransport": "true"
          }
        }
      }
    }
    

    Где:

    • Version — версия описания политик доступа. Необязательный параметр.
    • Statement — правила политики доступа:
      • Effect — запрет или разрешение запрошенного действия. Возможные значения: Allow и Deny.

      • Principal — идентификатор субъекта запрошенного разрешения. Получателем может быть пользователь, сервисный аккаунт или группа пользователей. Возможные значения: *, <идентификатор_субъекта>. Необязательный параметр.

        Идентификаторы можно получить следующими способами:

        • Пользователь.
        • Сервисный аккаунт.
        • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
      • Action — действие, которое будет разрешено при срабатывании политики. Возможные значения: s3:GetObject, s3:PutObject и * если необходимо применять политику ко всем действиям.

      • Resource — ресурс, к которому будет применяться правило.

      • Condition — условие, которое будет проверяться. Необязательный параметр.

        Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой И. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.

        Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой ИЛИ. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

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

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

    aws s3api put-bucket-policy \
      --endpoint https://storage.yandexcloud.net \
      --bucket <имя_бакета> \
      --policy file://policy.json
    

Примечание

Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin, на каталог, в котором будут создаваться ресурсы.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.

Примечание

Кроме статических ключей доступа для аутентификации в Object Storage можно использовать IAM-токен. Подробнее смотрите в разделе Создание бакета и в документации провайдера.

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    
    resource "yandex_iam_service_account" "sa" {
      name = "<имя_сервисного_аккаунта>"
    }
    
    // Назначение роли сервисному аккаунту
    resource "yandex_resourcemanager_folder_iam_member" "sa-admin" {
      folder_id = "<идентификатор_каталога>"
      role      = "storage.admin"
      member    = "serviceAccount:${yandex_iam_service_account.sa.id}"
    }
    
    // Создание статического ключа доступа
    resource "yandex_iam_service_account_static_access_key" "sa-static-key" {
      service_account_id = yandex_iam_service_account.sa.id
      description        = "static access key for object storage"
    }
    
    resource "yandex_storage_bucket" "b" {
      access_key = "yandex_iam_service_account_static_access_key.sa-static-key.access_key"
      secret_key = "yandex_iam_service_account_static_access_key.sa-static-key.secret_key"
      bucket     = "my-policy-bucket"
      policy     = <<POLICY
     {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:*",
          "Resource": [
            "arn:aws:s3:::my-policy-bucket/*",
            "arn:aws:s3:::my-policy-bucket"
          ]
        },
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:PutObject",
          "Resource": [
            "arn:aws:s3:::my-policy-bucket/*",
            "arn:aws:s3:::my-policy-bucket"
          ]
        }
      ]
    }
    POLICY
    }
    

    Где:

    • access_key — идентификатор статического ключа доступа.
    • secret_key — значение секретного ключа доступа.
    • bucket — имя бакета. Обязательный параметр.
    • policy — имя политики. Обязательный параметр.

    Настройки политики:

    • Version — версия описания политик доступа. Необязательный параметр.
    • Statement — правила политики доступа:
      • Effect — запрет или разрешение запрошенного действия. Возможные значения: Allow и Deny.

      • Principal — идентификатор субъекта запрошенного разрешения. Получателем может быть пользователь, сервисный аккаунт или группа пользователей. Возможные значения: *, <идентификатор_субъекта>. Необязательный параметр.

        Идентификаторы можно получить следующими способами:

        • Пользователь.
        • Сервисный аккаунт.
        • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
      • Action — действие, которое будет разрешено при срабатывании политики. Возможные значения: s3:GetObject, s3:PutObject и * если необходимо применять политику ко всем действиям.

      • Resource — ресурс, к которому будет применяться правило.

      • Condition — условие, которое будет проверяться. Необязательный параметр.

        Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой И. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.

        Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой ИЛИ. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов.

    После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Чтобы управлять политикой доступа, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API PutBucketPolicy. Если ранее для бакета уже была настроена политика доступа, то после применения новой политики она будет полностью перезаписана.

Примечание

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

Просмотреть политикуПросмотреть политику

Минимально необходимая роль для просмотра политики доступа — storage.configViewer. См. описание роли.

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

Консоль управления
AWS CLI
API
  1. В консоли управления в списке сервисов выберите Object Storage.
  2. Выберите бакет в списке.
  3. В меню слева выберите Безопасность и перейдите на вкладку Политика доступа.

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

aws --endpoint https://storage.yandexcloud.net s3api get-bucket-policy \
  --bucket <имя_бакета> \
  --output text

Результат:

{
  "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::<имя_бакета>/*\",\"Condition\":{\"Bool\":{\"aws:SecureTransport\":\"true\"}}}}"
}

Подробнее о параметрах читайте в описании схемы данных.

Воспользуйтесь методом S3 API GetBucketPolicy.

Удалить политикуУдалить политику

Минимально необходимая роль для удаления политики доступа — storage.configurer. См. описание роли.

Чтобы удалить политику доступа:

Консоль управления
AWS CLI
Terraform
API
  1. В консоли управления в списке сервисов выберите Object Storage.
  2. Выберите бакет в списке.
  3. В меню слева выберите Безопасность и перейдите на вкладку Политика доступа.
  4. Нажмите значок и выберите Удалить политику доступа.
  5. Нажмите кнопку Удалить.

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

aws --endpoint https://storage.yandexcloud.net s3api delete-bucket-policy \
  --bucket <имя_бакета>

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Если вы применили политику доступа к бакету при помощи Terraform, вы можете удалить ее:

  1. Найдите в конфигурационном файле параметры созданной ранее политики доступа, которую необходимо удалить:

    resource "yandex_storage_bucket" "b" {
      bucket = "my-policy-bucket"
      policy = <<POLICY
     {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:*",
          "Resource": [
            "arn:aws:s3:::my-policy-bucket/*",
            "arn:aws:s3:::my-policy-bucket"
          ]
        },
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:PutObject",
          "Resource": [
            "arn:aws:s3:::my-policy-bucket/*",
            "arn:aws:s3:::my-policy-bucket"
          ]
        }
      ]
    }
    POLICY
    }
    
  2. Удалите поле policy с описанием параметров политики доступа из конфигурационного файла.

  3. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы редактировали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  4. Удалите политику доступа.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Введите слово yes и нажмите Enter.

    После этого в указанном каталоге будет удалена политика доступа к бакету. Проверить отсутствие политики доступа можно в консоли управления.

Воспользуйтесь методом S3 API DeleteBucketPolicy.

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

  • Примеры конфигурации

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

Предыдущая
Редактирование ACL бакета
Следующая
Настройка публичного доступа к бакету
Проект Яндекса
© 2025 ООО «Яндекс.Облако»