Облачная платформаEvolution

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


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

Настраивать доступ к ресурсам Object Storage можно с помощью ролей, Access Control List (ACL) и политики доступа (Bucket Policy).

Внимание

Используйте ACL и Bucket Policy с осторожностью: при неправильной настройке можно случайно заблокировать доступ к данным.

Роли пользователей

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

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

Подробнее об управлении ролями в Object Storage.

ACL

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

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

Подробнее об ACL.

Bucket Policy

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

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

Подробнее о Bucket Policy.

Алгоритм проверки доступа

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

Схема алгоритма приведена на рисунке ниже.

../_images/access-management_scheme.svg

Алгоритм для авторизованных запросов

Если запрос содержит подпись AWS Signature V4, проверка доступа выполняется по следующему алгоритму:

  1. Система проверяет валидность подписи:

    • Подпись не валидна — операция запрещается.

    • Подпись валидна — выполняется следующая проверка.

  2. Система проверяет, есть ли у пользователя полные права на операции с хранилищем:

    • Права есть — операция разрешается.

    • Прав нет — выполняется следующая проверка.

    Примечание

    Полным доступом обладают роли, которым разрешено действие s3e.tenant.edit:

  3. Система проверяет роль пользователя:

    • Роль не разрешает операцию или не назначена — операция запрещается.

    • Роль разрешает операцию — выполняется следующая проверка.

  4. Если в бакете установлена Bucket Policy:

    1. Система проверяет, устанавливает ли Bucket Policy прямой запрет на операцию:

      • Устанавливает — операция запрещается.

      • Не устанавливает — выполняется следующая проверка.

    2. Система проверяет, устанавливает ли Bucket Policy прямое разрешение на операцию:

      • Устанавливает — операция разрешается.

      • Не устанавливает — выполняется следующая проверка.

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

      • В списке есть разрешение — операция разрешается.

      • В списке нет разрешений — операция запрещается.

  5. Если в бакете не установлена Bucket Policy, система сверяет данные в запросе со списком ACL:

    • В списке есть разрешение — операция разрешается.

    • В списке нет разрешений — операция запрещается.

Алгоритм для анонимных запросов

Если запрос не содержит подписи AWS Signature V4, проверка доступа выполняется по следующему алгоритму:

  1. Система проверяет, является ли запрос preflight-запросом:

    • Является — операция разрешается.

    • Не является — выполняется следующая проверка.

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

    • Установлен — операция запрещается.

    • Не установлен — выполняется следующая проверка.

  3. Если в бакете установлена Bucket Policy:

    1. Система проверяет, устанавливает ли Bucket Policy прямой запрет на операцию:

      • Устанавливает — операция запрещается.

      • Не устанавливает — выполняется следующая проверка.

    2. Система проверяет, устанавливает ли Bucket Policy прямое разрешение на операцию:

      • Устанавливает — операция разрешается.

      • Не устанавливает — выполняется следующая проверка.

  4. Если в бакете не установлена Bucket Policy:

    1. Система проверяет, игнорируются ли ACL, открывающие публичный доступ к бакету:

      • Игнорируются — операция запрещается.

      • Не игнорируются — выполняется следующая проверка.

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

      • В списке есть разрешение — операция разрешается.

      • В списке нет разрешений — операция запрещается.