Обзор способов управления доступом в Object Storage
В Object Storage реализовано несколько взаимосвязанных механизмов для управления доступом:
- Yandex Identity and Access Management (IAM).
- Список управления доступом (ACL).
- Политика доступа (bucket policy).
- Публичный доступ.
- Security Token Service.
- Подписанные (pre-signed) URL.
На схеме показана взаимосвязь механизмов управления доступом в Object Storage.
Алгоритм проверок:
- IAM и ACL бакета:
- Если запрос прошел проверку IAM или ACL бакета, проверяется включена ли политика доступа бакета.
- Если запрос не прошел проверки IAM и ACL бакета, проверяется включен ли публичный доступ к бакету.
- Публичный доступ:
- Если публичный доступ на выполнение действия открыт, проверяется включена ли политика доступа бакета.
- Если публичный доступ на выполнение действия закрыт, то применяется проверка доступа через ACL объекта.
- Политика доступа бакета:
- Если политика доступа включена:
- Если запрос подошел хотя бы под одно из правил
Deny
политики бакета, то применяется проверка доступа через ACL объекта. - Если запрос подошел хотя бы под одно из правил
Allow
политики бакета, проверяется осуществлен ли доступ через Security Token Service. - Если запрос не подошел ни под одно из правил политики бакета, то применяется проверка доступа через ACL объекта.
- Если запрос подошел хотя бы под одно из правил
- Если политика доступа не включена, проверяется осуществлен ли доступ через Security Token Service.
- Если политика доступа включена:
- Security Token Service:
- Если запрос осуществлен с помощью Security Token Service:
- Если запрос подошел хотя бы под одно из правил
Deny
политики для временного ключа, то применяется проверка доступа через ACL объекта. - Если запрос подошел хотя бы под одно из правил
Allow
политики для временного ключа, доступ будет разрешен. - Если запрос не подошел ни под одно из правил политики для временного ключа, то применяется проверка доступа через ACL объекта.
- Если запрос подошел хотя бы под одно из правил
- Если запрос осуществлен напрямую, доступ будет разрешен.
- Если запрос осуществлен с помощью Security Token Service:
- ACL объекта:
- Если запрос прошел проверку ACL объекта, доступ будет разрешен.
- Если запрос не прошел проверку ACL объекта, доступ будет запрещен.
Identity and Access Management
Identity and Access Management — основной способ управления доступом в Yandex Cloud с помощью назначения ролей. Позволяет базово разграничить доступы, подробнее см. Какие роли действуют в сервисе.
Получатели доступа:
- аккаунт на Яндексе;
- сервисный аккаунт;
- федеративный пользователь;
- группа пользователей;
- системная группа;
- публичная группа.
Доступ выдается на облако, каталог или бакет.
Список управления доступом (ACL)
Список управления доступом (ACL) — перечень разрешений на выполнение действий, хранящийся непосредственно в Object Storage. Позволяет базово разграничить доступы. Разрешения ACL для бакетов и объектов отличаются, подробнее см. Виды разрешений.
Примечание
Если у вас нет необходимости разграничивать доступ к конкретным объектам, рекомендуем использовать Identity and Access Management.
Получатели доступа:
- аккаунт на Яндексе;
- сервисный аккаунт;
- федеративный пользователь;
- группа пользователей (задать группу пользователей можно с помощью Yandex Cloud CLI, AWS CLI, Terraform и API, подробнее см. на страницах Редактирование ACL бакета и Редактирование ACL объекта);
- системная группа;
- публичная группа.
Доступ выдается на бакет или объект.
Политика доступа (bucket policy)
Политика доступа (bucket policy) — перечень правил, запрещающих или разрешающих действия при выполнении определенных условий. Позволяет гранулярно разграничить доступы к бакетам, объектам и группам объектов.
Получатели доступа:
- аккаунт на Яндексе;
- сервисный аккаунт;
- федеративный пользователь;
- группа пользователей (задать группу пользователей в политике можно с помощью Yandex Cloud CLI, AWS CLI, Terraform и API);
- анонимный пользователь.
Доступ выдается на бакет, объект или группу объектов.
Публичный доступ
Публичный доступ — разрешения на доступ к чтению объектов, списка объектов и настроек бакета для анонимных пользователей.
Доступ выдается на бакет.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
Security Token Service
Security Token Service — компонент сервиса Identity and Access Management для получения временных ключей доступа, совместимых с AWS S3 API.
С помощью временных ключей вы можете гранулярно разграничить доступы в бакеты для множества пользователей, используя для этого всего один сервисный аккаунт.
Подписанные (pre-signed) URL
Подписанные (pre-signed) URL — способ предоставления анонимным пользователям временного доступа к определенным действиям в Object Storage с помощью URL, содержащих в своих параметрах данные для авторизации запроса.
Доступ выдается на бакет или объект.