メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

署名付き URL と署名付き Cookie (信頼された署名者) の作成が可能な AWS アカウントの指定

署名付き URL や署名付き Cookie を作成するには、有効な CloudFront キーペアを持つ少なくとも 1 つの AWS アカウントが必要です。このアカウントは信頼された署名者と呼ばれます。信頼された署名者には 2 つの目的があります。

  • 信頼された署名者の AWS アカウント ID がディストリビューションに追加された直後から、CloudFront は、オブジェクトへのアクセスにユーザーが署名付き URL または署名付き Cookie を使用するよう要求します。

  • 署名付き URL または署名付き Cookie を作成する場合、信頼された署名者のキーペアからプライベートキーを使用して、URL または Cookie の一部を署名します。ユーザーが制限されたオブジェクトをリクエストすると、CloudFront は URL または Cookie の署名部分を無署名部分と比較して、URL または Cookie が改ざんされていないことを確認します。CloudFront は、URL または Cookie が有効であることも確認します。たとえば、有効期限切れ日時が経過していないことを確認します。

信頼された署名者を指定する場合、署名付き URL または署名付き Cookie を必要とするオブジェクトも間接的に指定します。

  • ウェブディストリビューション – 信頼された署名者をキャッシュ動作に追加します。ディストリビューションに 1 つのキャッシュ動作のみが含まれる場合、ユーザーは、ディストリビューションに関連付けられたオブジェクトへのアクセスに署名付き URL または署名付き Cookie を使用する必要があります。複数のキャッシュ動作を作成して、信頼された署名者を一部のキャッシュ動作に追加し、それ以外のキャッシュ動作に追加しなかった場合、一部のオブジェクトへのアクセスについては、ユーザーが署名付き URL または署名付き Cookie を使用するよう要求し、その他のオブジェクトへのアクセスについては要求しないということが可能になります。

  • RTMP ディストリビューション (署名付き URL のみ) – 信頼された署名者をディストリビューションに追加します。信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使用する必要があります。

注記

信頼された署名者をディストリビューションに指定するには、CloudFront コンソールまたは CloudFront API バージョン 2009-09-09 以降を使用する必要があります。

署名付き URL または署名付き Cookie の作成と、CloudFront ディストリビューションへのアカウントの追加が許可されるアカウントを指定するには、以下のタスクを実行します。

  1. 信頼された署名者として使用する AWS アカウントを決定します。ほとんどの CloudFront カスタマーは、ディストリビューションの作成に使用したアカウントを使用します。

  2. ステップ 1 で選択したアカウントごとに、CloudFront キーペアを作成します。詳細については、「信頼された署名者の CloudFront キーペアを作成する」を参照してください。

  3. 署名付き URL または署名付き Cookie の作成に .NET または Java を使用する場合は、CloudFront プライベートキーの形式を変更します。詳細については、「CloudFront プライベートキーの形式を変更する (.NET および Java のみ) 」を参照してください。

  4. 作成している署名付き URL または署名付き Cookie の対象となるディストリビューションで、信頼された署名者の AWS アカウント ID を指定します。詳細については、「信頼された署名者をディストリビューションに追加する」を参照してください。

  5. (オプション) 信頼された署名者に有効な CloudFront キーペアがあることを CloudFront が認識していることを確認します。詳細については、「信頼された署名者が有効になっていることを確認する (オプション) 」を参照してください。

信頼された署名者の CloudFront キーペアを作成する

CloudFront 署名付き URL または署名付き Cookie の作成に使用する AWS アカウント (信頼された署名者) はすべて、それぞれ独自の CloudFront キーペアを持っている必要があり、キーペアは有効になっている必要があります。CloudFront キーペアの代わりに Amazon EC2 キーペアを使用することはできません。CloudFront 署名付き URL または署名付き Cookie を作成する場合、信頼された署名者のキーペアのキーペア ID を URL に含めます。Amazon EC2 では、キーペア ID を使用可能にすることはできません。

アプリケーションのセキュリティを維持するには、CloudFront キーペアを 90 日おきに、またはそれより多くの頻度で変更することをお勧めします。詳細については、「CloudFront キーペアを更新する」を参照してください。

キーペアは、以下の方法で作成できます。

