Список управления доступом (ACL)

В Облаке используются два независимых друг от друга механизма управления доступами к ресурсам Object Storage:

  • Identity and Access Management.
  • ACL Object Storage — список разрешений для каждого объекта и бакета, хранящийся непосредственно в Object Storage.

При получении запроса к бакету или объекту Object Storage проверяет доступы с помощью обоих механизмов. Если необходимый доступ открыт хотя бы одним из способов, Object Storage выполняет запрос. Разрешения, выданные на бакет, распространяются на все находящиеся в нем объекты. ACL позволяет расширить доступы к отдельному объекту.

По умолчанию для каждого нового объекта или бакета Object Storage создает пустой ACL. Пользователь, обладающий соответствующими правами, может отредактировать или загрузить ACL для бакетов и объектов Object Storage.

С помощью ACL можно выдать разрешения пользователю Яндекс.Облака, сервисному аккаунту и системной группе, при этом необходимо знать идентификатор получателя разрешений. При выдаче разрешений вы можете использовать предопределенные ACL, которые содержат популярные наборы доступов.

Описание структуры ACL смотрите в разделе XML-схема ACL. В одном ACL вы можете задать не более 100 правил.

Примечание

ACL, загруженный для объектов, применяется мгновенно. ACL, загруженный для бакетов, и доступы, измененные в IAM, применяются с задержкой. Подробнее про задержки читайте в документации IAM.

Идентификатор получателя разрешений

  • Пользователь Яндекс.Облака

    Идентификатор можно получить:

  • Сервисный аккаунт

    Для получения идентификатора перейдите в раздел Сервисные аккаунты консоли управления.

  • Системная группа

    Для выдачи разрешений используйте URI системной группы.

Операции с ACL

  • В консоли управления вы можете редактировать ACL для бакетов и объектов.

  • С помощью API, совместимого с Amazon S3, вы можете загрузить или скачать ACL для бакета или объекта.

    Удалить ACL невозможно. Чтобы удалить все разрешения, загрузите пустой ACL.

Виды разрешений

Разрешения соответствуют ролям пользователей в Identity and Access Management.

Название разрешения Роль в IAM Описание
READ viewer Для бакета: разрешение на получение списка объектов в бакете, чтение различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтение всех объектов в бакете.

Для объекта: разрешение на чтение.
WRITE editor Для бакета: запись объектов в бакет.
Используется обязательно вместе с READ, отдельно указать разрешение WRITE нельзя.

Для объекта: разрешение не имеет смысла, при записи объекта проверяются разрешения для бакета.
FULL_CONTROL admin Полный доступ к объектам и бакетам.
READ_ACP viewer Разрешение на чтение ACL. Только для объектов.
WRITE_ACP editor Разрешение на запись ACL. Только для объектов.

Примечание

Если при оформлении ACL указать доступ WRITE, но при этом не указать READ, то Object Storage ответит с кодом 501 Not Implemented.

Предопределенные ACL

ACL Описание
private
bucket-owner-full-control
Пользователи Яндекс.Облака получают разрешения в соответствии со своими ролями в IAM.
public-read Системная группа AllUsers получает разрешение READ.
public-read-write Системная группа AllUsers получает разрешения READ и WRITE.
authenticated-read Системная группа AuthenticatedUsers получает разрешение READ.

Предопределенные ACL могут применяться как к объектам, так и к бакетам. ACL public-read-write, примененный к объекту, эквивалентен public-read.

Загрузить предопределенный ACL можно только с помощью HTTP API, совместимого с Amazon S3. При загрузке ACL используйте HTTP-заголовок x-amz-acl.

Системные группы

AllUsers

Включает в себя всех пользователей интернета.

Разрешение для AllUsers выглядит следующим образом:

<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
    <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
</Grantee>

AuthenticatedUsers

Включает в себя всех пользователей Яндекс.Облака.

Разрешение для AuthenticatedUsers выглядит следующим образом:

<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
    <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI>
</Grantee>