Защита доступа к файлам в хранилище Azure с помощью WebApi

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

Предположим, у меня есть метод для получения файла с его идентификатором: я реализовал разрешения в методах доступа к файлам в контроллерах WebApi.

Является ли хранилище файлов Azure подходящим типом хранилища для этого сценария?

Как лучше всего получить файлы из хранилища Azure? Должен ли я читать файлы на стороне сервера (с помощью Azure .NET SDK) и передавать их клиентам? Есть ли способ избежать потоковой передачи файла в WebApi, тогда клиенты смогут получить доступ к файлу непосредственно из хранилища файлов Azure (с учетом разрешения)?

Спасибо


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


Ответы (3)


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

person LoekD    schedule 09.09.2016

Доступ по SAS и REST поддерживается как в службе файлов Azure, так и в хранилище BLOB-объектов Azure. Файлы Azure поддерживают другие ключевые сценарии, помимо жизни и смены. Эта статья хоть и устарела, но (https://blogs.msdn.microsoft.com/windowsazurestorage/2014/05/12/introduction-microsoft-azure-file-service/) объясняет разницу между BLOB-объектами Azure, файлами Azure и дисками Azure. Вы также должны учитывать такие факторы, как ограничение размера для вашего общего ресурса, структура папок, возможность естественного подключения к виртуальной машине, максимальный размер файла/объекта, требования к пропускной способности, цены, поддержка SMB/REST и т. д. Если у вас все еще есть вопросы, отправьте отправьте электронное письмо по адресу azurefiles AT microsoft.com, и мы будем рады рассмотреть ваш сценарий и порекомендовать вариант, подходящий для вашего сценария использования.

Аунг

person Aung Oo - MSFT    schedule 10.09.2016

Насколько я знаю, мы можем использовать хранилище BLOB-объектов Azure для хранения ваших файлов. Контейнеры хранилища BLOB-объектов Azure предоставляют три уровня доступа: полный общедоступный доступ для чтения, общедоступный доступ для чтения только для больших двоичных объектов, без общедоступного доступа для чтения. Дополнительные сведения см. в этой статье. подробности. Для вашего сценария сохраните личные файлы в режиме «без общего доступа для чтения» и сохраните общедоступный файл в режиме «общедоступный доступ для чтения только для больших двоичных объектов». Чтобы пользователь не мог получить доступ к вашим личным файлам, но мог читать ваши общедоступные файлы. Если вы хотите поделиться личными файлами с другими, попробуйте SAS, как упоминал LoekD. Если вы хотите, чтобы токен SAS истек на стороне сервера. Попробуйте использовать для этого политику SAS. Прочтите эту статью для более подробной информации.

person Jambor - MSFT    schedule 12.09.2016