使用具有共享访问签名的Azure CDN

使用具有共享访问签名的Azure CDN,azure,azure-storage-blobs,shared,signature,azure-cdn,Azure,Azure Storage Blobs,Shared,Signature,Azure Cdn,我正在尝试合并Azure来存储我的大部分文件以用于应用程序。我想将这些文件上载到azure中的私有容器和私有blob,并通过azure CDN将这些上载复制到所有其他节点(仍然作为私有容器和blob)。然后,我希望我的应用程序向存储的blob发出请求,并在一段时间内为我提供指向该blob的共享访问签名链接。但是,我希望为离用户最近的数据中心提供生成的链接。我将在每次需要blob时生成SAS,但我需要能够跨CDN使用SAS选项。Azure是否可以实现这一点,或者我只能在一个数据中心中使用SAS 编

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

编辑 我希望我们的CDN能够像我们的主数据中心一样工作,因此我不希望CDN对象被删除,除非它们从主数据中心删除。如果我确实创建了一个SAS并将其扔到CDN URL的末尾,如果SAS上的过期日期已经过了,而不是缓存持续时间,用户是否能够返回并访问该文件

以下是我的例子:

  • 缓存持续时间:5天
  • Azure存储URL:
  • CDN端点:
  • Azure存储SAS参数:?st=2015-03-30T19%3A21%3A09Z&se=2015-04-01T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1P0UJZR31ZJPAOLNOICPCJS2GORSOWDLPJUI%3D
  • 最终CDN URL:
显然,用户可以在2015年4月1日之前访问此URL,但如果他们在2015年4月2日回来,他们还会访问吗


另外,假设我将blob的缓存控制头设置为与SAS URL同时过期,也在缓存持续时间之后。然后,我让一个用户在2015年4月8日返回该blob,我们将生成一个新的SAS并将其提供给用户,blob是否仍在CDN上,或者缓存控制头是否将其从CDN中删除?

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

它看起来像:

  • Azure存储URL
  • CDN端点
  • Azure存储SAS参数:?st=2015-09-17T19%3A21%3A09Z&se=2015-09-17T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1P0UJZZR31ZJPAOLNOICPCJS2GORSWDLPJUI%3D
  • 最终CDN URL
此方法的一些注意事项:

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

有关更多信息/说明,请参阅我的原始帖子。