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



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

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

Azure文件存储是适合此场景的存储类型吗?

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

谢谢

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

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,我们将很乐意审查您的场景,并推荐适合您使用场景的选项。

Aung

据我所知,我们可以使用Azure blob存储来存储文件。Azure blob存储容器提供三种访问级别:完全公共读访问、仅针对blob的公共读访问、无公共读访问。有关更多细节,请参阅本文。对于您的场景,请将私有文件保存在"no public read access"中,并将公共文件保存在"public read access For blobs only"中。这样用户就不能访问您的私有文件,但可以读取您的公共文件。如果您想与他人共享私人文件,请尝试像LoekD提到的SAS。如果要在服务器端过期SAS令牌。请尝试使用SAS策略。阅读本文了解更多细节。

最新更新