Создание подписанных URL-адресов
Подписанный URL-адрес (SAS) — это универсальный идентификатор ресурса (URI), который предоставляет доступ к ресурсам службы хранилища Azure с ограниченным доступом. SAS — это безопасный способ предоставления общего доступа к ресурсам хранилища без опасности для ключей учетной записи.
Вы можете предоставлять подписанные URL-адреса (SAS) клиентам, у которых не должно быть доступа к ключу вашей учетной записи хранения. Распространяя URI SAS среди этих клиентов, вы предоставляете им доступ к ресурсу в течение определенного периода времени. Типичным сценарием использования SAS является служба, где пользователи считывают и записывают свои данные в вашей учетной записи хранения.
SAS для делегирования пользователя защищается с помощью учетных данных Microsoft Entra, а также разрешений, установленных для SAS. SAS делегирования пользователей поддерживается для хранилища BLOB-объектов и Data Lake Storage.
SAS уровня учетной записи, разрешающий доступ ко всему, что SAS уровня обслуживания может разрешать, и другим ресурсам и возможностям. Например, SAS уровня учетной записи можно использовать, чтобы разрешить создание файловых систем.
SAS на уровне сервиса, чтобы предоставить доступ к определенным ресурсам в учетной записи хранения. Этот тип SAS можно использовать, например, чтобы разрешить приложению получить список файлов в файловой системе или скачать файл.
Хранимая политика доступа может обеспечить другой уровень управления при использовании SAS уровня обслуживания на стороне сервера. Вы можете группировать SAS и предоставлять другие ограничения с помощью хранимой политики доступа.
Рекомендации по управлению рисками
Рассмотрим некоторые рекомендации, которые помогут снизить риски при работе с SAS.
| Рекомендация | Описание |
|---|---|
| Всегда используйте HTTPS для создания и распространения | Если SAS передается по протоколу HTTP и перехватывается, злоумышленник может перехватывать и использовать SAS. Эти атаки злоумышленника в середине могут скомпрометировать конфиденциальные данные или разрешить повреждение данных злоумышленником. |
| Ссылка на хранимые политики доступа по возможности | Хранимые политики доступа предоставляют возможность отзыва разрешений без повторного создания ключей учетной записи хранения Azure. Задайте дату окончания срока действия ключа учетной записи хранения в будущем. |
| Установка ближайшего срока действия для незапланированного SAS | Если SAS скомпрометирован, вы можете устранить атаки, ограничив срок действия SAS коротким временем. Это важно в случаях, когда нельзя ссылаться на хранимую политику доступа. Небольшой срок также позволяет ограничить объем данных, который может быть записан в большой двоичный объект, путем ограничения времени на отправку этих данных. |
| Требовать автоматическое продление SAS клиентами | Требуется, чтобы клиенты обновляли SAS до истечения срока действия. При продлении до начала вы можете разрешить время повторных попыток, если служба, предоставляющая SAS, недоступна. |
| Тщательно планируйте время начала SAS | Если задать время начала для SAS сейчас, то из-за отклонений часов (различия в текущем времени в соответствии с разными компьютерами) могут наблюдаться периодические сбои в течение первых нескольких минут. Как правило, задайте время начала не менее 15 минут в прошлом. Или не устанавливайте определенное время начала, что приводит к тому, что SAS будет действительным немедленно во всех случаях. Те же условия обычно применяются к времени истечения срока действия. По любому запросу можно наблюдать до 15 минут часов. Для клиентов, использующих версию REST API ранее 2012-02-12, максимальная длительность SAS, которая не ссылается на хранимую политику доступа, составляет 1 час. Любые политики, указывающие длительный сбой. |
| Определение минимальных разрешений доступа для ресурсов | Из соображений безопасности рекомендуется предоставить пользователю минимально необходимый набор прав. Если пользователю требуется только доступ для чтения к отдельной сущности, предоставьте доступ на чтение к этой сущности, а не доступ на чтение, запись и удаление для всех сущностей. Эта практика также помогает уменьшить ущерб, если SAS скомпрометирован, так как SAS имеет меньше мощности в руках злоумышленника. |
| Проверка данных, записанных с помощью SAS | Когда клиентское приложение записывает данные в учетную запись хранения Azure, учтите, что с данными могут возникнуть проблемы. Если приложению требуются проверенные или авторизованные данные, проверьте данные после записи, но прежде чем использовать. Такой подход также обеспечивает защиту от поврежденных или вредоносных данных, записываемых в вашу учетную запись как пользователем, который получил подпись правомерно, так и пользователем, использующим подпись после ее утечки. |
| Не предполагайте, что SAS всегда является правильным выбором | В некоторых сценариях риски, связанные с определенной операцией с учетной записью хранения Azure, перевешивают преимущества использования SAS. Для таких операций создавайте службу среднего уровня, которая записывает данные в вашу учетную запись хранения после выполнения проверки, проверки подлинности и аудита на основании бизнес-правил. Кроме того, иногда проще управлять доступом другими способами. Если вы хотите сделать все большие двоичные объекты в контейнере общедоступным для чтения, можно сделать контейнер общедоступным, а не предоставлять SAS каждому клиенту для доступа. |