【问题标题】:Azure Blob Storage file level securityAzure Blob 存储文件级安全性
【发布时间】:2017-10-13 20:49:07
【问题描述】:

我有一个 Azure Blob 存储,其中包含按客户端编号分类的 pdf 格式的 Blob。因此,对于每个客户,他们都有多个 pdf 报告。我只希望客户能够访问他们的客户编号的 blob。 (有数百个客户。)

我研究过,但只看到共享访问签名,但这看起来不像我需要的。

【问题讨论】:

  • 是否需要直接提供指向存储帐户 ([storageaccount].blob.core.windows.net) 中 blob 的链接,如果没有,您可以创建一个应用程序作为代理从 blob 中检索 pdf,每个客户端都可以获得自己的唯一链接。您将能够实现任何您想要的身份验证。
  • 是的,应该提到,客户转到一个网页,其中包含指向其报告的链接列表。所以他们只需要能够点击和查看他们自己的报告。问题是我不希望他们能够猜测和更改 url 以查看另一个客户的 blob pdf。

标签: azure security azure-storage azure-blob-storage


【解决方案1】:

除了共享访问签名(和策略)之外,没有用户级别的 blob 权限。

管理对特定用户内容的访问权取决于您(以及如何管理这实际上取决于您和您的应用,以及您如何管理用户的内容元数据)。

提供指向用户内容的链接时:如果您假设所有内容始终是私有的,则只需在请求时创建按需 SAS 链接。用户无法修改 SAS 链接来猜测序列号或相邻 blob,因为 SAS 是针对特定 URL 的。

正如 Andrés 所建议的,您还可以使用您的应用来传输 blob 内容,而不必担心 SAS。但是,您现在将消耗 Web 应用程序的资源(网络、CPU、内存),这将对应用程序的规模要求产生影响。您将无法再将其卸载到存储服务。

【讨论】:

    【解决方案2】:

    听起来您已经让用户进行了身份验证,并且您知道哪些 pdf 属于他们。我的建议是向您当前的应用程序添加一个简单的代理(例如,如果您有一个 MVC 应用程序,您可以添加一个新的控制器和操作方法来代表用户检索 pdf)。

    这样您就不需要使用共享访问签名并且可以将 blob 容器保持为私有。您的控制器/操作方法只需使用存储 SDK 来检索 blob。另一个好处是,您可以检查以确保他们请求的是自己的 PDF 文件,如果他们猜到了其他人文件的 ID,则拒绝该请求。

    【讨论】:

    • 通过从应用流式传输,您将从充当此代理的任何应用消耗 CPU 和网络资源。
    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2022-10-21
    • 2018-06-15
    • 2015-01-02
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多