防止未经授权的分发

本页面简要介绍了媒体 CDN 提供的用于帮助防止未经授权分发内容的选项。

媒体 CDN 支持多个签名请求选项,有助于保护您的内容免遭未经授权的分发。令牌是交换签名请求的媒介,例如签名 Cookie、带查询参数的 URI 或路径组成部分。观看者提供的有效令牌用于验证对您的内容的访问。令牌无效或令牌缺失的查看者无法访问您的内容。

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

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

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

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

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

令牌具有以下功能:

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

我们建议为新的集成使用令牌。双令牌身份验证需要令牌。

您可以结合使用签名请求和双令牌身份验证请求来帮助保护您的内容。

签名请求的工作原理

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

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

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

每个媒体 CDN 服务都可以使用多个键的集合。密钥的集合也称为密钥集。借助密钥集,您可以不间断地在自己的基础架构中轮替密钥和分发私钥。

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

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

  • 包含查询参数的确切 URI:您可以指定具有确切 URI 的 URLPrefix,并将相同的查询参数附加到多个 URI。
  • 带查询参数的 URI 前缀:您可以指定带有 URI 前缀的 URLPrefix,并将相同的查询参数附加到多个 URI 中。
  • 路径组件:您可以指定路径组件,以便相对清单 URI 继承签名 URI 组件。
  • 签名 Cookie:在 Cookie 中指定 URI 前缀,以允许访问具有指定前缀的任何 URI。

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

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

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

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

双令牌身份验证的工作原理

双令牌身份验证使用两个令牌来对针对您的内容的请求进行身份验证:一个用于启动播放的短时令牌,一个用于播放会话剩余部分的长时令牌。

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

应用服务器生成的短时令牌有助于保护主清单(有时称为多变体播放列表)。签名请求的到期时间足够短,只需请求主清单,但不能查看清单中包含的所有内容。

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

您可以自定义短时和长时令牌的到期时间。我们建议您将应用服务器上生成的短时令牌的到期时间配置为一分钟。您必须将媒体 CDN 生成的长时令牌的有效期设置为大于您的内容长度(最长为一天)。

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

下面介绍了请求流程:

  1. 观看者从您的应用服务器请求他们想要观看的媒体的元数据。应用服务器返回使用短时令牌签名的主清单的 URI。

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

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

    1. 如果令牌有效,媒体 CDN 会创建一个长时签名令牌。媒体 CDN 可以通过 Set-Cookie 标头返回令牌,或者通过修改主清单中的清单 URI 和细分 URI 来返回令牌。
    2. 如果令牌无效,媒体 CDN 会做出 HTTP 403 Forbidden 响应。
  4. 播放器应用从媒体 CDN 接收主清单,然后请求主清单中引用的媒体播放列表或媒体片段。请求必须包含长时令牌(作为签名 Cookie 或 URI 参数的形式)。

  5. 媒体 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 资源关联的 Google 管理的密钥进行签名。

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

注意事项

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

URI 限制

大多数新型 HTTP 客户端都支持长度不超过 8000 个字符的 URI。但是,某些旧版设备或小众设备可能有更严格的限额。通常,签名 URI 会向请求 URI 添加大约 125 个字符,其中包括:

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

最佳做法是,将查询参数用作令牌,确保 URI 长度少于 2000 个字符。如果 URI 太短,设备将无法向媒体 CDN 发送被截断的 URI。

旧式视频流媒体设备

某些旧版视频串流设备可能不完全支持向清单或媒体片段请求附加 Cookie。如果您的设备在处理 HTTP Cookie 方面存在已知问题,请配置媒体 CDN 以将查询参数用于签名请求和双令牌交换。

在使用 Cookie 交换短时令牌时,您需要对任何所需的意见征求和隐私权合规性承担全部责任。当媒体 CDN 配置为使用双令牌签名请求时,Google 会发出并管理用于长时令牌的 Cookie。

结算

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

Secret 的媒体 CDN 提取会在内部缓存,从而显著降低了从 Secret Manager 提取 Secret 的速率。提取量减少还会显著降低 Secret Manager 监测到并向您收取的访问率。

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