azure - 限制帐户 SAS 权限对 Azure 存储中的特定文件

标签 azure asp.net-web-api azure-blob-storage azure-sdk-.net azure-storage-files

我正在开发一个网络应用程序,用户可以上传他们的文件,每个用户都可以设置上传文件的权限以供其他用户访问。

我想使用Azure文件存储中的Azure Blob存储来保存上传的文件。

在保存上传的文件之前,我需要检查并验证它们,尽管用户应该将文件上传到 Web 服务器上,然后 Web 服务器将验证文件并使用访问 key 将它们保存到 Azure 存储。

使用SAS - Shared Access Signatures, Part 1: Understanding the SAS model中解释的方法来访问文件,我想创建帐户 SAS 并在 Web 服务器上生成 URL,然后用户可以直接从 Azure 存储下载可访问的文件。

这是访问模型(仅读取数据): enter image description here

这是示例 SAS url:

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 服务器端过期吗?
  • 这种情况下的最佳解决方案是什么?

最佳答案

  1. 帐户 SAS 用于帐户级别,Azure 文件存储也支持文件共享级别 SAS 或文件级别 SAS,请改用它们。
  2. 要在服务器端撤销 SAS,您需要为它们设置共享访问策略。通过删除相应的共享访问策略,可以撤销相关的SAS。但是,服务器最多只能存储5个共享访问策略,这可能无法满足您的要求。此外,共享访问策略目前不支持 Account SAS。无论如何,从技术上讲,仍然有一种方法可以撤销 ad hoc SAS,但我认为这不是一个有效的选择:在 SAS Provider Service 上重新生成用于生成 ad hoc SAS 的相应存储帐户 key 。
  3. 在我看来,SAS 并不是适合您的场景的良好解决方案,因为 SAS 旨在在匿名用户之间共享纯文本链接。为了实现您的要求,您需要在您的网站上设置自己的身份验证和授权。所有用户都必须通过您的网站上传/下载文件,而Azure存储只是您网站的存储后端,不应该直接暴露给用户。

关于azure - 限制帐户 SAS 权限对 Azure 存储中的特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39431608/

相关文章:

sql-server - SQL 数据库的 Azure 用户 GRANT

azure - 哪些设置(如果有)控制逻辑应用 CRM 记录创建或更新触发器的触发?

c# - 为 prod 和 dev 指定 asp.net core 1.0 WebAPI.exe 应该在 program.cs 中使用的 url(端口)

asp.net-web-api - 请求不支持http方法 'GET'错误

Azure CDN 规则引擎重写默认文档并删除 .html 扩展名

javascript - 如何使用 @azure/storage-blob sdk 附加 blob 文件? ( Node JS)

reactjs - 如何将azure blob存储数据获取到Azure应用程序服务上托管的React应用程序中

azure - .NET Core 版本重写后将一项 Azure 应用服务的代码库切换为不同的代码库

c# - 关于 Web Api 的 Signalr Hub 约定

azure - 是否可以使用 REST API 将文件上传到 Azure 存储帐户而不传递 header ?