- tocdepth
2
Списки управления доступом (ACL) в S3 VMware
Объектное хранилище S3 позволяет управлять доступом к бакетам и объектам с помощью списков контроля доступа ACL (Access control list). ACL определяет, каким учетным записям или группам хранилища предоставляется доступ к ресурсам, а также тип этого доступа. При получении запроса к ресурсу объектное хранилище S3 проверяет соответствующий ACL, чтобы убедиться, что запрашивающая сторона имеет необходимые разрешения.
Для каждого нового объекта или бакета в хранилище создается пустой ACL. По умолчанию создаваемый бакет и объект максимально ограничены в доступе — только владелец бакета / объекта может иметь доступ к нему и работать с ним. ACL позволяет изменить это поведение.
Управлять ACL может только пользователь с соответствующими правами (например, владелец бакета). Загрузить ACL и получить список существующих ACL можно только через S3 API.
Виды разрешений ACL
В таблице ниже перечислены все доступные ACL с указанием уровней доступа к объекту или бакету.
Разрешение |
Как влияет на бакет |
Как влияет на объект |
---|---|---|
|
Разрешение на чтение всех объектов в бакете |
Разрешение на чтение объектов и его метаданных |
|
Разрешение создавать новые объекты в бакете Владельцу бакета и объекта разрешает удаление или перезапись этих объектов. |
Не применимо |
|
Разрешение на чтение ACL бакета |
Разрешение на чтение ACL объекта |
|
Разрешение на запись ACL для бакета |
Разрешение на запись ACL для объекта |
|
Разрешения |
Разрешения |
Примечание
Если в 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>
Элемент |
Описание |
---|---|
|
Корневой элемент |
|
Владелец бакета |
|
Учетная запись владельца бакета (Access Key) |
|
Список управления доступом |
|
Определяет идентификатор пользователя для предоставления разрешения |
|
Пользователь или группа для которой выдается доступ |
|
Тип доступа для пользователя |
Базовый ACL, показанный выше, имеет один элемент <Grant>
.
Чтобы описать несколько получателей, для каждого надо добавить свой элемент <Grant>
.
ACL может содержать не более 100 разрешений.
Стандартные списки ACL
Хранилище S3 поддерживает набор предопределенных разрешений, известных как стандартные списки ACL. Каждый такой ACL имеет предопределенный набор получателей и разрешений.
Предопределенные ACL могут применяться как к объектам, так и к бакетам. В следующей таблице перечислены стандартные списки ACL и связанные с ними предопределенные разрешения.
ACL |
Описание |
---|---|
|
Владелец получает FULL_CONTROL. Больше ни у кого нет прав доступа (по умолчанию). |
|
И владелец объекта, и владелец бакета получают FULL_CONTROL над объектом. |
|
Системная группа |
|
Системная группа |
|
Системная группа |
Загрузить предопределенный ACL можно только через S3 API.
При загрузке ACL используется HTTP-заголовок X-Amz-Acl
.
В запросе можно указать только один из этих готовых списков ACL, например:
**PUT /?acl HTTP/1.1**
Authorization: authorization string
Connection: close
Date: Mon, 21 Nov 2022 09:00:17 GMT
Host: https://s3pd01/mynamespace/mybucket/
X-amz-content-sha256: UNSIGNED-PAYLOAD
X-amz-acl: public-read
для Dev & Test