将 Azure CDN 与共享访问签名结合使用

2024-04-26

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

Edit我希望我们的 CDN 充当我们主数据中心的副本,因此我不希望 CDN 对象被删除,除非它们从主数据中心删除。如果我确实创建了一个 SAS 并将其放在 CDN URL 的末尾,那么如果 SAS 上的过期日期已过,但缓存持续时间尚未过期,用户是否能够返回并访问该文件?

这是我的例子:

  • 缓存持续时间:5 天
  • Azure 存储 URL:http://azstorage.blob.core.windows.net/images/img1.jpg http://azstorage.blob.core.windows.net/images/img1.jpg
  • CDN 端点:http://az507923.vo.msecnd.net/ http://az507923.vo.msecnd.net/
  • Azure 存储 SAS 参数:?st=2015-03-30T19%3A21%3A09Z&se=2015-04-01T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1p0ujzZr31ZjPaOlNoImCPcjss2GoRsOWDlpJuI%3D
  • 最终 CDN 网址:

显然,用户在 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: http://azstorage.blob.core.windows.net/images/img1.jpg http://azstorage.blob.core.windows.net/images/img1.jpg
  • CDN 端点: http://az507923.vo.msecnd.net/ http://az507923.vo.msecnd.net/
  • Azure 存储 SAS 参数: ?st=2015-09-17T19%3A21%3A09Z&se=2015-09-17T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1p0ujzZr31ZjPaOlNoImCPcjss2GoRsOWDlpJuI%3D
  • 最终 CDN 网址:

使用此方法的一些注意事项:

  • 任何拥有此 URL 的人都可以访问该文件,因此您必须有一种机制来保持此 URL 的私密性。这也意味着,如果 URL 泄露,那么任何人都可以访问该文件,因此您必须确定这是否是可接受的安全级别。
  • CDN 会使用包含 SAS 的完整 URL 来缓存对象,因此缓存对象的有效期默认为 7 天。这意味着您需要确保将 Blob 上的缓存控制标头设置为与 SAS URL 相同的持续时间,以便缓存的 CDN 对象将与 SAS URL 同时过期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Azure CDN 与共享访问签名结合使用 的相关文章

随机推荐