Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Object Storage
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Бакеты
      • Создание бакета
      • Удаление бакета
      • Ограничение максимального размера бакета
      • Открытие публичного доступа к бакету
      • Шифрование бакета
      • Управление жизненными циклами объектов
      • Управление конфигурацией CORS
      • Редактирование ACL бакета
      • Включение механизма логированния
    • Объекты
      • Загрузка объекта
      • Получение информации об объекте
      • Скачивание объекта
      • Получение публичной ссылки на объект
      • Удаление объекта
      • Удаление частично загруженного объекта
      • Редактирование ACL объекта
    • Хостинг статических сайтов
      • Настройка хостинга
      • Поддержка собственного домена
      • Поддержка нескольких доменных имен
      • Настройка HTTPS
  • Концепции
    • Обзор
    • Бакет
    • Объект
    • Версионирование бакета
    • Жизненные циклы объектов
    • CORS
    • Хостинг статических сайтов
    • Подписанные (pre-signed) URL
    • Составная (multipart) загрузка
    • Список управления доступом (ACL)
    • Политика доступа (Bucket Policy)
    • Загрузка файла через HTML форму
    • Класс хранилища
    • Механизм логирования действий с бакетом
    • Резервное копирование
    • Протокол TLS
    • Квоты и лимиты
  • Инструменты
    • Все инструменты
    • Консольные клиенты
      • AWS CLI
      • S3cmd
    • Файловые браузеры
      • CyberDuck
      • WinSCP
    • SDK
      • AWS SDK для Java
      • Python SDK (boto)
    • FUSE
      • s3fs
      • goofys
  • HTTP API, совместимый с Amazon S3
    • Как пользоваться API
    • Подписывание запросов
    • Справочник API
      • Все сервисы и методы
      • Bucket
        • Все методы
        • create
        • getBucketEncryption
        • getMeta
        • listObjects
        • listBuckets
        • deleteBucket
        • deleteBucketEncryption
        • putBucketEncryption
        • putBucketVersioning
        • getBucketVersioning
        • putBucketLogging
        • getBucketLogging
        • listObjectVersions
      • Object
        • Все методы
        • upload
        • get
        • copy
        • getObjectMeta
        • delete
        • deleteMultipleObjects
        • options
      • Multipart upload
        • Общий порядок составной загрузки
        • startUpload
        • uploadPart
        • copyPart
        • listParts
        • abortUpload
        • completeUpload
        • listUploads
      • Static Website Hosting
        • Все методы
        • upload
        • get
        • delete
        • Коды ответов статического сайта
      • CORS
        • Все методы
        • XML-структура конфигурации CORS
        • upload
        • get
        • delete
      • Lifecycles
        • Все методы
        • XML-структура конфигурации жизненных циклов
        • upload
        • get
        • delete
      • ACL
        • Все методы
        • XML-структура конфигурации ACL
        • objectGetAcl
        • objectPutAcl
        • bucketGetAcl
        • bucketPutAcl
      • Bucket Policy
        • Все методы
        • GetBucketPolicy
        • PutBucketPolicy
        • DeleteBucketPolicy
        • Схема данных
        • Действия
        • Условия
      • Общие заголовки запросов
      • Общие заголовки ответов
      • Ответы
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
  • Вопросы и ответы
  1. Концепции
  2. Список управления доступом (ACL)

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

  • Идентификатор получателя разрешений
  • Операции с ACL
  • Виды разрешений
  • Предопределенные ACL
  • Системные группы
    • AllUsers
    • AuthenticatedUsers
  • Наследование прав доступа на бакет системными группами Yandex.Cloud
    • Как посмотреть права на бакет, наследуемые от каталога

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

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

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

Важно

Бакет наследует такие же права доступа в сервисе IAM, как у каталога и облака, в котором он находится.

Например, если у пользователя в сервисе IAM есть роль viewer на каталог с бакетом, то он может просматривать его содержимое, даже если это не отражено в ACL бакета.

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

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

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

Примечание

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

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

  • Пользователь Yandex.Cloud

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

    • В разделе IAM консоли управления.
    • С помощью CLI или API 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
Пользователи Yandex.Cloud получают разрешения в соответствии со своими ролями в 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

Включает в себя всех аутентифицированных пользователей Yandex.Cloud: как из вашего облака, так и из облаков других пользователей.

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

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

Наследование прав доступа на бакет системными группами Yandex.Cloud

Бакет наследует такие же права доступа в сервисе IAM, как у каталога и облака, в котором он находится. Если у пользователя есть права доступа на каталог или облако, которым принадлежит бакет, то у него будут права и на сам бакет.

Важно

Назначение ролей системным группам allUsers и allAuthenticatedUsers на каталог или облако, которым принадлежит бакет, эквивалентно выдаче публичного доступа к бакету:

  • allAuthenticatedUsers — доступ к бакету получат все аутентифицированные пользователи Yandex.Cloud: как из вашего облака, так и из облаков других пользователей.
  • allUsers — доступ получат все пользователи.

Аналогичный доступ к бакету можно выдать, добавив в ACL бакета права для групп AuthenticatedUsers и AllUsers.

Как посмотреть права на бакет, наследуемые от каталога

Бакет наследует права от каталога. Если вы хотите знать, какие именно права унаследовал бакет, получите список ролей на каталог. Также вы можете в любой момент отозвать эти роли.

  • Чтобы получить список ролей на каталог, выполните команду:

    $ yc resource-manager folder list-access-bindings \
        --id b1g7gvsi89m34qmcm4ke
    

    Пример вывода команды:

    +---------+--------------+-----------------------+
    | ROLE ID | SUBJECT TYPE |      SUBJECT ID       |
    +---------+--------------+-----------------------+
    | viewer  | system       | allAuthenticatedUsers |
    | viewer  | system       | allUsers              |
    +---------+--------------+-----------------------+
    

    В выводе присутствует allAuthenticatedUsers и allUsers. Это значит, что пользователи этих групп имеют права на данный каталог и все содержащиеся в нем ресурсы, в том числе бакеты.

  • Чтобы отозвать роль у системной группы allAuthenticatedUsers выполните команду:

    $ yc resource-manager folder remove-access-binding \
        --id b1g7gvsi89m34qmcm4ke \
        --role viewer \
        --allAuthenticatedUsers
    
  • Чтобы отозвать роль у системной группы allUsers выполните команду:

    $ yc resource-manager folder remove-access-binding \
        --id b1g7gvsi89m34qmcm4ke \
        --role viewer \
        --allUsers
    
В этой статье:
  • Идентификатор получателя разрешений
  • Операции с ACL
  • Виды разрешений
  • Предопределенные ACL
  • Системные группы
  • AllUsers
  • AuthenticatedUsers
  • Наследование прав доступа на бакет системными группами Yandex.Cloud
  • Как посмотреть права на бакет, наследуемые от каталога
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»