署名付き URL と署名付き Cookie を作成できる署名者を指定する
トピック
署名付き URL または署名付き Cookie を作成するには、署名者が必要です。署名者は、CloudFront で作成した信頼されたキーグループ、または CloudFront のキーペアを含む AWS アカウントのいずれかです。署名付き URL と署名付き Cookie が有効な信頼されたキーグループを使用することをお勧めします。詳細については、「信頼されたキーグループ (推奨) と AWS アカウントのいずれかを選択する」を参照してください。
署名者には 2 つの目的があります。
-
署名者をディストリビューションに追加するとすぐに、ビューワーからファイルへのアクセスには、署名付き URL または署名付き Cookie の使用が CloudFront によって求められるようになります。
-
署名付き URL または署名付き Cookie を作成するときは、署名者のキーペアのプライベートキーを使用して URL または Cookie に署名します。制限されたファイルがリクエストされると、CloudFront は URL または Cookie の署名を署名のない URL または Cookie と比較し、改ざんされていないことを確認します。CloudFront は、URL または Cookie が有効であることも確認します。たとえば、有効期限切れ日時が経過していないことを確認します。
署名者を指定するときは、署名者をキャッシュ動作に追加することにより、署名付き URL または署名付き Cookie を必要とするファイルも間接的に指定します。ディストリビューションのキャッシュ動作が 1 つしかない場合、ビューワーはディストリビューション内のファイルへのアクセスに、署名付き URL または署名付き Cookie の使用を求められます。複数のキャッシュ動作を作成して、署名者を一部のキャッシュ動作に追加し、それ以外のキャッシュ動作に追加しなかった場合、ビューワーは一部のファイルへのアクセスに、署名付き URL または署名付き Cookie の使用を求められ、その他のファイルへのアクセスには求められません。
署名付き URL または署名付き Cookie の作成を許可する署名者 (プライベートキー) を指定し、署名者を CloudFront ディストリビューションに追加するには、以下のタスクを実行します。
-
署名者として、信頼されたキーグループを使用するか、AWS アカウントを使用するかを決定します。信頼されたキーグループを使用することをお勧めします。詳細については、「信頼されたキーグループ (推奨) と AWS アカウントのいずれかを選択する」を参照してください。
-
ステップ 1 で選択した署名者に対して、パブリックとプライベートのキーペアを作成します。詳細については、「署名者のキーペアを作成する」を参照してください。
-
署名付き URL または署名付き Cookie の作成に .NET または Java を使用する場合は、プライベートキーの形式を変更します。詳細については、「プライベートキーの形式を変更する (.NET および Java のみ)」を参照してください。
-
署名付き URL または署名付き Cookie を作成するディストリビューションで、署名者を指定します。詳細については、「ディストリビューションに署名者を追加する」を参照してください。
信頼されたキーグループ (推奨) と AWS アカウントのいずれかを選択する
署名付き URL または署名付き Cookie を使用するには、署名者が必要です。署名者は、CloudFront で作成した信頼されたキーグループ、または CloudFront のキーペアを含む AWS アカウントのいずれかです。以下の理由から、信頼されたキーグループを使用することをお勧めします。
-
CloudFront キーグループでは、CloudFront の署名付き URL と署名付き Cookie のパブリックキーを管理するために AWS アカウントのルートユーザーを使用する必要がありません。AWS のベストプラクティスでは、特に必要なければルートユーザーを使用しないことが推奨されています。
-
CloudFront キーグループを使用すると、CloudFront API を使用して、パブリックキー、キーグループ、および信頼された署名者を管理できます。API を使用して、キーの作成とキーの更新を自動化できます。AWS ルートユーザーを使用する場合は、AWS Management Console を使用して CloudFront キーペアを管理する必要があるため、プロセスを自動化することはできません。
-
CloudFront API を使用してキーグループを管理できるため、AWS Identity and Access Management (IAM) の許可ポリシーを使用して、異なるユーザーに許可される操作を制限することもできます。例えば、ユーザーにパブリックキーのアップロードを許可し、削除を禁止することができます。または、ユーザーにパブリックキーの削除を許可するが、許可するのは、多要素認証の使用、特定のネットワークからのリクエストの送信、特定の日時範囲内でのリクエストの送信など、特定の条件が満たされた場合に限ることもできます。
-
CloudFront キーグループを使用すると、より多くのパブリックキーを CloudFront ディストリビューションに関連付けることができるため、パブリックキーの使用方法と管理方法をより柔軟に設定できます。デフォルトでは、最大 4 つのキーグループを 1 つのディストリビューションに関連付けることができ、キーグループには最大 5 つのパブリックキーを含めることができます。
AWS アカウントのルートユーザーを使用して CloudFront のキーペアを管理する場合は、AWS アカウントあたり最大 2 つのアクティブな CloudFront キーペアしか使用できません。
署名者のキーペアを作成する
CloudFront 署名付き URL または署名付き Cookie の作成に使用する各署名者には、パブリックとプライベートのキーペアが必要です。署名者はプライベートキーを使用して URL または Cookie に署名し、CloudFront はパブリックキーを使用して署名を検証します。
キーペアを作成する方法は、信頼されたキーグループを署名者として使用するか (推奨)、CloudFront のキーペアを使用するかによって異なります。詳細については、次のセクションを参照してください。作成するキーペアは、以下の要件を満たしている必要があります。
-
SSH-2RSA キーペアである必要があります。
-
base64 エンコードされた PEM 形式である必要があります。
-
2048 ビットのキーペアである必要があります。
アプリケーションを保護するために、キーペアを定期的に更新することをお勧めします。詳細については、「キーペアの更新」を参照してください。
信頼されたキーグループのキーペアを作成する (推奨)
信頼されたキーグループのキーペアを作成するには、以下の手順を実行します。
-
パブリックとプライベートのキーペアを作成します。
-
パブリックキーを CloudFront にアップロードします。
-
パブリックキーを CloudFront キーグループに追加します。
詳細については、次の手順を参照してください。
キーペアを作成するには
注記
以下の手順では、キーペアを作成する方法の一例として OpenSSL を使用します。RSA キーペアを作成する方法は他にも多数あります。
-
以下のコマンド例では、OpenSSL を使用して 2,048 ビット長の RSA キーペアを生成し、
private_key.pem
という名前のファイルに保存します。openssl genrsa -out private_key.pem 2048
-
生成されるファイルには、パブリックキーとプライベートキーの両方が含まれます。以下のコマンド例では、
private_key.pem
という名前のファイルからパブリックキーを抽出します。openssl rsa -pubout -in private_key.pem -out public_key.pem
後で、以下の手順でパブリックキー (
public_key.pem
ファイル内) をアップロードします。
パブリックキーを CloudFront にアップロードするには
AWS Management Consoleにサインインし、https://console.aws.amazon.com/cloudfront/v4/home
で CloudFront コンソールを開きます。 -
ナビゲーションメニューで、[Public keys (パブリックキー)] を選択します。
-
[パブリックキーを作成] を選択します。
-
[パブリックキーを作成] ウィンドウで、次の操作を行います。
-
[Key name (キー名)] に、パブリックキーを識別するための名前を入力します。
-
[Key value (キー値)] に、パブリックキーを貼り付けます。前の手順のステップに従った場合、パブリックキーは
public_key.pem
という名前のファイルにあります。パブリックキーの内容をコピーして貼り付けるには、以下の手順を実行します。-
macOS または Linux コマンドラインで cat コマンドを次のように使用します。
cat public_key.pem
そのコマンドの出力をコピーして、[Key value (キー値)] フィールドに貼り付けます。
-
メモ帳 (Windows の場合) やテキストエディット (macOS の場合) などのプレーンテキストエディタで、
public_key.pem
ファイルを開きます。ファイルの内容をコピーし、[Key value (キー値)] フィールドに貼り付けます。
-
-
(オプション) [Comment (コメント)] に、パブリックキーを説明するコメントを追加します。
完了したら、[Add (追加)] を選択します。
-
-
パブリックキー ID を記録します。この ID は、後で署名付き URL または署名付き Cookie を作成するときに、
Key-Pair-Id
フィールドの値として使用します。
パブリックキーをキーグループに追加するには
CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home
) を開きます。 -
ナビゲーションメニューで、[Key groups (キーグループ)] を選択します。
-
[Add key group (キーグループの追加)] を選択します。
-
[Create key group (キーグループの作成)] ページで、以下の手順を実行します。
-
[Key group name (キーグループ名)] に、キーグループを識別するための名前を入力します。
-
(オプション) [Comment (コメント}] に、キーグループを説明するコメントを入力します。
-
[Public keys (パブリックキー)] で、キーグループに追加するパブリックキーを選択してから、[Add (追加)] を選択します。キーグループに追加するパブリックキーごとに、このステップを繰り返します。
-
-
[Create key group (キーグループの作成)] を選択します。
-
キーグループ名を記録します。この名前は、後でキーグループを CloudFront ディストリビューションのキャッシュ動作に関連付けるときに使用します。(CloudFront API では、キーグループ ID を使用して、キーグループをキャッシュ動作に関連付けます)。
重要
ここでの手順に従う代わりに、信頼されたキーグループのパブリックキーを作成することをお勧めします。署名付き URL および署名付き Cookie のパブリックキーを作成するための推奨される方法については、「信頼されたキーグループのキーペアを作成する (推奨)」を参照してください。
CloudFront のキーペアは、次の方法で作成できます。
-
AWS Management Console でキーペアを作成し、プライベートキーをダウンロードします。後述の手順を参照してください。
-
OpenSSL などのアプリケーションを使用して RSA キーペアを作成し、パブリックキーを AWS Management Console にアップロードします。RSA キーペアの作成の詳細については、「信頼されたキーグループのキーペアを作成する (推奨)」を参照してください。
AWS Management Console で CloudFront キーペアを作成するには
-
AWS アカウントのルートユーザーの認証情報を使用して、AWS Management Console にサインインします。
重要
IAM ユーザーは CloudFront のキーペアを作成できません。キーペアを作成するには、ルートユーザーの認証情報を使用してサインインする必要があります。
-
アカウント名を選択してから、[My Security Credentials (セキュリティ認証情報)] を選択します。
-
[CloudFront のキーペア] を選択します。
-
複数のキーペアが有効になっていないことを確認します。既に 2 つのキーペアが有効になっていると、キーペアを作成できません。
-
[Create New Key Pair (新しいキーペアの作成)] を選択します。
注記
独自のキーペアを作成し、公開キーをアップロードすることもできます。CloudFront キーペアは、1024、2048、または 4096 ビットのキーをサポートします。
-
[Create Key Pair (キーペアの作成)] ダイアログボックスで、[Download Private Key File (プライベートキーファイルのダウンロード)] を選択し、ファイルをコンピュータに保存します。
重要
CloudFront のキーペアのプライベートキーを安全な場所に保存し、必要な管理者だけがそのプライベートキーを読み取ることができるようにファイルのアクセス許可を設定します。別のユーザーがこのプライベートキーを取得すると、そのユーザーは有効な署名付き URL および署名付き Cookie を生成し、コンテンツをダウンロードできます。プライベートキーを再取得することはできません。したがって、プライベートキーを削除したか失った場合は、新しい CloudFront キーペアを作成する必要があります。
-
キーペアのキーペア ID を記録しておきます (AWS Management Console ではアクセスキー ID と呼ばれます)。この情報は、署名付き URL または署名付き Cookie を作成するときに使用します。
プライベートキーの形式を変更する (.NET および Java のみ)
.NET または Java を使用して署名付き URL または署名付き Cookie を作成する場合、キーペアのプライベートキーをデフォルトの PEM 形式のまま使用して署名を作成することはできません。代わりに、以下の手順を実行します。
-
.NET Framework – .NET Framework で使用する XML 形式にプライベートキーを変換します。いくつかのツールを利用できます。
-
Java – DER 形式にプライベートキーを変換します。そのための 1 つの方法は、以下の OpenSSL コマンドを使用することです。以下のコマンドで、
private_key.pem
は PEM 形式のプライベートキーを含むファイルの名前であり、private_key.der
はコマンドの実行後に DER 形式のプライベートキーを含むファイルの名前です。openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out
private_key.der
-outform DERエンコーダーが正常に機能するように、Bouncy Castle の Java 用暗号 API の JAR をプロジェクトに追加してから Bouncy Castle プロバイダーを追加します。
ディストリビューションに署名者を追加する
署名者は、ディストリビューション用の署名付き URL と署名付き Cookie を作成できる、信頼されたキーグループ (推奨) または CloudFront キーペアです。署名付き URL または署名付き Cookie を CloudFront ディストリビューションで使用するには、署名者を指定する必要があります。
署名者はキャッシュ動作に関連付けられています。これにより、同じディストリビューション内で、一部のファイルに署名付き URL または署名付き Cookie を要求し、その他のファイルには要求しないということが可能になります。ディストリビューションでは、対応するキャッシュ動作に関連付けられているファイルにのみ、署名付き URL または Cookie が必要です。
同様に、署名者は、対応するキャッシュ動作に関連付けられているファイルの URL または Cookie にのみ署名できます。例えば、1 つのキャッシュ動作に対して 1 つの署名者があり、別のキャッシュ動作に対して別の署名者がある場合、どちらの署名者も、もう一方のキャッシュ動作に関連付けられたファイルに対して署名付き URL または署名付き Cookie を作成できません。
重要
ディストリビューションに署名者を追加する前に、以下の手順を実行します。
-
キャッシュ動作のパスパターンとキャッシュ動作のシーケンスを慎重に定義して、ユーザーにコンテンツへの意図しないアクセスを許可したり、すべてのユーザーを対象としたコンテンツへのアクセスを禁止したりしないようにします。
たとえば、リクエストが、2 つのキャッシュ動作のパスパターンに一致したと仮定します。最初のキャッシュ動作は署名付き URL または署名付き Cookie を要求しませんが、2 番目のキャッシュ動作はこれらを要求します。ユーザーは署名付き URL または署名付き Cookie を使用せずにファイルにアクセスできます。これは、CloudFront が、最初の一致に関連付けられたキャッシュ動作を処理するためです。
パスパターンの詳細については、「パスパターン」を参照してください。
-
コンテンツの配信に既に使用しているディストリビューションの場合は、署名者を追加する前に、署名付き URL と署名付き Cookie の生成を開始する準備ができていることを確認してください。署名者を追加すると、CloudFront は有効な署名付き URL または署名付き Cookie を含まないリクエストを拒否します。
CloudFront コンソールまたは CloudFront API を使用して、署名者をディストリビューションに追加できます。
キーペアの更新
署名付き URL と署名付き Cookie のキーペアを定期的に更新 (変更) することをお勧めします。有効期限がまだ切れていない URL または Cookie を無効にすることなく、署名付き URL または署名付き Cookie の作成に使用しているキーペアを更新するには、以下のタスクを実行します。
-
新しいキーペアを作成し、パブリックキーをキーグループに追加します。詳細については、「信頼されたキーグループのキーペアを作成する (推奨)」を参照してください。
-
前の手順で新しいキーグループを作成した場合は、キーグループを署名者としてディストリビューションに追加します。
重要
キーグループから既存のパブリックキーを削除したり、ディストリビューションからキーグループを削除したりしないでください。新規追加のみを行ってください。
-
新しいキーペアのプライベートキーを使用して署名を作成するようにアプリケーションを更新します。新しいプライベートキーで署名された URL または Cookie が機能することを確認します。
-
以前のプライベートキーを使用して署名付き URL または Cookie の有効期限切れ日時が経過するまで待ちます。次に、古いパブリックキーをキーグループから削除します。ステップ 2 で新しいキーグループを作成した場合は、ディストリビューションから古いキーグループを削除します。