Ограничение разрешения SAS учетной записи для определенных файлов в хранилище Azure

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

Я хочу использовать хранилище BLOB-объектов Azure в хранилище файлов Azure для сохранения загруженных файлов.

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

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

Вот модель доступа (только для чтения данных):  введите описание изображения здесь

А вот образец URL-адреса SAS:

https://myaccount.blob.core.windows.net/sascontainer/sasblob.txt?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D

Но что, если пользователь поделится URL-адресом с анонимными пользователями напрямую: они могут получить доступ к файлу до истечения срока его действия или, возможно, они могут использовать URL-адрес для доступа к другим файлам (или нет?).

  • Может ли аккаунт SAS ограничить доступ к определенным файлам или папкам?
  • Могу ли я истечь на стороне сервера SAS?
  • Какое было бы лучшее решение в этом сценарии?

person Amir Pournasserian    schedule 10.09.2016    source источник


Ответы (2)


  1. Учетная запись SAS предназначена для уровня учетной записи, хранилище файлов Azure поддерживает SAS на уровне файлового ресурса или SAS на уровне файлов, используйте их вместо них.
  2. Чтобы отозвать SAS на стороне сервера, вам необходимо настроить для них политику общего доступа. Удалив соответствующую политику общего доступа, можно отозвать соответствующий SAS. Однако сервер может хранить не более 5 политик общего доступа, что может не соответствовать вашим требованиям. Более того, политика общего доступа в настоящее время не поддерживает SAS учетной записи. В любом случае технически существует еще один способ отменить специальный SAS, но я не думаю, что это допустимый вариант: повторно сгенерировать соответствующий ключ учетной записи хранения в SAS Provider Service, который использовался для создания специального SAS.
  3. На мой взгляд, SAS - не лучшее решение для вашего сценария, поскольку SAS предназначен для обмена ссылками в виде простого текста между анонимными пользователями. Чтобы выполнить ваше требование, вам необходимо настроить собственную аутентификацию и авторизацию на своем веб-сайте. Все пользователи должны загружать / скачивать файлы через ваш веб-сайт, а служба хранилища Azure - это всего лишь серверная часть хранилища вашего веб-сайта, которая не должна быть доступна пользователям напрямую.
person Zhaoxing Lu    schedule 11.09.2016
comment
Поддерживается ли SAS только для определенной папки в хранилище файлов Azure (а не для других папок)? - person ddunn801; 22.01.2018
comment
@ ddunn801 Вы можете получить SAS только на уровне файлового ресурса, получение SAS на уровне файлового каталога невозможно. - person Zhaoxing Lu; 22.01.2018

Мы можем использовать SAS для установки прав доступа к файлу, использовать политику SAS для установки начальных данных и даты истечения срока действия. Однако, если у вас очень сложная логика в отношении файла. Я бы посоветовал вам использовать для этого разрешение роли.

person Jambor - MSFT    schedule 12.09.2016