Списки управления доступом (ACL) в S3 VMware
Объектное хранилище S3 позволяет управлять доступом к бакетам и объектам с помощью списков контроля доступа ACL (Access control list). ACL определяет, каким учетным записям или группам хранилища предоставляется доступ к ресурсам, а также тип этого доступа. При получении запроса к ресурсу объектное хранилище S3 проверяет соответствующий ACL, чтобы убедиться, что запрашивающая сторона имеет необходимые разрешения.
Для каждого нового объекта или бакета в хранилище создается пустой ACL. По умолчанию создаваемый бакет и объект максимально ограничены в доступе — только владелец бакета / объекта может иметь доступ к нему и работать с ним. ACL позволяет изменить это поведение.
Управлять ACL может только пользователь с соответствующими правами (например, владелец бакета). Загрузить ACL и получить список существующих ACL можно только через S3 API.
Виды разрешений ACL
В таблице ниже перечислены все доступные ACL с указанием уровней доступа к объекту или бакету.
Разрешение |
Как влияет на бакет |
Как влияет на объект |
---|---|---|
READ |
Разрешение на чтение всех объектов в бакете |
Разрешение на чтение объектов и его метаданных |
WRITE |
Разрешение создавать новые объекты в бакете Владельцу бакета и объекта разрешает удаление или перезапись этих объектов. |
Не применимо |
READ_ACP |
Разрешение на чтение ACL бакета |
Разрешение на чтение ACL объекта |
WRITE_ACP |
Разрешение на запись ACL для бакета |
Разрешение на запись ACL для объекта |
FULL_CONTROL |
Разрешения READ, WRITE, READ_ACP и WRITE_ACP для бакета |
Разрешения READ, READ_ACP и WRITE_ACP для объекта |
Если в ACL указать доступ WRITE, но при этом не указать READ, то хранилище ответит с кодом 501 Not Implemented.
Пример ACL
В этом примере ACL для бакета определяет владельца ресурса и набор разрешений:
<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="https://s3pd01.sbercloud.ru/<название бакета>"><Owner><ID>access-key-name</ID><DisplayName></DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="Canonical User"><ID>access-key-name</ID><DisplayName></DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
Элемент |
Описание |
---|---|
AccessControlPolicy |
Корневой элемент |
Owner |
Владелец бакета |
ID |
Учетная запись владельца бакета (Access Key) |
AccessControlList |
Список управления доступом |
Grant |
Определяет идентификатор пользователя для предоставления разрешения |
Grantee |
Пользователь или группа для которой выдается доступ |
Permission |
Тип доступа для пользователя |
Базовый ACL, показанный выше, имеет один элемент <Grant>. Чтобы описать несколько получателей, для каждого надо добавить свой элемент <Grant>. ACL может содержать не более 100 разрешений.
Стандартные списки ACL
Хранилище S3 поддерживает набор предопределенных разрешений, известных как стандартные списки ACL. Каждый такой ACL имеет предопределенный набор получателей и разрешений.
Предопределенные ACL могут применяться как к объектам, так и к бакетам. В следующей таблице перечислены стандартные списки ACL и связанные с ними предопределенные разрешения.
ACL |
Описание |
---|---|
private |
Владелец получает FULL_CONTROL. Больше ни у кого нет прав доступа (по умолчанию). |
full-control |
И владелец объекта, и владелец бакета получают FULL_CONTROL над объектом. |
public-read |
Системная группа AllUsers получает разрешение READ |
public-read-write |
Системная группа AllUsers получает разрешения READ и WRITE |
authenticated-read |
Системная группа AuthenticatedUsers получает разрешение READ |
Загрузить предопределенный ACL можно только через S3 API. При загрузке ACL используется HTTP-заголовок X-Amz-Acl.
В запросе можно указать только один из этих готовых списков ACL, например:
**PUT /?acl HTTP/1.1**Authorization: authorization stringConnection: closeDate: Mon, 21 Nov 2022 09:00:17 GMTHost: https://s3pd01/mynamespace/mybucket/X-amz-content-sha256: UNSIGNED-PAYLOADX-amz-acl: public-read
- Виды разрешений ACL
- Пример ACL
- Стандартные списки ACL