Обзор способов управления доступом в Object Storage
В Object Storage реализовано несколько взаимосвязанных механизмов для управления доступом:
- Yandex Identity and Access Management (IAM).
- Список управления доступом (ACL).
- Политика доступа (bucket policy).
- Публичный доступ.
- Security Token Service.
- Подписанные (pre-signed) URL.
- Сервисные подключения VPC (Private Endpoints).
Также в Object Storage на доступ к бакетам и объектам может влиять включенное шифрование. Подробнее о работе с зашифрованными бакетами см. на странице Шифрование в Object Storage.
На схеме показана взаимосвязь механизмов управления доступом в 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.
Получатели доступа:
- аккаунт на Яндексе;
- сервисный аккаунт;
- федеративный пользователь;
- системная группа;
- публичная группа.
Доступ выдается на бакет или объект.
Политика доступа (bucket policy)
Политика доступа (bucket policy) — перечень правил, запрещающих или разрешающих действия при выполнении определенных условий. Позволяет гранулярно разграничить доступы к бакетам, объектам и группам объектов.
Получатели доступа:
- аккаунт на Яндексе;
- сервисный аккаунт;
- федеративный пользователь;
- анонимный пользователь.
Доступ выдается на бакет, объект или группу объектов.
Публичный доступ
Публичный доступ — разрешения на доступ к чтению объектов, списка объектов и настроек бакета для анонимных пользователей.
Доступ выдается на бакет.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
Security Token Service
Security Token Service — компонент сервиса Identity and Access Management для получения временных ключей доступа, совместимых с AWS S3 API.
С помощью временных ключей вы можете гранулярно разграничить доступы в бакеты для множества пользователей, используя для этого всего один сервисный аккаунт.
Подписанные (pre-signed) URL
Подписанные (pre-signed) URL — способ предоставления анонимным пользователям временного доступа к определенным действиям в Object Storage с помощью URL, содержащих в своих параметрах данные для авторизации запроса.
Доступ выдается на бакет или объект.
Сервисные подключения VPC (Private Endpoints)
Важно
Функциональность Сервисные подключения (VPC Private Endpoints) находится на стадии Preview. Чтобы запросить доступ, обратитесь к вашему аккаунт-менеджеру.
Вы можете организовать прямой доступ к бакетам Object Storage из облачных сетей VPC с помощью сервисного подключения VPC. При таком подключении сервис Object Storage будет доступен по внутренним IP-адресам VPC без использования доступа в интернет.
В Object Storage есть возможность настроить бакет так, чтобы доступ в него был возможен только через сервисные подключения VPC. Предусмотрены следующие механизмы:
- Ограничение доступа в бакет на уровне политики — доступ в бакет разрешается из сервисных подключений VPC с идентификаторами, указанными в политике. Однако, согласно схеме, все еще остается возможность доступа в бакет из публичной сети, например с помощью ACL объекта или при наличии другого разрешающего правила в политике. Также при такой настройке остается возможность копирования объектов на стороне сервера (Server Side Copy) в такой бакет и из него. Подробнее см. на странице Настройте политику для доступа из сервисных подключений.
- Ограничение доступа в бакет на уровне сервиса — доступ в бакет разрешается только из сервисных подключений VPC. Нужно указать конкретные названия подключений. При этом доступ в бакет из публичной сети будет невозможен. В текущей реализации этой функциональности также будет невозможен доступ в бакет с помощью консоли управления
. Подробнее см. на странице Настройте ограничение для доступа только из сервисных подключений.
Копирование объектов на стороне сервера (Server Side Copy)
Особенности копирования объектов на стороне сервера (Server Side Copy) в бакетах с включенным доступом только из сервисных подключений VPC приведены в таблице:
Бакет-источник | Бакет-приемник | Условие для запуска копирования на стороне сервера1 |
---|---|---|
Доступ только из сервисных подключений VPC | Доступ только из сервисных подключений VPC | Запрос из сервисного подключения, которое указано в списке разрешенных для обоих бакетов |
Доступ только из сервисных подключений VPC | Доступ из публичной сети | Запрос из сервисного подключения, которое указано в списке разрешенных для бакета-источника |
Доступ из публичной сети | Доступ только из сервисных подключений VPC | Запрос из сервисного подключения, которое указано в списке разрешенных для бакета-приемника |
Доступ из публичной сети | Доступ из публичной сети | Запрос из публичной сети или из сервисного подключения |
1 При наличии у клиента прав на чтение из бакета-источника и запись в бакет-приемник.
См. также
- Настройка прав доступа к бакету с помощью Identity and Access Management
- Редактирование ACL бакета
- Редактирование ACL объекта
- Управление политикой доступа (bucket policy)
- Настройка публичного доступа к бакету
- Доступ в бакет с помощью Security Token Service
- Доступ в бакет с помощью сервисного подключения из Yandex Virtual Private Cloud