将Azure CDN与共享访问签名一起使用

时间:2015-03-13 18:18:55

标签: azure azure-storage-blobs shared signature azure-cdn

我尝试合并Azure来存储应用程序的大部分文件。我想将这些文件上传到私有容器和Azure中的私有blob,并将这些上载通过Azure CDN复制到所有其他节点(仍作为私有容器和blob)。然后,我希望我的应用程序向存储的blob发出请求,并在一段时间内向blob提供共享访问签名链接。但是,我希望为用户提供最近的数据中心生成的链接。每次需要blob时我都会生成SAS,但是我需要能够使用整个CDN的SAS选项。这甚至可以用于Azure,还是只能将SAS用于一个数据中心?

修改 我希望我们的CDN就像它是我们主数据中心的副本一样,所以我不希望CDN对象被删除,除非它们从主数据中心删除。如果我确实创建了SAS并将其放在CDN URL的末尾,如果SAS上的过期日期已经过去,而不是缓存持续时间,那么用户是否能够返回并访问该文件?

继承我的榜样:

显然,用户可以在2015年4月1日之前访问此网址,但如果他们在2015年4月2日回来,他们仍然可以访问吗?

另外,假设我确实将blob的缓存控制标头设置为与SAS URL同时到期,这也是在缓存持续时间之后。然后,我有一个用户在2015年4月8日回来查看相同的blob,我们会生成一个新的SAS并将其提供给用户,blob是否仍然在CDN上,或者缓存控制头是否会从CDN中删除它?

1 个答案:

答案 0 :(得分:5)

您可以将SAS URL与CDN一起使用。您需要做的就是提供附加到CDN URL的正确SAS签名。

看起来像是:

采用这种方法的一些警告:

  • 拥有此URL的任何人都可以访问该文件,因此您必须拥有一种机制来保持此URL的私密性。这也意味着如果URL泄露,那么任何人都可以访问该文件,因此您必须确定这是否是可接受的安全级别。
  • CDN将使用包括SAS在内的完整URL缓存对象,因此缓存对象对缓存持续时间有效,默认情况下为7天。这意味着您需要确保将blob上的缓存控制标头设置为与SAS URL相同的持续时间,以便缓存的CDN对象与SAS URL同时到期。