Amazon Elastic Transcoder が AWS KMS を使用する方法 - AWS Key Management Service

Amazon Elastic Transcoder が AWS KMS を使用する方法

Amazon Elastic Transcoder を使用して、Amazon S3 バケットに格納されているメディアファイルを、コンシューマー再生デバイスで必要な形式に変換できます。入力ファイルと出力ファイルの両方を暗号化し復号することができます。以下のセクションでは、両方の処理で AWS KMS を使用する方法について説明します。

入力ファイルの暗号化

Elastic Transcoder を使用する前に、Amazon S3 バケットを作成し、そのバケットにメディアファイルをアップロードする必要があります。アップロード前に AES クライアント側の暗号化を使用するか、アップロード後に Amazon S3 サーバー側の暗号化を使用してファイルを暗号化できます。

AES を使用してクライアント側の暗号化を選択した場合、Amazon S3 にアップロードする前にファイルを暗号化する必要があり、また、暗号化キーへの Elastic Transcoder アクセスを提供する必要があります。これを行うには、対称 AWS KMS AWS KMS key を使用して、メディアファイルの暗号化に使用した AES 暗号化キーを保護します。

サーバー側の暗号化を選択した場合、Amazon S3 がユーザーに代わってすべてのファイルを暗号化および復号化することを許可します。Amazon S3 を設定し、3 種類の暗号化キーのうちの 1 つを使用して、ファイルを暗号化する一意のデータキーを保護できます。

  • Amazon S3 キー。Amazon S3 が所有および管理する暗号化キー。AWS アカウント の一部ではありません。

  • Amazon S3 の AWS マネージドキー、アカウントの一部である KMS キーは、AWS によって作成および管理されます。

  • AWS 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 の AWS マネージドキー を使用して入力ファイルを保護する際、Amazon S3 と AWS KMS は次のようにやり取りします。

  1. Amazon S3 は、プレーンテキストのデータキーおよび指定された KMS キーで暗号化されたデータキーのコピーをリクエストします。

  2. AWS KMS はデータキーを作成し、指定された KMS キーで暗号化して、プレーンテキストデータキーと暗号化されたデータキーの両方を 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 マネージドキー で暗号化されたデータキーを使用して、メディアファイルを暗号化します。
S3-AWS-KMS カスタム (ARN 付き) Amazon S3 は、指定されたカスタマーマネージドキーによって暗号化されたデータキーを使用して、メディアファイルを暗号化します。

S3-AWS-KMS が指定されている場合、Amazon S3 と AWS KMS は次のように連携して復号を実行します。

  1. Amazon S3 は暗号化されたデータキーを AWS KMS に送信します。

  2. AWS KMS は適切な KMS キーを使用してデータキーを復号し、プレーンテキストデータキーを Amazon S3 に返信します。

  3. Amazon S3 は、プレーンテキストのデータキーを使用して暗号文を復号します。

AES キーを使用してクライアント側の暗号化を選択した場合、Elastic Transcoder は Amazon S3 バケットから暗号化されたファイルを取得し、復号します。Elastic Transcoder は、パイプラインの作成時に指定した KMS キーを使用して AES キーを復号し、AES キーを使用してメディアファイルを復号します。

出力ファイルの暗号化

Elastic Transcoder は、ジョブとパイプラインを作成するときに暗号化設定を指定する方法に応じて、出力ファイルを暗号化します。以下のオプションが利用できます。

暗号化モード AWS KMS キー 意味
S3 デフォルト Amazon S3 は、出力ファイルの暗号化に使用するキーを作成および管理します。
S3-AWS-KMS デフォルト Amazon S3 は、AWS KMS によって作成され、アカウントの Amazon S3 用 AWS マネージドキー によって暗号化されたデータキーを使用します。
S3-AWS-KMS カスタム (ARN 付き) Amazon S3 は、ARN で指定されたカスタマーマネージドキーを使用して暗号化されたデータキーを使用して、メディアファイルを暗号化します。
AES- デフォルト Elastic Transcoder は、アカウント内の Amazon S3 用 AWS マネージドキー を使用して指定された AES キーを復号し、そのキーを使用して出力ファイルを暗号化します。
AES- カスタム (ARN 付き) Elastic Transcoder は、ARN で指定されたカスタマーマネージドキーを使用して指定された AES キーを復号し、そのキーを使用して出力ファイルを暗号化します。

