Amazon Elastic Transcoder 如何使用 AWS KMS - AWS Key Management Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Elastic Transcoder 如何使用 AWS KMS

您可以使用 Amazon 弹性转换器将存储在 Amazon S3 存储桶中的媒体文件转换为消费者播放设备所要求的格式。对于输入文件和输出文件,均可以进行加密和解密。以下各部分讨论如何使用 AWS KMS 执行这两个过程。

为输入文件加密

使用 Elastic Transcoder 之前,创建 Amazon S3 存储桶并将您的媒体文件上传到其中。您可以在上传前使用 AES 客户端加密为该文件加密,也可以在上传后使用 Amazon S3 服务器端加密为该文件加密。

如果您选择使用 AES 的客户端加密,则您需负责在将文件上传到 Amazon S3 之前为文件加密,并且您必须 Elastic Transcoder 提供对加密密钥的访问权限。为此,您可以使用对称AWS KMS客户主键(CMK) 保护您用于为媒体文件加密的 AES 加密密密。

如果您选择使用服务器端加密,即表示 Amazon S3 代表您将所有文件加密和解密。您可以配置 Amazon S3 以使用以下三种不同主密钥之一来保护用于为您的文件加密的唯一数据密钥:

  • Amazon S3 密钥,Amazon S3 拥有和管理的加密密钥。它不是您的 AWS 账户的一部分。

  • 这些区域有:AWS 托管 CMK,这是您账户的一部分,但由 AWS 创建和管理的 CMK

  • 任何对称 客户托管 CMK您通过使用 AWS KMS 创建的

重要

对于客户端加密和服务器端加密,Elastic Transcoder 仅支持对称 CMK。您无法使用非对称 CMK来加密您的 Elastic Transcoder 文件。要获取确定 CMK 是对称还是非对称的帮助,请参阅识别对称 CMK 和非对称 CMK

您可以使用 Amazon S3 控制台或相应的 Amazon S3 API 启用加密并指定密钥。有关 Amazon S3 如何执行加密的更多信息,请参阅使用服务器端加密保护数据中的Amazon Simple Storage Service 开发人员指南

当您使用账户中的 AWS 托管 CMK 或客户托管 CMK 来保护输入文件时,Amazon S3 和 AWS KMS 将通过以下方式进行交互:

  1. Amazon S3 请求明文数据密钥以及使用指定 CMK 加密的数据密钥的副本。

  2. AWS KMS 创建数据密钥,使用指定的 CMK 为其进行加密,然后将明文数据密钥和加密的数据密钥发送到 Amazon S3。

  3. Amazon S3 使用明文数据密钥为媒体文件加密,然后将该文件存储在指定的 Amazon S3 存储桶中。

  4. Amazon S3 将加密的数据密钥与加密的媒体文件一起存储。

将输入文件解密

如果您选择 Amazon S3 服务器端加密来为输入文件加密,则 Elastic Transcoder 不会将该文件解密。相反,Elastic Transcoder 依赖于 Amazon S3 来执行解密,具体取决于您在创建作业时指定的设置以及管道

可用的设置组合如下:

加密模式 AWS KMS 密钥 意义
S3 默认值 Amazon S3 创建并管理用于为媒体文件加密和解密的密钥。此过程对用户是不透明的。
S3-AWS-KMS 默认值 Amazon S3 使用由您的账户中用于 Amazon S3 的默认 AWS 托管 CMK 加密的数据密钥来为媒体文件加密。
S3-AWS-KMS 自定义 (使用 ARN) Amazon S3 使用由指定的客户托管 CMK 加密的数据密钥来为媒体文件加密。

何时S3-AWS KMS,Amazon S3 和 AWS KMS 采用以下方式协同工作来执行解密。

  1. Amazon S3 向 AWS KMS 发送加密的数据密钥。

  2. AWS KMS 使用适当的 CMK 为数据密钥解密,然后将明文数据密钥发送回 Amazon S3。

  3. Amazon S3 使用明文数据密钥将密文解密。

如果您选择使用 AES 密钥的客户端加密,Elastic Transcoder 将从 Amazon S3 存储桶中检索加密的文件并将其解密。Elastic Transcoder 使用您创建管道时指定的 CMK 将 AES 密钥解密,然后使用 AES 密钥将媒体文件解密。

为输出文件加密

根据您创建任务和管道时是如何指定加密设置的为输出文件加密。可用选项如下:

