【问题标题】:Secure Blobs in AzureAzure 中的安全 Blob
【发布时间】:2012-03-30 16:58:42
【问题描述】:

为特定用户集保护 Windows Azure 存储中的 blob 的最佳方法是什么。例如,我在本地有一个 ASP.NET 网站(内部网),带有一个用于大文件的后端 Windows Azure blob 存储。我喜欢为每个单独的 blob 安全签名 URL 的想法,但这真的适用于将存在很长时间的 blob。 (无限?)

我需要仅针对特定用户的 Blob 细粒度安全级别(如何使用 Blob 存储轻松实现这一点)。 *注意我相信我不应该需要 ACS。如果可能,我想使用策略和签名 URL 来实现它。

第二个问题,我想我也可以用同样的方式在 CDN 中保护这些数据,有人可以确认吗?

谢谢

具有无限时间工作和 blob 权限的共享访问策略,例如读工作?

【问题讨论】:

    标签: azure


    【解决方案1】:

    如果您需要该 blob 对单个用户的可用时间超过一小时,则必须使用附加到容器的 SAS 策略。但是,由于每个容器最多可以有 5 个,因此对于许多用户来说不能很好地扩展。 SAS 保单的有效期可以以年为单位。

    这里更典型的解决方案是让用户访问您的网站或服务,然后您以您选择的任何方式对其进行身份验证。当他们真正希望下载文件时,您应该生成一个有效期较短的 1 次 SAS 签名(不是策略)。这可以很好地扩展并防止未经授权的用户稍后重新使用。您还可以从存储而不是您的网络角色中获得服务。

    当您使用 CDN 时,事情会变得更加复杂。因此,虽然您可以在 CDN 资源上使用 SAS 签名,但它们并没有真正受到尊重。也就是说,唯一的 URL 是底层资源的关键。因此,当您请求 SAS 安全 blob 时,它只会将其拉入 CDN 并使用该 URI 作为密钥提供服务。然后它将使用 CDN 缓存策略(而不是 SAS 过期)继续提供服务。这可能会导致 blob URI 设置为在 10 分钟内过期,但 CDN 将根据过期策略使用相同的 SAS 签名将该 blob 缓存数天。 CDN 将永远不会再次联系存储进行验证。因此,使用它可能不是一个好主意。此外,由于每个 CDN 资源都以 URI 为键,这也意味着每次 SAS 签名更改时,您将缓存同一文件的许多副本(运行事务和带宽费用)。长话短说,CDN 和 SAS 不能很好地混合。

    【讨论】:

    • 谢谢瑞恩,正是我想要的!
    • 这绝对不能解决问题。
    【解决方案2】:

    我无法在 CDN 方面为您提供帮助,因为我没有使用它的经验,尽管我希望它以类似的方式工作。

    在这种情况下,我会在用户尝试访问文件时生成共享访问签名。您可以在应用程序内部维护决定用户是否可以访问任何给定文件的访问规则。

    当请求该文件时,您会即时生成共享访问签名(有关详细信息,请参阅here)并将其交给用户。

    这样做的好处是文件下载不会通过您的 Web 角色进行,而是直接从 blob 存储下载给用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2022-10-21
      相关资源
      最近更新 更多