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

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

Amazon Elastic Transcoder 如何使用Amazon KMS

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

为输入文件加密

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

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

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

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

  • 这些区域有:Amazon托管 CMK,Amazon S3 CMK 是您账户的一部分,但由Amazon

  • 任何对称 客户托管 CMK,您通过使用Amazon KMS

重要

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

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

当您通过使用Amazon托管 CMK 适用于您的账户或客户管理的 CMK、Amazon S3 和Amazon KMS以下方式进行交互:

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

  2. Amazon KMS创建数据密钥,使用指定的 CMK 为其进行加密,然后将明文数据密钥和加密的数据密钥发送到 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托管 CMK 用于您的账户中的 Amazon S3 用于为媒体文件加密。
S3-AWS-KMS 自定义 (使用 ARN) Amazon S3 使用由指定的客户托管 CMK 加密的数据密钥来为媒体文件加密。

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

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

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

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

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

为输出文件加密

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

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

当您指定AmazonAmazon S3 托管 CMK 或客户托管 CMK 用于加密输出文件、Amazon S3 和Amazon KMS以下方式进行交互:

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

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

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

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

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

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

  2. 您在创建 Elastic Transder 任务时指定包含加密的 AES 密钥的文件。

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

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

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

重要

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

HLS 内容保护

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

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

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

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

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

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

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

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

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

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

Elastic Transcoder 加密上下文

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

Elastic Transcoder 使用相同的加密上下文Amazon KMSAPI 请求以生成数据密钥,加密和解密。

"service" : "elastictranscoder.amazonaws.com"

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

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

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