Редактирование ACL бакета
В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.
Чтобы настроить ACL бакета:
-
В консоли управления
выберите каталог. -
Выберите сервис Object Storage.
-
Чтобы отредактировать ACL, нажмите значок
справа от имени бакета и выберите ACL бакета.Также можно нажать на имя бакета и на открывшейся странице нажать кнопку ACL бакета.
-
В появившемся окне Редактирование ACL выдайте или отзовите необходимые разрешения.
Примечание
В консоли управления разрешения можно выдать только тем сервисным аккаунтам, которые созданы в том же каталоге, что и сам бакет. Выдать разрешения для сервисных аккаунтов, относящихся к другим каталогам, можно с помощью YC CLI (только для ACL бакета), AWS CLI, Terraform или API.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Перед настройкой ACL посмотрите описание команды CLI для редактирования бакета:
yc storage bucket update --help
Вы можете применить к бакету предопределенный 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, сервисного аккаунта или группы пользователей, получите их идентификатор. Подробнее см. в инструкциях Получение информации о пользователе и Получение идентификатора сервисного аккаунта.
-
Выполните команду:
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-full-control
,permission-write
,permission-read
. Подробнее о разрешениях см. в разделе Виды разрешений.
Чтобы настроить несколько разрешений, укажите параметр
--grants
несколько раз.Разрешения, указанные в команде, перезаписывают настройки ACL, которые уже есть у бакета, в том числе предопределенный ACL. Получить текущие разрешения можно с помощью команды
yc storage bucket get <имя_бакета> --full
.Результат:
name: my-bucket folder_id: csgeoelk7fl1******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: grants: - permission: PERMISSION_READ grant_type: GRANT_TYPE_ACCOUNT grantee_id: ajej2th5699n******** created_at: "2022-12-14T08:42:16.273717Z"
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Перед началом работы, получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
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.id
— идентификатор пользователя, сервисного аккаунта или группы пользователей. Используется с типом получателя разрешенийCanonicalUser
.uri
— идентификатор системной группы. Используется с типом получателя разрешенийGroup
. Возможные значения:http://acs.amazonaws.com/groups/global/AllUsers
— все пользователи интернета.http://acs.amazonaws.com/groups/global/AuthenticatedUsers
— все аутентифицированные пользователи Yandex Cloud.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в папку, где вы создали конфигурационный файл.
- Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Разверните облачные ресурсы.
- Если в конфигурации нет ошибок, выполните команду:
terraform apply
- Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
Чтобы редактировать ACL бакета, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API bucketPutAcl.