Сведения о подписанных URL-адресах

Завершено

Подписанный URL-адрес (SAS) — это подписанный универсальный код ресурса (URI), который указывает на один или несколько ресурсов хранилища и включает токен, содержащий специальный набор параметров запроса. Маркер указывает, как к ресурсам может обращаться клиент. Один из параметров запроса (подпись) состоит из параметров SAS и подписывается с помощью ключа, который использовался для создания SAS. Эта подпись используется в службе хранилища Azure для авторизации доступа к ресурсу хранилища.

Типы подписанных URL-адресов

Служба хранилища Azure поддерживает три типа подписанных URL-адресов:

  • SAS делегирования пользователей: SAS делегирования пользователей защищен учетными данными Microsoft Entra, а также разрешениями, указанными для SAS. SAS для делегирования пользователей применяется только к хранилищу BLOB-объектов.

  • SAS службы. Защищен с помощью ключа учетной записи хранения. SAS службы делегирует доступ к ресурсу в следующих службах хранилища Azure: хранилище BLOB-объектов, очередей, таблиц или файлов.

  • SAS учетной записи. Защищен с помощью ключа учетной записи хранения. SAS учетной записи делегирует доступ к ресурсам в одной или нескольких службах хранилища. Все операции, доступные через SAS для службы или делегирования пользователей, также доступны через SAS для учетной записи.

Примечание.

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

Как работают подписанные URL-адреса (SAS)

При использовании SAS для доступа к данным в службе хранилища Azure необходимо два компонента. Первый — это URI ресурса, к которому требуется получить доступ. Второй — это маркер SAS, созданный для авторизации доступа к этому ресурсу.

Код URI, такой как https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D, можно отделить от маркера SAS следующим образом:

  • УРИ:https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?
  • Маркер SAS:sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D

Сам маркер SAS состоит из нескольких компонентов.

Компонент Description
sp=r Управляет правами доступа. Возможные значения: a — добавление, c — создание, d — удаление, l — вывод списка, r — чтение, w — запись. В этом примере предоставляется доступ только для чтения. В примере sp=acdlrw предоставляются все доступные права.
st=2020-01-20T11:42:32Z Дата и время открытия доступа.
se=2020-01-20T19:42:32Z Дата и время закрытия доступа. В этом примере доступ предоставляется на 8 часов.
sv=2019-02-02 Используемая версия API хранилища.
sr=b Тип хранилища, к которому осуществляется доступ. В этом примере b означает хранилище BLOB-объектов.
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D Криптографическая подпись.

Рекомендации

Чтобы снизить потенциальные риски при использовании SAS, Майкрософт предлагает следующие рекомендации:

  • Для безопасной передачи SAS и предотвращения атак типа "злоумышленник в середине" всегда используйте HTTPS.
  • Самые защищенные SAS — это SAS делегирования пользователя. Используйте их при всякой возможности, так как они устраняют потребность хранить ключ учетной записи хранения в коде. Для управления учетными данными необходимо использовать идентификатор Microsoft Entra. Этот вариант может быть неприемлем для конкретного решения.
  • Попробуйте задавать наименьшее полезное значение для времени окончания срока действия. Если ключ SAS окажется скомпрометированным, его можно будет использовать только в течение короткого времени.
  • Применяйте правило минимально необходимых привилегий. Предоставляйте только необходимый доступ. Например, в рассмотренном выше приложении достаточно доступа только для чтения.
  • В некоторых ситуациях SAS не является правильным решением. Если использование SAS создает неприемлемый риск, необходимо создать службу среднего уровня для управления пользователями и их доступом к хранилищу.