AWS マネジメントコンソールで CloudFront キーペアを作成するには

  1. AWS アカウントのルート認証情報を使用して AWS マネジメントコンソールにサインインします。

    重要

    IAM ユーザーは CloudFront キーペアを作成できません。キーペアを作成するには、ルート認証情報を使用してログインする必要があります。

  2. [account-name] メニューで、[Security Credentials] をクリックします。

  3. [CloudFront Key Pairs] を展開します。

  4. 複数のキーペアが有効になっていないことを確認します。既に 2 つのキーペアが有効になっていると、キーペアを作成できません。

  5. [Create new Key Pair] をクリックします。

  6. [Create Key Pair] ダイアログボックスで、[Download Private Key File] をクリックします。

  7. [Opening <filename>] ダイアログボックスで、[Save File] のデフォルト値を受け入れます。[OK] をクリックし、CloudFront キーペアのプライベートキーをダウンロードして保存します。

    重要

    CloudFront キーペアのプライベートキーを安全な場所に保存し、必要な管理者ユーザーだけがそのプライベートキーを読み取ることができるようにファイルのアクセス権限を設定します。別のユーザーがこのプライベートキーを取得すると、そのユーザーは有効な署名付き URL および署名付き Cookie を生成し、コンテンツをダウンロードできます。プライベートキーを再取得することはできません。したがって、プライベートキーを削除したか失った場合は、新しい CloudFront キーペアを作成する必要があります。

  8. キーペアのキーペア ID を記録しておきます。 (AWS マネジメントコンソールでは、これはアクセスキー ID と呼ばれます)。この情報は、署名付き URL または署名付き Cookie を作成するときに使用します。

RSA キーペアを作成し、パブリックキーを AWS マネジメントコンソールにアップロードするには

  1. OpenSSL または別のツールを使用してキーペアを作成します。

    たとえば、OpenSSL を使用する場合は、次のコマンドを使用して 4096 ビット長のキーペアを生成し、private_key.pem ファイルに保存します。

    $ openssl genrsa -out private_key.pem 4096

    生成されるファイルには、パブリックキーとプライベートキーの両方が含まれます。そのファイルからパブリックキーを抽出するには、次のコマンドを実行します。

    $ openssl rsa -pubout -in private_key.pem -out public_key.pem

    パブリックキーは、この手順の後のステップでアップロードするファイルです。

    キーに関する以下の要件に注意してください。

    • キーペアは SSH-2 RSA キーペアである必要があります。

    • キーペアは base64 でエンコードされた PEM 形式である必要があります。

    • サポートされているキー長は 1024、2048、および 4096 ビットです。

  2. AWS アカウントのルート認証情報を使用して AWS マネジメントコンソールにサインインします。

    重要

    IAM ユーザーは CloudFront キーペアを作成できません。キーペアを作成するには、ルート認証情報を使用してログインする必要があります。

  3. [account-name] メニューで、[Security Credentials] をクリックします。

  4. [CloudFront Key Pairs] を展開します。

  5. 複数のキーペアが有効になっていないことを確認します。既に 2 つのキーペアが有効になっている場合は、独自のキーペアをアップロードできません。

  6. [Upload Your Own Key Pair] をクリックします。

  7. [Upload Your Own Key Pair] ダイアログボックスの [Choose File] をクリックし、ステップ 1 で作成したパブリックキーファイルを選択します。

  8. [Upload] をクリックします。

    [Upload Key Pair] ダイアログボックスがクリアされ、新しいキーペアが CloudFront キーペアのリストの最上部に表示されます。

  9. キーペアのキーペア ID を記録しておきます。 (AWS マネジメントコンソールでは、これはアクセスキー ID と呼ばれます)。この情報は、署名付き URL または署名付き Cookie を作成するときに使用します。

CloudFront プライベートキーの形式を変更する (.NET および Java のみ)

.NET または Java を使用して署名付き URL または署名付き Cookie を作成する場合、キーペアからのプライベートキーをデフォルトの .pem 形式のまま使用して署名を作成することはできません。

  • .NET Framework – .NET Framework で使用する XML 形式にプライベートキーを変換します。いくつかのツールを利用できます。

  • Java – DER 形式にプライベートキーを変換します。これを行うには、OpenSSL を使用できます。

    $ openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER

    エンコーダが正常に機能するように、Bouncy Castle の Java 用暗号 API の jar をプロジェクトに追加してから Bouncy Castle プロバイダーを追加します。

信頼された署名者をディストリビューションに追加する

