Список управления доступом (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

Предоставлено для бакета

Предоставлено для объекта

READ

Получение списка объектов в бакете

HeadBucket, ListMultiparts, ListObjects, ListParts

Чтение содержимого объекта и его метаданных

GetObject, HeadObject

WRITE

Создание, перезапись и удаление любого объекта в бакете

AbortMultipartUpload, CompleteMultipartUpload, InitiateMultipartUpload, UploadPart, PutObject, DeleteObject

Неприменимо

READ_ACP

Чтение ACL бакета

GetBucketAcl

Чтение ACL объекта

GetObjectAcl

WRITE_ACP

Установка ACL для бакета

PutBucketAcl

Установка ACL для объекта

PutObjectAcl

FULL_CONTROL

Все права в рамках разрешений для бакета: READ, WRITE, READ_ACP и WRITE_ACP

Все права в рамках разрешений для объекта: READ, READ_ACP и WRITE_ACP

Информацию об операциях, перечисленных в таблице, можно найти в разделе с описанием VK Object Storage API.

Стандартные ACL

VK Object Storage предоставляет предварительно настроенные списки управления доступом — стандартные ACL. Эти списки можно использовать в API-запросах на доступ к бакету, объекту или к их текущим ACL.

Стандартный ACL указывается в запросе с помощью HTTP-заголовка x-amz-acl. Можно указать только один стандартный ACL. Когда VK Object Storage получает запрос, содержащий стандартный ACL, он добавляет преднастроенные разрешения в ACL соответствующего бакета или объекта( ).

Стандартный ACL

Область применения

Преднастроенные разрешения

private

(по умолчанию)

Бакет и объект

Владелец имеет полные права (FULL_CONTROL). Остальные пользователи не имеют прав доступа

public-read

Бакет и объект

Владелец имеет полные права (FULL_CONTROL). Метагруппа AllUsers имеет доступ на чтение (READ)

public-read-write

Бакет и объект

Владелец имеет полные права (FULL_CONTROL). Метагруппа AllUsers имеет права на чтение (READ) и запись (WRITE).

Не рекомендуется использовать этот ACL для бакета

aws-exec-read

Бакет и объект

Владелец имеет полные права (FULL_CONTROL)

authenticated-read

Бакет и объект

Владелец имеет полные права (FULL_CONTROL). Метагруппа AuthenticatedUsers имеет права на чтение (READ)

bucket-owner-read

Объект

Владелец объекта имеет полные права (FULL_CONTROL). Владелец бакета имеет права на чтение (READ).

Если указать этот стандартный ACL при создании бакета, VK Object Storage проигнорирует его

bucket-owner-full-control

Объект

Владелец объекта и владелец бакета имеют полные права (FULL_CONTROL) на объект.

Если указать этот стандартный ACL при создании бакета, VK Object Storage проигнорирует его