Редактирование ACL бакета
В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.
Примечание
-
В консоли управления
в списке сервисов выберите Object Storage. -
В строке с нужным бакетом нажмите значок
и выберите Настроить ACL.Также можно нажать на имя бакета, на открывшейся странице справа сверху нажать
и выбрать Настроить ACL.В открывшемся окне Редактирование ACL выдайте или отзовите необходимые разрешения:
-
Выберите нужных субъектов из списка. Для этого поместите курсор в поле для ввода данных субъекта и в появившейся форме выберите нужного пользователя, сервисный аккаунт, группу пользователей, системную группу или публичную группу. При необходимости воспользуйтесь соответствующими вкладками формы или строкой поиска по имени или электронному адресу субъекта.
Задать разрешение вы можете одновременно для нескольких субъектов, для этого выбирайте их поочередно.
-
Задайте для выбранных субъектов необходимый вид разрешений и нажмите Добавить.
-
Если требуется задать субъектам другие виды разрешений, повторите два предыдущих шага.
-
Чтобы отозвать выданное субъекту разрешение, нажмите Отменить в строке с этим разрешением.
-
Нажмите кнопку Сохранить.
Примечание
В консоли управления разрешения можно выдать только тем сервисным аккаунтам, которые созданы в том же каталоге, что и сам бакет. Выдать разрешения для сервисных аккаунтов, относящихся к другим каталогам, можно с помощью Yandex Cloud CLI (только для ACL бакета), AWS CLI, Terraform или API.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Перед настройкой ACL посмотрите описание команды CLI для редактирования бакета:
yc storage bucket update --help
Чтобы посмотреть текущий ACL бакета, выполните команду:
yc storage bucket get <имя_бакета> --with-acl
Вы можете применить к бакету предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у бакета должен быть либо предопределенный 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"
- Настройка отдельных разрешений
-
-
Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:
- Пользователь.
- Сервисный аккаунт.
- Группа пользователей — перейдите на вкладку Группы
в интерфейсе Cloud Center.
-
Выполните команду:
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
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
Примечание
Чтобы управлять ACL бакета, назначьте сервисному аккаунту, через который работает AWS CLI, роль storage.admin
.
Посмотрите текущий ACL бакета:
aws s3api get-bucket-acl \
--endpoint https://storage.yandexcloud.net \
--bucket <имя_бакета>
Где:
--bucket
— имя бакета.--endpoint
— эндпоинт Object Storage.
Вы можете применить к бакету предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у бакета должен быть либо предопределенный ACL, либо набор отдельных разрешений.
- Предопределенный ACL
-
Выполните команду:
aws s3api put-bucket-acl \ --endpoint https://storage.yandexcloud.net \ --bucket <имя_бакета> \ --acl <предопределенный_ACL>
Где:
--endpoint
— эндпоинт Object Storage.--bucket
— имя бакета.--acl
— предопределенный ACL. Список значений см. в разделе Предопределенные ACL.
- Настройка отдельных разрешений
-
-
Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:
- Пользователь.
- Сервисный аккаунт.
- Группа пользователей — перейдите на вкладку Группы
в интерфейсе Cloud Center.
-
Выполните команду:
aws s3api put-bucket-acl \ --endpoint https://storage.yandexcloud.net \ --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-токен. Подробнее смотрите в разделе Создание бакета и в документации провайдера
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
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
— идентификатор пользователя, сервисного аккаунта или группы пользователей. Используется с типом получателя разрешенийCanonicalUser
.Идентификаторы можно получить следующими способами:
- Пользователь.
- Сервисный аккаунт.
- Группа пользователей — перейдите на вкладку Группы
в интерфейсе Cloud Center.
-
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.Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы редактировать ACL бакета, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API bucketPutAcl.