2012-03-14 69 views
7

什么是在特定用户集合中为Windows Azure存储中的Blob保护Blob的最佳方式。例如,我有一个ASP.NET网站(Intranet)内部部署,并具有用于大型文件的后端Windows Azure Blob存储。我喜欢为每个blob提供安全签名URL的想法,但是这对于一个长期存在的blob来说确实有效。 (无限?)Azure中的安全Blob

我只需要特定用户的blob上的粒度级别的安全性(我如何通过Blob存储轻松实现这一点)。 *注意我相信我不应该需要ACS。如果可能的话,我想用Policies和Signed URL来实现它。

第二个问题,我假设我也可以用同样的方法保护CDN中的这些数据,有人可以证实吗?

感谢

共享访问与斑点无限时间的工作和特权政策如阅读工作?

回答

18

如果您需要一个小时以上的单个用户可以使用blob,则必须使用附加到该容器的SAS策略。但是,由于每个容器最多可容纳5个容器,因此许多用户无法很好地扩展容量。 SAS政策可能会以年为单位计算到期。

这里更典型的解决方案是让用户打你的网站或服务,然后以你选择的任何方式验证它们。当他们真的希望下载文件时,您应该生成一个短期到期(不是政策)的1次SAS签名。这可以很好地扩展并防止未来的未授权用户重复使用。您还可以从存储服务中获益,而不是您的网络角色。

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

+0

谢谢瑞安,正是我在找的! – user728584 2012-03-14 18:42:27

+0

而且这绝对不能解决问题。 – 2015-07-08 09:01:13

3

我无法帮助您使用CDN,因为我没有使用这方面的经验,但我期望它能以类似的方式工作。

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

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

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

+0

谢谢大卫... – user728584 2012-03-14 18:46:14