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 カスタマーマスターキー (CMK) を使用して、メディアファイルを暗号化するときに使用した AES 暗号化キーを保護することで実現されます。

サーバー側の暗号化を選択した場合は、Amazon S3 がユーザーの代わりにすべてのファイルの暗号化と復号を実行するのを許可することになります。Amazon S3 を設定して、以下の 3 種類のマスターキーのどれかを使って、ファイルの暗号化に使用されるユニークなデータキーを保護することができます。

  • Amazon S3 マスターキー。AWS によって所有、管理されます。

  • Amazon S3 用の AWS 管理 CMK。お客様のアカウントによって所有されるが、AWS によって管理されるマスターキーです。

  • AWS KMS を使用して作成する任意のカスタマー管理 CMK

暗号化とそれに必要なマスターキーは、Amazon S3 コンソールまたは適切な Amazon S3 API を使用してリクエストできます。Amazon S3 による暗号化の実行方法の詳細については、『Amazon Simple Storage Service 開発者ガイド』の「暗号化を使用したデータの保護」を参照してください。

お客様のアカウントにある 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 は、暗号化されたメディアファイルと一緒に、暗号化されたデータキーを保存します。

入力ファイルの復号

Amazon S3 のサーバー側の暗号化を使って入力ファイルを暗号化することを選択した場合、Elastic Transcoder はファイルを復号しません。その代わりに、Elastic Transcoder は、ジョブとパイプラインの作成時に指定した設定に応じて Amazon S3 に復号を実行してもらいます。

設定は以下の組み合わせが可能です。

暗号化モード AWS KMS キー 意味
S3 デフォルト メディアファイルの暗号化と復号に使用するキーを Amazon S3 が作成して管理します。その処理をユーザーから見ることはできません。
S3-AWS-KMS デフォルト お客様のアカウントの Amazon S3 用のデフォルト AWS 管理 CMK によって暗号化されたデータキーを使用して、Amazon S3 がメディアファイルを暗号化します。
S3-AWS-KMS カスタム (ARN 付き) 指定されたカスタマー管理 CMK によって暗号化されたデータキーを使用して、Amazon S3 がメディアファイルを暗号化します。

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 キーを使用してメディアファイルを復号します。

出力ファイルの暗号化

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

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

アカウントにある 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 キーを使った出力ファイルの暗号化を指定する場合、AES キーは、AWS KMS で CMK を使用して暗号化されている必要があります。Elastic Transcoder、AWS KMS、ユーザーは、次のような方法でやり取りします。

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

  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 暗号化キーを使用して暗号化されます。再生中にコンテンツが表示されると、プレイヤーはキーをダウンロードし、メディアセグメントを復号化します。

使用されるキーには、AWS KMS CMK とデータキーの 2 種類があります。データキーの暗号化と復号に使用する CMK を作成する必要があります。Elastic Transcoder ではデータキーを使用してメディアセグメントを暗号化および復号されます。データキーは AES-128 である必要があります。同じコンテンツのすべてのバリエーションとセグメントは、同じデータキーを使用して暗号化されます。データキーを提供するか、Elastic Transcoder でデータキーを作成することができます。

CMK は、次のポイントでデータキーの暗号化に使用することができます。

  • 独自のデータキーを提供する場合、Elastic Transcoder に渡す前に暗号化する必要があります。

  • Elastic Transcoder にデータキーの生成をリクエストすると、Elastic Transcoder がデータキーを暗号化します。

CMK は、次のポイントでデータキーの復号に使用することができます。

  • Elastic Transcoder は、データキーを使用して出力ファイルを暗号化するか、入力ファイルを復号する必要があるときに、お客様によって指定されたデータキーを復号します。

  • Elastic Transcoder によって生成されたデータキーを復号し、このキーを使用して出力ファイルを復号します。

詳細については、『Amazon Elastic Transcoder Developer Guide』の「HLS のコンテンツ保護」を参照してください。

Elastic Transcoder 暗号化コンテキスト

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

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

"service" : "elastictranscoder.amazonaws.com"

暗号化コンテキストは、CloudTrail ログに書き込まれるため、所定の AWS KMS CMK が使用された方法を理解しやすくなっています。CloudTrail ログファイルの requestParameters フィールドで、暗号化コンテキストは以下のようになります。

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

サポートされる暗号化オプションの 1 つを使用するように Elastic Transcoder ジョブを設定する方法の詳細については、『Amazon Elastic Transcoder Developer Guide』の「データ暗号化のオプション」を参照してください。