加密模式 AWS KMS 密钥 意义
S3 默认值 Amazon S3 创建并管理用于为输出文件加密的密钥。
S3-AWS-KMS 默认值 Amazon S3 使用 AWS KMS 创建并由您的账户中用于 Amazon S3 的 AWS 托管 CMK 加密的数据密钥。
S3-AWS-KMS 自定义 (使用 ARN) Amazon S3 使用由 ARN 指定的客户托管 CMK 加密的数据密钥来为媒体文件加密。
AES- 默认值 Elastic Transcoder 使用您的账户中用于 Amazon S3 的 AWS 托管 CMK 为您提供的指定 AES 密钥解密,并使用该密钥为输出文件加密。
AES- 自定义 (使用 ARN) Elastic Transcoder 使用 ARN 指定的客户托管 CMK 为您提供的指定 AES 密钥解密,并使用该密钥为输出文件加密。

当您指定使用账户中用于 Amazon S3 的 AWS 托管 CMK 或客户托管 CMK 为输出文件加密时,Amazon S3 和 AWS KMS 将采用以下方式进行交互:

  1. Amazon S3 请求明文数据密钥以及使用指定 CMK 加密的数据密钥的副本。

  2. AWS KMS 创建数据密钥,使用 CMK 为其进行加密,然后将明文数据密钥和加密的数据密钥发送到 Amazon S3。

  3. Amazon S3 使用该数据密钥为媒体文件加密,并将其存储在指定的 Amazon S3 存储桶中。

  4. Amazon S3 将加密的数据密钥与加密的媒体文件一起存储。

当您指定使用您提供的 AES 密钥为输出文件解密时,必须使用 AWS KMS 中的 CMK 为该 AES 密钥加密。Elastic Transcoder、AWS KMS 和您使用以下方式进行交互:

  1. 您可以通过调用Encrypt操作。AWS KMS 使用指定的 CMK 为密钥加密。您在创建管道时指定要使用的 CMK。

  2. 您在创建 EElastic Transcoder 作业时指定包含加密的 AES 密钥的文件。

  3. Elastic Transcoder 通过调用Decrypt操作,将加密的密钥以密文形式传递。

  4. Elastic Transcoder 使用解密的 AES 密钥来为输出媒体文件加密,然后从内存中删除已解密的 AES 密钥。仅将您最初在任务中定义的加密副本保存到磁盘。

  5. 您可以下载加密的输出文件,并使用您定义的原始 AES 密钥在本地将其解密。

重要

AWS 不会存储您的私有加密密密。因此,请务必妥善安全地管理您的密钥。如果您丢失了加密密钥,将无法解密数据。

HLS 内容保护

HTTP 实时流 (HLS) 是自适应流式处理协议。Elastic Transcoder 通过将您的输入文件拆分为更小的名为媒体区段。一组相应的单个媒体区段包含以不同比特率编码的相同材料,使玩家可以选择最适合可用带宽的流。EElastic Transcoder 还将创建播放列表,列表中包含可流式处理的各种区段的元数据。

当您启用 HLS 内容保护 时,将使用 128 位 AES 加密密钥为每个媒体区段加密。在查看内容时,玩家可在播放过程中下载密钥并为媒体区段解密。

使用两种类型的密钥:AWS KMS CMK 和数据密钥。您必须创建 CMK 以用于为数据密钥加密和解密。Elastic Transcoder 使用该数据密钥为媒体区段加密和解密。数据密钥必须为 AES-128。对于相同内容的所有变体和区段,使用相同数据密钥进行加密。您可以提供数据密钥,或者让 Elastic Transcoder 为您创建数据密钥。

在以下时间点,可以使用 CMK 为数据密钥加密。

  • 如果您提供自己的数据密钥,则必须在将其传递给 Elastic Transcoder 之前对其进行加密。

  • 如果您请求 Elastic Transcoder 生成数据密钥,则 Elastic Trancoder 会为您将数据密钥加密。

在以下时间点,可以使用 CMK 将数据密钥解密。

  • 在需要使用数据密钥为输出文件加密或为输入文件解密时,Elastic Transcoder 将您提供的数据密钥解密。

  • 您将解密由 Elastic Transcoder 生成的数据密钥,并使用它来将输出文件解密。

有关更多信息,请参阅 。HLS 内容保护中的Amazon Elastic Transcoder 开发人员指南

Elastic Transcoder 加密上下文

加密上下文 是一组包含任意非机密数据的键值对。在加密数据的请求中包含加密上下文时,AWS KMS 会以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。

Elastic Transcoder 在所有 AWS KMS API 请求中使用相同的加密上下文来生成数据密钥、加密和解密。

"service" : "elastictranscoder.amazonaws.com"

加密上下文将写入 CloudTrail 日志中,以帮助您了解如何使用给定的 AWS KMS CMK。在requestParameters字段中,加密上下文与以下内容类似:

"encryptionContext": { "service" : "elastictranscoder.amazonaws.com" }

有关如何配置 Elastic Transcoder 作业以使用其中一个受支持的加密选项的更多信息,请参阅数据加密选项中的Amazon Elastic Transcoder 开发人员指南