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

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

当为 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 参数注意事项共享访问签名参数

内容分发网络 SAS 设置的屏幕截图。

选项 1:使用从 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 内容分发网络缓存行为

选项 2:通过重写规则使用 内容分发网络安全令牌身份验证

若要使用 Azure 内容分发网络安全令牌身份验证,必须具有一个来自 Edgio 的 Azure CDN Premium 配置文件。 此选项最为安全且可进行自定义。 客户端访问基于安全令牌上设置的安全参数。 创建并设置安全令牌以后,所有 内容分发网络终结点 URL 上都需要该令牌。 不过,由于 URL 重写规则的缘故,内容分发网络终结点上不需要 SAS 令牌。 如果 SAS 令牌稍后变为无效,Azure 内容分发网络将无法通过源服务器来重新验证内容。

  1. 创建 Azure 内容分发网络安全令牌并使用内容分发网络终结点的规则引擎和用户可访问文件的路径来激活它。

    安全令牌终结点 URL 采用以下格式:

    https://<endpoint hostname>.azureedge.net/<container>/<file>?<security_token>

    例如:

    https://sasstoragedemo.azureedge.net/container1/demo.jpg?a4fbc3710fd3449a7c99986bkquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D

    安全令牌身份验证的参数选项不同于 SAS 令牌的参数选项。 如果在创建安全令牌时选择使用到期时间,则应将它设置为与 SAS 令牌的到期时间相同的值。 这样可确保到期时间是可预测的。

  2. 使用规则引擎创建 URL 重写规则以启用对容器中所有 blob 的 SAS 令牌访问。 新规则需要 4 小时来传播。

    以下示例 URL 重写规则使用包含捕获组和名为 sasstoragedemo 的终结点的正则表达式模式:

    源:

    (container1/.*)

    目标:

    $1&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内容分发网络 URL 重写规则的屏幕截图 - 左侧。内容分发网络 URL 重写规则的屏幕截图 - 右侧。

  3. 如果续订 SAS,请确保使用新的 SAS 令牌更新 URL 重写规则。

SAS 参数注意事项

由于 SAS 参数对 Azure 内容分发网络不可见,因此,Azure 内容分发网络无法根据这些参数更改其传递行为。 定义的参数限制仅适用于 Azure 内容分发网络对源服务器发出的请求,不适用于从客户端到 Azure 内容分发网络的请求。 在设置 SAS 参数时务必要考虑到此区别。 如果需要这些高级功能并且正在使用选项 2,请对 Azure 内容分发网络安全令牌设置适当的限制。

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

后续步骤

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

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