Редактирование ACL объекта
В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.
Для управления доступом к объекту в бакете Object Storage можно воспользоваться ACL.
Примечание
Если ранее для объекта уже был задан ACL, то после применения изменений ACL будет полностью перезаписан.
-
В консоли управления
в списке сервисов выберите Object Storage и перейдите в нужный бакет. -
На панели слева выберите
Объекты и найдите в списке нужный объект. -
Чтобы отредактировать ACL, нажмите значок
справа от имени объекта и выберите ACL объекта.Также можно нажать на имя объекта, на открывшейся странице нажать
и выбрать ACL объекта. -
В появившемся окне Редактирование ACL выдайте или отзовите необходимые разрешения.
Примечание
В консоли управления разрешения можно выдать только тем сервисным аккаунтам, которые созданы в том же каталоге, что и сам бакет. Выдать разрешения для сервисных аккаунтов, относящихся к другим каталогам, можно с помощью YC CLI (только для ACL бакета), AWS CLI, Terraform или API.
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
Примечание
Чтобы управлять ACL объекта, назначьте сервисному аккаунту, через который работает AWS CLI, роль storage.admin
.
Посмотрите текущий ACL объекта:
aws s3api get-object-acl \
--endpoint https://storage.yandexcloud.net \
--bucket <имя_бакета> \
--key <ключ_объекта>
Где:
--endpoint
— эндпоинт Object Storage.--bucket
— имя бакета.--key
— ключ объекта.
Вы можете применить к объекта предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у объекта должен быть либо предопределенный ACL, либо набор отдельных разрешений.
Предопределенный ACL
Выполните команду:
aws s3api put-object-acl \
--endpoint https://storage.yandexcloud.net \
--bucket <имя_бакета> \
--key <ключ_объекта> \
--acl <предопределенный_ACL>
Где:
--endpoint
— эндпоинт Object Storage.--bucket
— имя бакета.--key
— ключ объекта.--acl
— предопределенный ACL. Список значений см. в разделе Предопределенные ACL.
Настройка отдельных разрешений
-
Чтобы выдать разрешения ACL для пользователя Yandex Cloud, сервисного аккаунта или группы пользователей, получите их идентификатор:
- Пользователь.
- Сервисный аккаунт.
- Группа пользователей — перейдите на вкладку Группы
в интерфейсе Cloud Center.
-
Выполните команду:
aws s3api put-object-acl \ --endpoint https://storage.yandexcloud.net \ --bucket <имя_бакета> \ --key <ключ_объекта> \ <тип_разрешения> <получатель_разрешения>
Где:
-
--endpoint
— эндпоинт Object Storage. -
--bucket
— имя бакета. -
--key
— ключ объекта. -
Возможные типы разрешений ACL:
--grant-read
— доступ к чтению объекта.--grant-full-control
— полный доступ к объекту.--grant-read-acp
— доступ к чтению ACL объекта.--grant-write-acp
— доступ к редактированию ACL объекта.
Вы можете задать несколько разрешений в одной команде.
-
Возможные получатели разрешений:
id=<идентификатор_получателя>
— идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение.uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers
— публичная группа всех аутентифицированных пользователей Yandex Cloud.uri=http://acs.amazonaws.com/groups/global/AllUsers
— публичная группа всех пользователей интернета.
-
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы отредактировать ACL объекта:
-
Откройте файл конфигурации Terraform и добавьте параметр
acl
в описание объекта.... resource "yandex_storage_object" "cute-cat-picture" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "cat-pictures" key = "cute-cat" source = "/images/cats/cute-cat.jpg" acl = "public-read" } ...
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.acl
— предопределенный ACL объекта. Значение по умолчанию —private
: пользователи Yandex Cloud получают разрешения в соответствии со своими ролями в IAM.
Более подробную информацию о параметрах ресурса
yandex_storage_object
в Terraform см. в документации провайдера . -
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.Проверить изменение группы безопасности можно в консоли управления
.
Чтобы отредактировать ACL объекта, воспользуйтесь методом S3 API objectPutAcl.
Чтобы загрузить объект с установкой ACL, воспользуйтесь методом S3 API upload с заголовками X-Amz-Acl
, X-Amz-Grant-Read
, X-Amz-Grant-Read-Acp
, X-Amz-Grant-Write-Acp
и X-Amz-Grant-Full-Control
.