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

Редактирование ACL бакета

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 28 июля 2025 г.

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

Примечание

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

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

  2. В строке с нужным бакетом нажмите значок и выберите Настроить ACL.

    Также можно нажать на имя бакета, на открывшейся странице справа сверху нажать и выбрать Настроить ACL.

    В открывшемся окне Редактирование ACL выдайте или отзовите необходимые разрешения:

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

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

    2. Задайте для выбранных субъектов необходимый вид разрешений и нажмите Добавить.

    3. Если требуется задать субъектам другие виды разрешений, повторите два предыдущих шага.

    4. Чтобы отозвать выданное субъекту разрешение, нажмите Отменить в строке с этим разрешением.

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

    Примечание

    В консоли управления разрешения можно выдать только тем сервисным аккаунтам, которые созданы в том же каталоге, что и сам бакет. Выдать разрешения для сервисных аккаунтов, относящихся к другим каталогам, можно с помощью Yandex Cloud CLI (только для ACL бакета), AWS CLI, Terraform или API.

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

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

К бакету можно применить предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у бакета должен быть либо предопределенный ACL, либо набор отдельных разрешений.

Вы можете редактировать ACL бакета с помощью следующих команд:

  • yc storage bucket update
  • yc storage s3api put-bucket-acl

yc storage bucket update

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

yc storage bucket update --help

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

yc storage bucket get <имя_бакета> --with-acl

Предопределенный ACL

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

yc storage bucket update \
  --name <имя_бакета> \
  --acl <предопределенный_ACL>

Где:

  • --name — имя бакета.
  • --acl — предопределенный ACL. Список значений см. в разделе Предопределенные ACL.

Результат:

name: my-bucket
folder_id: csgeoelk7fl1********
default_storage_class: STANDARD
versioning: VERSIONING_DISABLED
max_size: "1073741824"
acl:
  grants:
    - permission: PERMISSION_READ
      grant_type: GRANT_TYPE_ALL_USERS
created_at: "2022-12-14T19:10:05.957940Z"

Настройка отдельных разрешений

  1. Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:

    • Пользователь.
    • Сервисный аккаунт.
    • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
  2. Выполните команду:

    yc storage bucket update --name <имя_бакета> \
      --grants grant-type=<тип_получателя_разрешения>,grantee-id=<идентификатор_получателя>,permission=<тип_разрешения>
    

    Где:

    • grant-type — тип получателя разрешения. Возможные значения:

      • grant-type-account — пользователь, сервисный аккаунт или группа пользователей;
      • grant-type-all-authenticated-users — публичная группа всех аутентифицированных пользователей Yandex Cloud;
      • grant-type-all-users — публичная группа всех пользователей интернета.
    • grantee-id — идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение. Указывается, только если grant-type=grant-type-account.

    • permission — тип разрешения ACL. Возможные значения:

      • permission-read — доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.
      • permission-write — доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с permission-read.
      • permission-full-control — полный доступ к бакету и объектам в нем.

      Подробнее о разрешениях см. в разделе Виды разрешений.

    Чтобы настроить несколько разрешений, укажите параметр --grants несколько раз. Например, чтобы выдать разрешение на запись в бакет, выполните команду:

    yc storage bucket update --name <имя_бакета> \
      --grants grant-type=<тип_получателя_разрешения>,grantee-id=<идентификатор_получателя>,permission=permission-read \
      --grants grant-type=<тип_получателя_разрешения>,grantee-id=<идентификатор_получателя>,permission=permission-write
    

yc storage s3api put-bucket-acl

Посмотрите текущий ACL бакета:

yc storage s3api get-bucket-acl \
  --bucket <имя_бакета>

Где --bucket — имя бакета.

Предопределенный ACL

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

yc storage s3api put-bucket-acl \
  --bucket <имя_бакета> \
  --acl <предопределенный_ACL>

Где:

  • --name — имя бакета.
  • --acl — предопределенный ACL. Список значений см. в разделе Предопределенные ACL.

