Ключ делегирования пользователя против ключа учетной записи - безопасность?

В документации Microsoft для ключа делегирования пользователя сказано:

Маркер SAS для доступа к контейнеру, каталогу или BLOB-объекту можно защитить с помощью учетных данных Azure AD или ключа учетной записи. SAS, защищенный учетными данными Azure AD, называется SAS делегирования пользователя. Microsoft рекомендует использовать учетные данные Azure AD, когда это возможно, в качестве наилучшей практики безопасности, а не использовать ключ учетной записи, который может быть легче скомпрометирован. Если в дизайне приложения требуются подписи общего доступа, используйте учетные данные Azure AD для создания SAS делегирования пользователей для обеспечения максимальной безопасности.

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


person Ziggy000    schedule 04.05.2021    source источник


Ответы (1)


Маркер SAS делегирования пользователя более безопасен, поскольку он не полагается только на разрешения, включенные в маркер SAS. Также учитываются разрешения RBAC пользователя, создавшего этот токен SAS. Маркер SAS, созданный с использованием общего ключа доступа, просто учитывает разрешения, включенные в маркер SAS.

Например, предположим, что пользователь, создающий SAS с делегированием пользователя, имеет только Read разрешения на контейнер больших двоичных объектов (т.е. он может только перечислять или загружать большие двоичные объекты в контейнере больших двоичных объектов). Теперь предположим, что пользователь создает маркер SAS с разрешением Write. Когда этот маркер SAS используется для отправки большого двоичного объекта, операция завершится ошибкой, поскольку у пользователя нет Write разрешений на этот контейнер больших двоичных объектов, тогда как операция загрузки завершилась бы успешно, если бы маркер SAS был создан с использованием общего ключа доступа.

Дополнительную информацию об этом можно найти на _ 4_ (выделено мной):

Когда клиент обращается к ресурсу хранилища BLOB-объектов с помощью SAS делегирования пользователя, запрос к хранилищу Azure авторизуется с учетными данными Azure AD, которые использовались для создания SAS. Разрешения на управление доступом на основе ролей (RBAC), предоставленные этой учетной записи Azure AD, вместе с разрешениями, явно предоставленными на SAS, определяют доступ клиента к ресурсу. Такой подход обеспечивает дополнительный уровень безопасности и позволяет избежать необходимости хранить ключ доступа к вашей учетной записи вместе с кодом приложения. По этим причинам создание SAS с использованием учетных данных Azure AD является лучшей практикой безопасности.

Разрешения, предоставленные клиенту, обладающему SAS, являются пересечением разрешений, предоставленных участнику безопасности, который запросил ключ делегирования пользователя, и разрешениям, предоставленным ресурсу в токене SAS с использованием поля signedPermissions (sp) . Если разрешение, предоставленное участнику безопасности через RBAC, также не предоставляется для маркера SAS, то это разрешение не предоставляется клиенту, который пытается использовать SAS для доступа к ресурсу. При создании SAS делегирования пользователей убедитесь, что разрешения, предоставленные через RBAC, и разрешения, предоставленные через маркер SAS, соответствуют уровню доступа, требуемому клиентом.

person Gaurav Mantri    schedule 04.05.2021
comment
Спасибо за подробный ответ и URL! - person Ziggy000; 04.05.2021