Управление доступом

Чтобы данные в Object Storage были надежно защищены, разграничьте доступ к ресурсам хранилища. Рядовые пользователи будут просматривать содержимое бакета, создатели бакетов — скачивать и загружать объекты, а администратор проекта — настраивать хранилище.

В Object Storage используются три механизма контроля доступа: роли пользователей, ACL и Bucket Policy.

Роли содержат наборы разрешений, которые описывают допустимые для пользователей операции. Роль пользователя может разрешать действия как отдельного сервиса, так и всех сервисов платформы.

ACL (Access Control List) разрешает действия с бакетами и объектами на основе списка, в котором перечислены пользователи и их уровни доступа. ACL создается для каждого объекта и бакета и хранится в самом Object Storage.

Bucket Policy проверяет, соответствует ли операция настроенной политике доступа. С помощью политики можно указать дополнительные правила взаимодействия с ресурсами хранилища. Например, запретить или разрешить доступ к бакету для конкретных IP-адресов.

Как работает контроль доступа

Когда запрос поступает в систему, механизмы контроля доступа проверяют разрешения по определенному алгоритму.

../_images/security_schm.svg

Проверки выполняются в следующем порядке:

  1. Система проверяет, есть ли в HTTP-заголовке подпись. Если в заголовке запроса:

    • есть подпись — выполняется проверка роли пользователя в проекте;

    • нет подписи — выполняется проверка Bucket Policy.

  2. Система проверяет, есть ли у пользователя из запроса роль, которая позволит выполнить действие с ресурсом. Если роль:

    • позволяет выполнить действие — проверяется наличие Bucket Policy для ресурса;

    • имеет полные права на ресурс — разрешает доступ;

    • не назначена или не позволяет выполнить действие — запрещает доступ.

  3. Система проверяет, есть ли правила Bucket Policy для ресурса из запроса. Если:

    • правило есть и запрос попадает под правило Allow — разрешает доступ;

    • правило есть и запрос попадает под правило Deny — запрещает доступ;

    Если в системе нет ни одной политики или запрос не подходит ни к одному правилу — выполняется проверка ACL;

  4. Система сверяет данные в запросе со списком ACL. Если в списке:

    • есть разрешение — разрешает доступ;

    • нет разрешений — запрещает доступ.

Что и когда использовать

Выбор настройки доступа зависит от сложности проекта и объема хранилища.

Роли подойдут для несложных сценариев и небольшого хранилища, когда достаточно разрешить или ограничить доступ к ресурсам в соответствии с набором прав. Управлять ролями можно прямо в интерфейсе сервиса, тогда как настройки ACL и Bucket Policy передаются с помощью API.

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

Bucket Policy лучше использовать, когда объектов в хранилище очень много и важно точно указать, при каких условиях разрешать действия с ресурсами. С помощью политик вы можете разрешить скачивать объекты только с конкретного пула IP-адресов или запретить ряд операций с конкретным объектом в бакете.

Запустили Evolution free tier
для Dev & Test
Получить