信頼された署名者とは、ディストリビューションの署名付き URL および署名付き Cookie を作成できる AWS アカウントです。デフォルトでは、どのアカウントも (ディストリビューションを作成したアカウントも)、ディストリビューションの署名付き URL または署名付き Cookie の作成を許可されていません。信頼された署名者として使用する AWS アカウントを指定するには、そのアカウントをディストリビューションに追加します。

  • ウェブディストリビューション – 信頼された署名者はキャッシュ動作に関連付けられます。これにより、同じディストリビューション内で、一部のオブジェクトに署名付き URL または署名付き Cookie を要求し、その他のオブジェクトには要求しないということが可能になります。信頼された署名者は、対応するキャッシュ動作に関連付けられたオブジェクトに対してのみ署名付き URL または署名付き Cookie を作成できます。たとえば、1 つのキャッシュ動作に対して 1 つの信頼された署名者があり、別のキャッシュ動作に対して別の信頼された署名者がある場合、どちらの信頼された署名者も、もう一方のキャッシュ動作に関連付けられたオブジェクトに対して署名付き URL または署名付き Cookie を作成できません。

  • RTMP ディストリビューション (署名付き URL のみ) – 信頼された署名者はディストリビューションに関連付けられます。信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL または署名付き Cookie を使用する必要があります。

重要

コンテンツへの意図されないアクセスがユーザーに与えられないように、また、すべてのユーザーが利用できるコンテンツへのアクセスが禁止されないように、パスパターンとその順序を慎重に定義します。たとえば、リクエストが、2 つのキャッシュ動作のパスパターンに一致したと仮定します。最初のキャッシュ動作は署名付き URL または署名付き Cookie を要求しませんが、2 番目のキャッシュ動作はこれらを要求します。ユーザーは署名付き URL または署名付き Cookie を使用せずにオブジェクトにアクセスできます。これは、CloudFront が、最初の一致に関連付けられたキャッシュ動作を処理するためです。

パスパターンの詳細については、「パスパターン」を参照してください。

重要

コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追加します。準備ができていない場合、CloudFront はリクエストを拒否します。

  • ウェブディストリビューション – 信頼された署名者をウェブディストリビューションのキャッシュ動作に追加した後、ユーザーは、キャッシュ動作に関連付けられたオブジェクトへのアクセスに署名付き URL または署名付き Cookie を使用する必要があります。

  • RTMP ディストリビューション (署名付き URL のみ) – 信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使用する必要があります。

信頼された署名者の最大数は、ディストリビューションの種類によって異なります。

  • ウェブディストリビューション – キャッシュ動作ごとに最大 5

  • RTMP ディストリビューション – ディストリビューションごとに最大 5

CloudFront コンソールまたは CloudFront API を使用して、信頼された署名者をディストリビューションに追加できます。該当のトピックを参照してください。

CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加する

CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加するには

  1. ディストリビューションを作成した AWS アカウントのみを、信頼された署名者として使用する場合は、このステップをスキップしてステップ 2 に進んでください。

    他の AWS アカウントを使用する場合、アカウントごとに AWS アカウント ID を取得します。

    1. 信頼された署名者として使用するアカウントを使用して、AWS マネジメントコンソール (https://console.aws.amazon.com/console/home) にサインインします。

    2. コンソールの右上で、アカウントに関連付けられた名前をクリックし、[My Account] をクリックします。

    3. [Account Settings] で、アカウント ID を書き留めます。

    4. AWS マネジメントコンソールからログアウトします。

    5. 信頼された署名者として使用する他のアカウントについて、ステップ a ~ d を繰り返します。

  2. Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/) を開きます。信頼された署名者の追加先のディストリビューションを作成したときに使用したアカウントを使用して、サインインします。

  3. ディストリビューション ID をクリックします。

  4. 編集モードに変更します。

    • ウェブディストリビューション – [Behaviors] タブをクリックし、編集する動作をクリックして、[Edit] をクリックします。

    • RTMP ディストリビューション – [Edit] をクリックします。

  5. [Restrict Viewer Access (Use Signed URLs or Signed Cookies)] で、[Yes] をクリックします。

  6. [Trusted Signers] で、該当のチェックボックスをオンにします。

    • Self – 現在のアカウント (ディストリビューションの作成に使用したアカウント) を使用する場合、このチェックボックスをオンにします。

    • Specify Accounts – 他の AWS アカウントを使用する場合、このチェックボックスをオンにします。

  7. [Specify Accounts] チェックボックスをオンにした場合、AWS アカウント ID (ハイフン付きまたはハイフンなし) を [AWS Account Number] フィールドに入力します。これらは、この手順の最初のステップで取得したアカウント ID です。行ごとに 1 つのアカウント ID を入力します。

  8. [Yes, Edit] をクリックします。

  9. 信頼された署名者をウェブディストリビューションに追加しており、複数のキャッシュ動作がある場合は、必要に応じてステップ 4 ~ 8 を繰り返します。

