防止未经授权的分发

本页面简要介绍了 Media CDN 提供的选项,以帮助防止未经授权分发您的内容。

媒体 CDN 支持多个签名请求选项,以帮助保护 防止其在未经授权的情况下分发。令牌是一种交换媒介 签名请求,例如签名 Cookie、包含查询参数的 URI 或路径 组件。观看者提供的有效令牌用于对其访问您内容的权限进行身份验证。系统会阻止令牌无效或缺失令牌的观看者访问您的内容。

媒体 CDN 为客户端提供以下签名请求选项 身份验证:

  • 签名:媒体 CDN 使用单个签名来帮助保护内容。

  • 令牌:媒体 CDN 使用令牌来帮助保护内容。您 可以选择使用单令牌或双令牌身份验证。

    使用双令牌身份验证时,Media CDN 会使用两个令牌(一个短时令牌和一个长时令牌)来帮助保护内容。

通过签名,您可以进行完整的网址签名,包括主机和协议。

令牌提供以下功能:

  • 与非 Google CDN 的兼容性
  • 仅路径签名
  • 可对多个标头进行签名
  • 能够嵌入任意数据和会话 ID

我们建议您在新的集成中使用令牌。双令牌必须提供令牌 身份验证。

您可以将已签名请求和双令牌身份验证请求搭配使用,以帮助保护您的内容。

签名请求的工作原理

签名请求使用签名或令牌来验证每个查看者是否 必须经过身份验证才能访问内容。您可以配置媒体 CDN,以将访问权限范围限定为以下任一项:

  • 有限时间内的确切 URI 或 URI 前缀
  • 特定客户端
  • 对于使用令牌的已签名请求,最多可使用五个包含通配符的路径

如需使用已签名请求,您需要生成密钥来签名和验证签名。然后,您可以配置路由,以便根据内容类型、客户端属性和新鲜度要求优化行为。您可以按路由强制执行已签名请求,这有助于保护特定端点。

每个媒体 CDN 服务都可以使用多个键的集合。 键集合也称为键集。通过密钥集, 轮替密钥并在您自己的基础架构中分发私钥,而无需 造成干扰。

您可以将媒体 CDN 配置为使用已签名请求或令牌来帮助保护内容。

对于使用签名的已签名请求,您可以使用以下任一格式:

  • 包含查询参数的完全匹配 URI:您可以指定包含完全匹配 URI 的 URLPrefix,并将相同的查询参数附加到多个 URI。
  • 带查询参数的 URI 前缀:您可以使用URLPrefix URI 前缀,并将相同的查询参数附加到多个 URI。
  • 路径组成部分:您可以指定路径组成部分,以便相对清单 URI 继承已签名的 URI 组成部分。
  • 签名 Cookie:在 Cookie 中指定 URI 前缀,以便允许 对具有指定前缀的任何 URI 的访问权限。

如需了解详情,请参阅生成签名

对于使用令牌的已签名请求,您可以将令牌放置在以下任一位置:

  • 在您选择的查询参数中
  • 在 Cookie 中

如需了解详情,请参阅生成令牌

双令牌身份验证的运作方式

双令牌身份验证使用两个令牌对内容的请求进行身份验证:一个短时令牌用于发起播放,一个长时令牌用于播放会话的其余部分。

要使用双令牌身份验证,您需要将应用服务器配置为 向用户代理发放短期令牌。然后,配置 媒体 CDN 响应短时令牌。 您可以将令牌放在您选择的查询参数中,或者将 令牌标记。如需了解详情,请参阅 使用双令牌身份验证

应用服务器生成的短时令牌有助于保护主密钥 清单(有时称为多变体播放列表)。已签名请求的有效期足够短,可以请求主要清单,但无法观看清单中包含的所有内容。

当媒体 CDN 收到具有授权短时长的请求时 令牌,则会生成一个带签名的长时令牌。您可以在单个命名查询参数或 Cookie 中使用该令牌。长时令牌 支持观看完整的节目。Media CDN 生成的已签名长时令牌使用 Ed25519 签名,这些签名使用与 EdgeCacheKeyset 资源关联的 Google 管理的密钥进行签名。

您可以自定义短时效和长时效令牌的到期时间。最佳实践是,将应用服务器上生成的短时效令牌的失效时间配置为 1 分钟。您 必须设置媒体 CDN 的长时令牌的到期时间 生成的时长超过您的内容长度,最多为 1 次 。

双令牌身份验证的请求流程

