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

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

Amazon Elastic Transcoder 如何使用 Amazon KMS

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

为输入文件加密

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

如果您选择使用 AES 的客户端加密,则您需负责在将文件上传到 Amazon S3 之前为文件加密,并且您必须为 Elastic Transcoder 提供对加密密钥的访问权限。通过使用对称 Amazon KMS Amazon KMS key 保护您用于为媒体文件加密的 AES 加密密钥,即可实现此目的。

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

  • Amazon S3 密钥,Amazon S3 拥有和管理的加密密钥。它不属于您的 Amazon Web Services 账户 的一部分。

  • Amazon S3 的 Amazon 托管式密钥,该 KMS 密钥属于您账户的一部分,但由 Amazon 创建和管理

  • 您使用 Amazon KMS 创建的任何对称客户托管密钥

重要

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

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

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

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

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

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

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

将输入文件解密

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

可用的设置组合如下:

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

如果已指定 S3-AWS-KMS,Amazon S3 和 Amazon KMS 采用以下方式协同工作来执行解密。

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

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

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

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

为输出文件加密

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

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

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

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

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

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

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

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

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

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

  3. Elastic Transcoder 通过在 Amazon KMS API 中调用 Decrypt 操作来为密钥解密,将加密的密钥以密文形式传递。

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

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

重要

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

HLS 内容保护

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

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

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

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

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

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

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

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

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

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

Elastic Transcoder 加密上下文

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

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

"service" : "elastictranscoder.amazonaws.com"

加密上下文写入 CloudTrail 日志是为了帮助您了解给定的 Amazon KMS KMS 密钥是如何使用的。在 CloudTrail 日志文件requestParameters字段中,加密上下文类似于以下内容:

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

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