将帐户 SAS 权限限制为 Azure 存储中的特定文件
Limiting account SAS permission to specific files in Azure Storage
我正在开发一个网络应用程序,用户可以上传他们的文件,每个用户都可以为上传的文件设置权限以访问其他用户。
我想使用Azure File Storage的Azure Blob Storage来保存上传的文件。
我需要在保存之前检查并验证上传的文件,尽管用户应该将他们的文件上传到网络服务器,然后网络服务器将验证文件并使用访问密钥将它们保存到 Azure 存储。
要使用 SAS - Shared Access Signatures, Part 1: Understanding the SAS model 中解释的方法访问文件,我想创建帐户 SAS 并在 Web 服务器上生成 URL,然后用户可以直接从 Azure 存储下载他们的可访问文件.
访问模型如下(只读数据):
这是示例 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 服务器端过期吗?
- 这种情况下的最佳解决方案是什么?
- Account SAS 用于帐户级别,Azure 文件存储也支持文件共享级别 SAS 或文件级别 SAS,请改用它们。
- 要在服务器端撤销 SAS,您需要为它们设置共享访问策略。通过删除相应的共享访问策略,可以撤销相关的 SAS。但是,服务器最多只能存储 5 个共享访问策略,这可能无法满足您的要求。此外,Shared Access Policy 目前不支持 Account SAS。无论如何,从技术上讲,仍然有一种方法可以撤销临时 SAS,但我认为这不是一个有效的选择:在用于生成临时 SAS 的 SAS Provider Service 上重新生成相应的存储帐户密钥。
- 在我看来,SAS 不是适合您的情况的解决方案,因为 SAS 设计用于在匿名用户之间共享纯文本链接。为了达到您的要求,您需要在您的网站上设置您自己的身份验证和授权。所有用户都必须通过您的网站 upload/download 文件,而 Azure 存储只是您网站的存储后端,不应直接向用户公开。
我们可以使用SAS设置文件权限,使用SAS策略设置起始数据和过期日期。但是,如果您对文件有非常复杂的逻辑。我建议您使用角色权限来执行此操作。
我正在开发一个网络应用程序,用户可以上传他们的文件,每个用户都可以为上传的文件设置权限以访问其他用户。
我想使用Azure File Storage的Azure Blob Storage来保存上传的文件。
我需要在保存之前检查并验证上传的文件,尽管用户应该将他们的文件上传到网络服务器,然后网络服务器将验证文件并使用访问密钥将它们保存到 Azure 存储。
要使用 SAS - Shared Access Signatures, Part 1: Understanding the SAS model 中解释的方法访问文件,我想创建帐户 SAS 并在 Web 服务器上生成 URL,然后用户可以直接从 Azure 存储下载他们的可访问文件.
访问模型如下(只读数据):
这是示例 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 服务器端过期吗?
- 这种情况下的最佳解决方案是什么?
- Account SAS 用于帐户级别,Azure 文件存储也支持文件共享级别 SAS 或文件级别 SAS,请改用它们。
- 要在服务器端撤销 SAS,您需要为它们设置共享访问策略。通过删除相应的共享访问策略,可以撤销相关的 SAS。但是,服务器最多只能存储 5 个共享访问策略,这可能无法满足您的要求。此外,Shared Access Policy 目前不支持 Account SAS。无论如何,从技术上讲,仍然有一种方法可以撤销临时 SAS,但我认为这不是一个有效的选择:在用于生成临时 SAS 的 SAS Provider Service 上重新生成相应的存储帐户密钥。
- 在我看来,SAS 不是适合您的情况的解决方案,因为 SAS 设计用于在匿名用户之间共享纯文本链接。为了达到您的要求,您需要在您的网站上设置您自己的身份验证和授权。所有用户都必须通过您的网站 upload/download 文件,而 Azure 存储只是您网站的存储后端,不应直接向用户公开。
我们可以使用SAS设置文件权限,使用SAS策略设置起始数据和过期日期。但是,如果您对文件有非常复杂的逻辑。我建议您使用角色权限来执行此操作。