以下介绍了请求流程:

  1. 观众从你的应用服务器请求获取所需的媒体的元数据 进行查看。您的应用服务器会返回使用短时效令牌签名的主清单的 URI。

  2. 您的播放器应用会从 Media CDN 请求主要清单。请求包含短时令牌作为 采用单命名查询参数格式的 URI 查询参数值。

  3. 媒体 CDN 会验证短时令牌和令牌的 签名参数。

    1. 如果令牌有效,Media CDN 会创建一个长效签名令牌。媒体 CDN 会将令牌作为 Set-Cookie 标头,或通过修改 添加令牌
    2. 如果令牌无效,Media CDN 会返回 HTTP 403 Forbidden 响应。
  4. 播放器应用会从 媒体 CDN,然后请求媒体播放列表或媒体 主要清单中引用的细分。请求必须包含长时效令牌,可以是已签名的 Cookie,也可以是 URI 参数。

  5. Media CDN 会验证长时签名令牌:

    1. 如果长时令牌对特定请求有效,则 媒体 CDN 提供请求的内容。
    2. 如果长时令牌无效(由于令牌过期造成的) 或无效路径),则媒体 CDN 会使用 HTTP 403 Forbidden 响应。
  6. 此过程会不断重复,直到媒体播放结束或长效签名结束 过期。

双令牌签名请求支持的令牌格式

媒体 CDN 双令牌签名请求支持多种格式, 具体取决于令牌类型。

短期签名请求

对于短时签名请求,媒体 CDN 默认情况下支持使用 Ed25519 签名签名的令牌。您还可以使用基于对称密钥的哈希消息身份验证代码 (HMAC),以便与现有应用代码和其他 CDN 兼容。

如需使用 HMAC,请使用 Secret Manager 存储 HMAC 密钥。然后授予对媒体 CDN 的访问权限 服务账号来访问存储的密钥。我们建议的最佳实践是,出于安全和性能方面的考虑,使用 Ed25519 签名进行非对称签名。

媒体 CDN 服务账号归 媒体 CDN 项目,并且不会显示在您项目的 服务账号。服务账号只会授予对 您明确允许的项目中的媒体 CDN 资源。

该服务账号具有以下格式:

service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

其中,PROJECT_NUMBER 是您的项目编号。

要启用该服务的媒体 CDN 服务账号,请至少创建 一个媒体 CDN 资源,例如 EdgeCacheOrigin

长时签名请求

对于长时签名请求,媒体 CDN 使用 Ed25519 使用与 EdgeCacheKeyset 资源

对于长时令牌,媒体 CDN 支持使用单一令牌格式。 该参数既可在 HLS 视频流的单命名查询参数中使用,也可用于 HLS 视频流; Cookie 中。

注意事项

以下各部分讨论了多项内容,例如:

URI 限制

大多数新型 HTTP 客户端支持的 URI 长度不超过 8,000 个字符。不过,某些旧版或小众设备可能存在更严格的限制。一般来说,签名 URI 会将 向请求 URI 添加大约 125 个字符,其中包括以下内容:

  • 如果使用所有字段名称,则每个字段大约包含 67 个字符 (例如 Expires=KeyName=)。
  • 对于 Unix 时间戳,为 10 个字符
  • 对于 KeyName,为 5 个字符
  • 对于 base64 编码的 Signature 值,为 43 个字符

最佳做法是使用查询参数作为令牌,将 URI 的长度保持在 2000 个字符以内。较短的 URI 可防止设备向媒体 CDN 发送经过截断的 URI。

旧版视频在线播放设备

某些旧版视频在线播放设备可能不完全支持将 Cookie 附加到清单或媒体片段请求。如果您的设备在处理 HTTP Cookie 时存在已知问题,请将 Media CDN 配置为针对已签名请求和双令牌交换使用查询参数。

在以下情况下,您须自行承担必要的责任:征得用户同意并遵守隐私权法规 使用 Cookie 交换短时令牌。将 Media CDN 配置为使用双令牌签名请求后,Google 会颁发和管理用于长时效令牌的 Cookie。

结算

如需详细了解 Secret Manager 的结算方式,请参阅价格

媒体 CDN 会将对 Secret 的提取内容缓存在内部,从而显著降低从 Secret Manager 提取 Secret 的速率。减少提取次数还会显著降低 Secret Manager 监控和向您收费的访问次数。

如需详细了解如何在媒体 CDN 中缓存 Secret,请参阅密钥概览