Список управления доступом (ACL)
ACL (Access Control List, список управления доступом) в сервисе VK Object Storage определяет, каким учетным записям или группам хранилища предоставляется доступ к бакету или объекту. У каждого бакета или объекта свой ACL, который может содержать до 100 элементов. В каждом элементе указывается получатель прав и вид разрешения, которое ему выдается. При получении запроса к бакету и объекту VK Object Storage проверяет в соответствующих ACL, есть ли у отправителя запроса нужные права.
Сервис VK Object Storage поддерживает набор стандартных ACL — заранее подготовленных списков получателей прав и назначенных им разрешений. При создании бакета VK Object Storage по умолчанию применяется стандартный ACL private. Этот ACL дает полный контроль над бакетом его владельцу и запрещает доступ остальным пользователям.
ACL объекта может назначаться:
- При загрузке в бакет нового объекта через личный кабинет вы выбираете для него один из стандартных ACL.
- При загрузке с помощью API вы можете указать ACL объекта в теле или заголовках запроса.
Если не указывать ACL, новому бакету или объекту будет назначен стандартный ACL private с максимально ограниченным доступом: при создании бакета доступ получит только владелец бакета, при добавлении объекта доступ получит только владелец объекта.
В дальнейшем ACL для бакета или объекта можно изменить. ACL бакета и объекта внутри него могут различаться.
ACL имеет вид файла конфигурации в формате XML. Получить текущий ACL бакета или объекта или изменить его можно с помощью AWS CLI или API.
Права доступа к бакетам и объектам могут быть даны следующим категориям получателей:
- Пользователь VK Cloud.
- Проект VK Cloud.
- Предварительно определенная метагруппа. Например, метагруппа
AuthenticatedUsers, которая содержит все существующие учетные записи VK Cloud. - Весь мир, включая анонимный доступ. Соответствует метагруппе
AllUsers. Любой, кто знает полный URL-адрес объекта, будет иметь к нему доступ.
В таблице приведены виды разрешений, которые VK Object Storage поддерживает в ACL. Для каждого разрешения указано, какие права оно дает и какие операции разрешает выполнять при предоставлении на бакете и на объекте.
Разрешение ACL | Предоставлено для бакета | Предоставлено для объекта |
|---|---|---|
| Получение списка объектов в бакете HeadBucket, ListMultiparts, ListObjects, ListParts | Чтение содержимого объекта и его метаданных GetObject, HeadObject |
| Создание, перезапись и удаление любого объекта в бакете AbortMultipartUpload, CompleteMultipartUpload, InitiateMultipartUpload, UploadPart, PutObject, DeleteObject | Неприменимо |
| Чтение ACL бакета GetBucketAcl | Чтение ACL объекта GetObjectAcl |
| Установка ACL для бакета PutBucketAcl | Установка ACL для объекта PutObjectAcl |
| Все права в рамках разрешений для бакета: | Все права в рамках разрешений для объекта: |
Информацию об операциях, перечисленных в таблице, можно найти в разделе с описанием VK Object Storage API.
VK Object Storage предоставляет предварительно настроенные списки управления доступом — стандартные ACL. Эти списки можно использовать в API-запросах на доступ к бакету, объекту или к их текущим ACL.
Стандартный ACL указывается в запросе с помощью HTTP-заголовка x-amz-acl. Можно указать только один стандартный ACL. Когда VK Object Storage получает запрос, содержащий стандартный ACL, он добавляет преднастроенные разрешения в ACL соответствующего бакета или объекта( ).
Стандартный ACL | Область применения | Преднастроенные разрешения |
|---|---|---|
(по умолчанию) | Бакет и объект | Владелец имеет полные права ( |
| Бакет и объект | Владелец имеет полные права ( |
| Бакет и объект | Владелец имеет полные права ( Не рекомендуется использовать этот ACL для бакета |
| Бакет и объект | Владелец имеет полные права ( |
| Бакет и объект | Владелец имеет полные права ( |
| Объект | Владелец объекта имеет полные права ( Если указать этот стандартный ACL при создании бакета, VK Object Storage проигнорирует его |
| Объект | Владелец объекта и владелец бакета имеют полные права ( Если указать этот стандартный ACL при создании бакета, VK Object Storage проигнорирует его |