Настройка отдельных разрешений

  1. Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:

    • Пользователь.
    • Сервисный аккаунт.
    • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
  2. Выполните команду:

    yc storage s3api put-bucket-acl \
      --bucket <имя_бакета> \
      <тип_разрешения> <получатель_разрешения>
    

    Где:

    • --bucket — имя бакета.

    • Возможные типы разрешений ACL:

      • --grant-read — доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.
      • --grant-write — доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с --grant-read.
      • --grant-full-control — полный доступ к бакету и объектам в нем.

      Подробнее о разрешениях см. в разделе Виды разрешений.

    • Возможные получатели разрешений:

      • id=<идентификатор_получателя> — идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение.
      • uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers — публичная группа всех аутентифицированных пользователей Yandex Cloud.
      • uri=http://acs.amazonaws.com/groups/global/AllUsers — публичная группа всех пользователей интернета.

    Чтобы настроить несколько разрешений, укажите параметры, тип разрешения и получателя разрешения несколько раз. Например, чтобы выдать разрешение на запись в бакет, выполните команду:

    yc storage s3api put-bucket-acl \
      --bucket <имя_бакета> \
      --grant-read id=<идентификатор_получателя> \
      --grant-write id=<идентификатор_получателя>
    

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

Примечание

Чтобы управлять ACL бакета, назначьте сервисному аккаунту, через который работает AWS CLI, роль storage.admin.

Посмотрите текущий ACL бакета:

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

Где:

  • --bucket — имя бакета.
  • --endpoint — эндпоинт Object Storage.

К бакету можно применить предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у бакета должен быть либо предопределенный ACL, либо набор отдельных разрешений.

Предопределенный ACL

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

  aws s3api put-bucket-acl \
    --endpoint https://storage.yandexcloud.kz \
    --bucket <имя_бакета> \
    --acl <предопределенный_ACL>

Где:

  • --endpoint — эндпоинт Object Storage.
  • --bucket — имя бакета.
  • --acl — предопределенный ACL. Список значений см. в разделе Предопределенные ACL.
Настройка отдельных разрешений
  1. Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:

    • Пользователь.
    • Сервисный аккаунт.
    • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.
  2. Выполните команду:

    aws s3api put-bucket-acl \
      --endpoint https://storage.yandexcloud.kz \
      --bucket <имя_бакета> \
      <тип_разрешения> <получатель_разрешения>
    

    Где:

    • --bucket — имя бакета.

    • --endpoint — эндпоинт Object Storage.

    • Возможные типы разрешений ACL:

      • --grant-read — доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.
      • --grant-write — доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с --grant-read.
      • --grant-full-control — полный доступ к бакету и объектам в нем.

      Подробнее о разрешениях см. в разделе Виды разрешений.

    • Возможные получатели разрешений:

      • id=<идентификатор_получателя> — идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение.
      • uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers — публичная группа всех аутентифицированных пользователей Yandex Cloud.
      • uri=http://acs.amazonaws.com/groups/global/AllUsers — публичная группа всех пользователей интернета.

    Чтобы настроить несколько разрешений, укажите параметры, тип разрешения и получателя разрешения несколько раз. Например, чтобы выдать разрешение на запись в бакет, выполните команду:

    aws s3api put-bucket-acl \
      --endpoint https://storage.yandexcloud.net \
      --bucket <имя_бакета> \
      --grant-read id=<идентификатор_получателя> \
      --grant-write id=<идентификатор_получателя>
    

Примечание

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

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

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

Примечание

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

Для редактирования ACL бакета вы можете использовать ресурсы:

  • yandex_storage_bucket_grant;
  • yandex_storage_bucket (устаревший способ).

Важно

Ресурс yandex_storage_bucket_grant нельзя использовать, если одновременно используется ресурс yandex_storage_bucket_iam_binding для назначения примитивных ролей (viewer, editor и admin) на бакет, или если одновременно используются параметры acl или grant ресурса yandex_storage_bucket.

