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

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

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

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

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

Чтобы выдать разрешение для пользователя Облака, необходимо знать идентификатор аккаунта. Идентификатор можно получить следующими способами:

Чтобы выдать разрешение для сервисного аккаунта необходимо получить его идентификатор в разделе Сервисные аккаунты Консоли Управления.

Чтобы выдать разрешение для системной группы, необходимо знать ее URI. Подробнее смотрите в разделе Системные группы.

Object Storage поддерживает предопределенные ACL, которые содержат популярные наборы доступов.

Структуру ACL смотрите в разделе XML-схема ACL.

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

Примечание

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

Проверка разрешений

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

  • Identity and Access Management
  • ACL

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

Разрешения, выданные на бакет, распространяются на все находящиеся в нем объекты. Можно расширить доступы пользователей к отдельному объекту, указав их в 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.

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

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>