你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Azure 内容分发网络与 SAS 配合使用

重要

Microsoft Azure CDN Standard(经典版)将于 2027 年 9 月 30 日停用。 为了避免出现服务中断,请务必在 2027 年 9 月 30 日之前将 Microsoft 的 Azure CDN 标准层(经典版)配置文件迁移到 Azure Front Door 标准层或高级层。 有关详细信息,请参阅 Microsoft Azure CDN Standard(经典版)停用

Edgio 的 Azure CDN 已于 2025 年 1 月 15 日停用。 有关详细信息,请参阅 Edgio 的 Azure CDN 停用常见问题解答

当为 Azure 内容分发网络设置存储帐户用来缓存内容时,默认情况下,知道存储容器 URL 的任何人都可访问上传的文件。 若要保护存储帐户中的文件,可将存储容器的访问权限从“公开”设置为“私有”。 但是,如果这样做,没人能访问你的文件。

如果要授予对专用存储容器的有限访问权限,可以使用 Azure 存储帐户的共享访问签名 (SAS) 功能。 SAS 是授予对 Azure 存储资源进行有限访问权限的 URI,而无需公开你的帐户密钥。 你可以为不信任向其提供存储帐户密钥,但需要向其委托某些存储帐户资源的访问权限的客户端提供 SAS。 通过向这些客户端分发共享访问签名 URI,可以授予它们在一段指定时间内对资源的访问权限。

使用 SAS 可以定义各种 blob 访问权限参数,例如开始和到期时间、权限(读/写)和 IP 范围。 本文介绍如何将 SAS 与 Azure 内容分发网络配合使用。 有关 SAS 的详细信息,包括如何创建它及其参数选项,请参阅使用共享访问签名 (SAS)

设置与存储 SAS 配合使用的 Azure 内容分发网络

对于将 SAS 与 Azure 内容分发网络一起使用,建议使用以下三个选项。 所有选项都假设已创建了一个有效的 SAS(请参阅先决条件)。

先决条件

首先创建存储帐户,然后为资产生成 SAS。 可以生成两种类型的存储访问签名:服务 SAS 或帐户 SAS。 有关详细信息,请参阅共享访问签名的类型

生成 SAS 令牌后,可将 ?sv=<SAS token> 追加到 URL,访问 blob 存储文件。 此 URL 格式如下:

https://<account name>.blob.core.windows.net/<container>/<file>?sv=<SAS token>

例如:

https://democdnstorage1.blob.core.windows.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=co&sp=r&se=2038-01-02T21:30:49Z&st=2018-01-02T13:30:49Z&spr=https&sig=QehoetQFWUEd1lhU5iOMGrHBmE727xYAbKJl5ohSiWI%3D

有关设置参数的详细信息,请参阅 SAS 参数注意事项共享访问签名参数

使用从 Azure 内容分发网络直通到 blob 存储的 SAS

此选项最为简单,并且仅使用从 Azure 内容分发网络传递到源服务器的单个 SAS 令牌。

  1. 选择一个终结点,选择“缓存规则”,然后从“查询字符串缓存”列表中选择“缓存每个唯一的 URL” 。

    内容分发网络缓存规则的屏幕截图。

  2. 在存储帐户上设置 SAS 后,若要访问文件,必须将 SAS 令牌与 内容分发网络终结点和源服务器 URL 配合使用。

    生成的 内容分发网络终结点 URL 的格式为:https://<endpoint hostname>.azureedge.net/<container>/<file>?sv=<SAS token>

    例如:

    https://demoendpoint.azureedge.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=c&sp=r&se=2027-12-19T17:35:58Z&st=2017-12-19T09:35:58Z&spr=https&sig=kquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D

  3. 使用缓存规则或在源服务器处添加 Cache-Control 标头来微调缓存持续时间。 由于 Azure 内容分发网络将 SAS 令牌视为普通查询字符串,因此,最佳做法是应该设置在 SAS 到期时或到期之前到期的缓存持续时间。 否则,如果文件的缓存持续时间长于 SAS 的有效时间,在 SAS 到期之后,则可从 Azure 内容分发网络源服务器访问此文件。 如果出现这种情况,并且你需要使缓存文件不可访问,则必须对文件执行清除操作以将其从缓存中清除。 有关对 Azure 内容分发网络设置缓存持续时间的信息,请参阅使用缓存规则控制 Azure 内容分发网络缓存行为

SAS 参数注意事项

由于 SAS 参数对 Azure 内容分发网络不可见,因此,Azure 内容分发网络无法根据这些参数更改其传递行为。 定义的参数限制仅适用于 Azure 内容分发网络对源服务器发出的请求,不适用于从客户端到 Azure 内容分发网络的请求。 在设置 SAS 参数时务必要考虑到此区别。

SAS 参数名称 说明
Start Azure 内容分发网络可以开始访问 blob 文件的时间。 由于存在时钟偏差 (当时钟信号在不同时间到达不同组件时),因此,如果希望资产立即可用,请选择一个提早 15 分钟的时间。
结束 过后 Azure 内容分发网络就无法再访问 blob 文件的时间。 之前缓存在 Azure 内容分发网络上的文件仍可访问。 若要控制文件到期时间,请在 Azure 内容分发网络安全令牌上设置适当的到期时间或清除资产。
允许的 IP 地址 可选。
允许的协议 允许为帐户 SAS 发出的请求使用的协议。 建议使用 HTTPS 设置。

后续步骤

有关 SAS 的详细信息,请参阅以下文章:

有关设置令牌身份验证的详细信息,请参阅使用令牌身份验证保护 Azure 内容分发网络资产