yandex_storage_bucket_grant

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

    resource "yandex_storage_bucket_grant" "my_bucket_grant" {
      bucket = "<имя_существующего_бакета>"
      grant {
        id          = "<идентификатор_пользователя_1>"
        permissions = ["READ", "WRITE"]
        type        = "CanonicalUser"
      }
      grant {
        id          = "<идентификатор_пользователя_2>"
        permissions = ["FULL_CONTROL"]
        type        = "CanonicalUser"
      }
      grant {
        uri         = "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
        permissions = ["READ"]
        type        = "Group"
      }
    }
    

    Где:

    • bucket — имя существующего бакета.
    • grant — настройки ACL. Чтобы управлять этим параметром, у сервисного аккаунта, на который получены статические ключи доступа, должна быть роль storage.admin на бакет или каталог.
      • type — тип получателя разрешений. Возможные значения:

        • CanonicalUser — для пользователя, сервисного аккаунта или группы пользователей.
        • Group — для публичной группы.
      • permissions — тип разрешений ACL, возможные значения:

        • READ — доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.
        • WRITE — доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с READ, например permissions = ["READ", "WRITE"].
        • FULL_CONTROL — полный доступ к бакету и объектам в нем.

        Подробнее о разрешениях см. в разделе Виды разрешений.

      • id — идентификатор пользователя, сервисного аккаунта или группы пользователей:

        • Пользователь.
        • Сервисный аккаунт.
        • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.

        Используется с типом получателя разрешений CanonicalUser.

      • uri — идентификатор публичной группы. Используется с типом получателя разрешений Group. Возможные значения:

        • http://acs.amazonaws.com/groups/global/AllUsers — все пользователи интернета.
        • http://acs.amazonaws.com/groups/global/AuthenticatedUsers — все аутентифицированные пользователи Yandex Cloud.

    Вместо параметра grant вы можете указать параметр acl — предопределенный ACL бакета. Значение по умолчанию — private: пользователи Yandex Cloud получают разрешения в соответствии со своими ролями в IAM.

    Более подробную информацию о параметрах ресурса yandex_storage_bucket_grant см. в документации провайдера.

  2. Если вы совместно с ресурсом yandex_storage_bucket_grant планируете использовать ресурс yandex_storage_bucket_iam_binding для одного и того же бакета, рекомендуем выполнять создание ресурсов последовательно. Для этого добавьте в блок yandex_storage_bucket_iam_binding зависимость от наличия ресурса yandex_storage_bucket_grant:

    resource "yandex_storage_bucket_iam_binding" "mybucket-viewers" {
      ...
    
      depends_on = [
        yandex_storage_bucket_grant.my_bucket_grant
      ]
    }
    
  3. Примените конфигурацию:

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

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

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

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

    Проверить изменения ресурсов можно в консоли управления или с помощью команды CLI:

    yc storage bucket get <имя_бакета> --full
    

yandex_storage_bucket (устаревший способ)

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

    resource "yandex_storage_bucket" "test" {
      access_key = "<идентификатор_статического_ключа>"
      secret_key = "<секретный_ключ>"
      bucket = "<имя_бакета>"
      grant {
        id          = "<идентификатор_пользователя>"
        type        = "CanonicalUser"
        permissions = ["FULL_CONTROL"]
      }
    
      grant {
        type        = "Group"
        permissions = ["READ", "WRITE"]
        uri         = "http://acs.amazonaws.com/groups/global/AllUsers"
      }
    }
    

    Где:

    • access_key — идентификатор статического ключа доступа.
    • secret_key — значение секретного ключа доступа.
    • bucket — имя бакета. Обязательный параметр.
    • grant — настройки ACL. Необязательный параметр. Чтобы управлять этим параметром, у сервисного аккаунта, на который получены статические ключи доступа, должна быть роль storage.admin на бакет или каталог.
      • type — тип получателя разрешений. Возможные значения:

        • CanonicalUser — для пользователя, сервисного аккаунта или группы пользователей.
        • Group — для публичной группы.
      • permissions — тип разрешений ACL, возможные значения:

        • READ — доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.
        • WRITE — доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с READ, например permissions = ["READ", "WRITE"].
        • FULL_CONTROL — полный доступ к бакету и объектам в нем.

        Подробнее о разрешениях см. в разделе Виды разрешений.

      • id — идентификатор пользователя, сервисного аккаунта или группы пользователей:

        • Пользователь.
        • Сервисный аккаунт.
        • Группа пользователей — перейдите на вкладку Группы в интерфейсе Cloud Center.

        Используется с типом получателя разрешений CanonicalUser.

      • uri — идентификатор публичной группы. Используется с типом получателя разрешений Group. Возможные значения:

        • http://acs.amazonaws.com/groups/global/AllUsers — все пользователи интернета.
        • http://acs.amazonaws.com/groups/global/AuthenticatedUsers — все аутентифицированные пользователи Yandex Cloud.

    Вместо параметра grant вы можете указать параметр acl — предопределенный ACL бакета. Значение по умолчанию — private: пользователи Yandex Cloud получают разрешения в соответствии со своими ролями в IAM.

    Более подробную информацию о параметрах ресурса yandex_storage_bucket см. в документации провайдера.

  2. Примените конфигурацию:

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

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

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

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

    Проверить изменения ресурсов можно в консоли управления или с помощью команды CLI:

    yc storage bucket get <имя_бакета> --full
    

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

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

Предыдущая
Настройка прав доступа с помощью IAM
Следующая
Управление политикой доступа
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»