CloudFront API を使用して、信頼された署名者をディストリビューションに追加する

CloudFront API を使用して、信頼された署名者の AWS アカウント ID を既存のディストリビューションに追加したり、信頼された署名者を含む新しいディストリビューションを作成したりできます。どちらの場合も、適用可能な値を TrustedSigners エレメントに指定します。ウェブディストリビューションの場合、TrustedSigners エレメントを 1 つ以上のキャッシュ動作に追加します。RTMP ディストリビューションの場合、TrustedSigners エレメントをディストリビューションに追加します。

Amazon CloudFront API リファレンス」の該当するトピックを参照してください。

信頼された署名者が有効になっていることを確認する (オプション)

信頼された署名者をディストリビューションに追加した後、その署名者が有効になっていることを確認することをお勧めします。信頼された署名者を有効にするには、以下の条件が満たされている必要があります。

  • AWS アカウントに少なくとも 1 つの有効なキーペアが必要です。キーペアを更新する場合、アカウントは、一時的に 2 つの有効なキーペア (古いキーペアと新しいキーペア) を持ちます。

  • CloudFront が有効なキーペアを認識する必要があります。キーペアを作成してから CloudFront がキーペアの存在を認識するまで、わずかな期間が生じる可能性があります。

注記

現在、ディストリビューションで有効な信頼済み署名者のリストを表示するには、CloudFront API を使用する必要があります。有効な信頼済み署名者のリストは CloudFront コンソールでは利用できません。

CloudFront API を使用して、信頼された署名者が有効であることを確認する

有効なキーペアを持つ信頼された署名者 (有効な信頼済み署名者) を確認するには、ディストリビューションを取得し、ActiveTrustedSigners エレメントの値を確認します。このエレメントには、信頼された署名者としてディストリビューションで識別されている各アカウントの AWS アカウント ID が含まれます。信頼された署名者に 1 つ以上の有効な CloudFront キーペアがある場合、ActiveTrustedSigners エレメントにはそのキーペア ID も含まれます。詳細については、「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。

CloudFront キーペアを更新する

AWS は、有効な CloudFront キーペアを 90 日おきに更新 (変更) することをお勧めします。有効期限がまだ切れていない URL または Cookie を無効にすることなく、署名付き URL または署名付き Cookie の作成に使用している CloudFront キーペアを更新するには、以下のタスクを実行します。

  1. 署名付き URL の作成に使用しているアカウントごとに新しいキーペアを作成します。詳細については、「信頼された署名者の CloudFront キーペアを作成する」を参照してください。

  2. CloudFront が新しいキーペアを認識していることを確認します。詳細については、「信頼された署名者が有効になっていることを確認する (オプション) 」を参照してください。

  3. 新しいキーペアからのプライベートキーを使用して署名を作成するようにアプリケーションを更新します。

  4. 新しいプライベートキーを使用して署名する URL または Cookie が正常に機能することを確認します。

  5. 古い CloudFront キーペアを使用して署名された URL または Cookie の有効期限切れの日付が経過するまで待ちます。

  6. 古い CloudFront キーペアを [Inactive] に変更します。

    1. キーペアを無効にしたい AWS アカウントのルート認証情報を使用して AWS マネジメントコンソールにサインインします。

    2. [account-name] メニューで、[Security Credentials] をクリックします。

    3. [CloudFront Key Pairs] を展開します。

    4. 該当のキーペアで、[Make Inactive] をクリックします。

    5. キーペアを無効にしたい各 AWS アカウントについて、ステップ a ~ d を繰り返します。

  7. 新しいプライベートキーを使用して署名する URL または Cookie が正常に機能することを再度確認します。

  8. 古い CloudFront キーペアを削除します。

    1. セキュリティ認証情報ページに移動します。

    2. [CloudFront Key Pairs] を展開します。

    3. 該当のキーペアで、[Delete] をクリックします。

  9. 古いプライベートキーの保存場所から古いプライベートキーを削除します。