使用WebApi保护Azure存储中的文件访问

时间:2016-09-09 01:25:42

标签: azure asp.net-web-api azure-storage-blobs azure-cdn azure-storage-files

我开发了一个应用程序,用户可以上传文件并相互共享。这些文件是每个用户的一些私人文件和个人资料图片等公共文件。我将文件存储在Azure文件存储中。

假设我有一个方法来检索带有id的文件:我已经在WebApi控制器的文件访问方法中实现了权限。

Azure文件存储是否适用于此方案的存储类型?

从Azure存储中检索文件的最佳方法是什么?我应该读取服务器端的文件(使用Azure .NET SDK)并将它们流式传输到客户端吗?有没有办法避免在WebApi中流式传输文件,然后客户端可以直接从Azure文件存储访问该文件(考虑到权限)?

由于

3 个答案:

答案 0 :(得分:2)

Azure File Storage的存在主要是为了允许遗留应用程序升级和转移到云端。 我建议使用Blob存储结合SAS tokens来解决您的问题。使用SAS令牌,您可以控制blob级别的访问权限。这样就可以避免在将文件转发给最终用户之前先将文件放在Web服务器上。

答案 1 :(得分:1)

Azure文件和Azure Blob存储都支持SAS和REST访问。 Azure文件支持除生活和其他方面的其他关键场景。转移。虽然有点旧,但本文(https://blogs.msdn.microsoft.com/windowsazurestorage/2014/05/12/introducing-microsoft-azure-file-service/)解释了Azure Blob与Azure文件与Azure磁盘之间的区别。您还应该考虑诸如共享的大小限制,文件夹结构,本机安装到VM的能力,最大文件/对象大小,吞吐量要求,定价,SMB / REST支持等因素。如果您仍有疑问,请发送发送电子邮件至azurefiles AT microsoft.com,我们很乐意审核您的方案并推荐适合您的使用场景的选项。

答案 2 :(得分:1)

据我所知,我们可以使用Azure blob存储来存储您的文件。 Azure blob存储容器提供三种访问级别:完全公共读取访问权限,仅限blob的公共读取访问权限,无公共读取访问权限。有关详细信息,请参阅this article。对于您的方案,请将“私有文件”保存在“无公共读取访问权限”中,并将公共文件保存在“仅对blob进行公共读取访问”中。这样用户就无法访问您的私人文件,但可以读取您的公共文件。如果您想将私人文件分享给其他人,请尝试使用SAS作为LoekD提及。如果要在服务器端过期SAS令牌。请尝试使用SAS策略执行此操作。阅读this article了解更多详情。