アカウント内の Amazon S3 用 AWS マネージドキー またはカスタマーマネージドキーを使用して出力ファイルを暗号化するように指定すると、Amazon S3 と AWS KMS は次のような方法でやり取りします。

  1. Amazon S3 は、プレーンテキストのデータキーおよび指定された KMS キーで暗号化されたデータキーのコピーをリクエストします。

  2. AWS KMS はデータキーを作成し、KMS キーで暗号化して、プレーンテキストデータキーと暗号化されたデータキーの両方を Amazon S3 に送信します。

  3. Amazon S3 は、データキーを使用してメディアを暗号化し、指定した Amazon S3 バケットに格納します。

  4. Amazon S3 は、暗号化されたデータキーを、暗号化されたメディアファイルとともに保存します。

指定した AES キーを出力ファイルの暗号化に使用するように指定した場合、AES キーは AWS KMS の KMS キーを使用して暗号化される必要があります。Elastic Transcoder、AWS KMS、ユーザーは次の方法で対話します。

  1. AWS KMS API で Encrypt オペレーションを呼び出して AES キーを暗号化します。AWS KMS は、指定された KMS キーを使用してキーを暗号化します。パイプラインの作成時に使用する KMS キーを指定します。

  2. Elastic Transcoder ジョブを作成するときに、暗号化された AES キーを含むファイルを指定します。

  3. Elastic Transcoder は、AWS KMS API で Decrypt オペレーションを呼び出し、暗号化されたキーを暗号文として渡します。

  4. Elastic Transcoder は、復号化された AES キーを使用して出力メディアファイルを暗号化し、復号化された AES キーをメモリから削除します。ジョブで定義した元のキーを暗号化したキーのみがディスクに保存されます。

  5. ユーザーは、暗号化された出力ファイルをダウンロードして、定義した元の AES キーを使用してローカルにファイルを復号できます。

重要

AWS がプライベート暗号化キーを保存することはありません。したがって、キーを安全に管理することが重要です。キーを紛失すると、データを復号できなくなります。

HLS のコンテンツ保護

HTTP Live Streaming (HLS) は適応型のストリーミングプロトコルです。Elastic Transcoder は、入力ファイルを メディアセグメントと呼ばれる小さな個別のファイルに分割することで、HLS をサポートします。対応する個別のメディアセグメントには、異なるビットレートでエンコードされた同じ素材が含まれているため、プレーヤーは利用可能な帯域幅に最適なストリームを選択することができます。Elastic Transcoder は、ストリーミング可能なさまざまなセグメントのメタデータを含むプレイリストも作成します。

HLS のコンテンツ保護を有効にすると、各メディアセグメントは 128 ビットの AES 暗号化キーを使用して暗号化されます。再生中にコンテンツが表示されると、プレイヤーはキーをダウンロードし、メディアセグメントを復号します。

KMS キーとデータキーの 2 種類のキーが使用されます。データキーの暗号化と復号に使用する 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 の暗号化コンテキスト

暗号化コンテキスト は、一連のキー値のペアおよび任意非シークレットデータを含みます。データを暗号化するリクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化されたデータに暗号化してバインドします。データを復号化するには、同じ暗号化コンテキストに渡す必要があります。

Elastic Transcoder は、すべての AWS KMS API リクエストで同じ暗号化コンテキストを使用して、データキーの生成、暗号化、復号を行います。

"service" : "elastictranscoder.amazonaws.com"

暗号化コンテキストは CloudTrail ログに書き込まれ、特定の AWS KMS KMS キーがどのように使用されているかを理解するのに役立ちます。CloudTrail ログファイルの requestParameters フィールドでは、暗号化コンテキストは次のようになります。

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

Elastic Transcoder ジョブを設定して、サポートされる暗号化オプションに使用する方法の詳細については、Amazon Elastic Transcoder デベロッパーガイドデータ暗号化のオプションを参照してください。