既定ポリシーを使用する署名付き URL の作成 - Amazon CloudFront

既定ポリシーを使用する署名付き URL の作成

既定ポリシーを使用して署名付き URL を作成するには、以下の手順を実行します。

既定ポリシーを使用して署名付き URL を作成するには

  1. .NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデフォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換します。詳細については、「プライベートキーの形式の変更 (.NET および Java のみ)」 を参照してください。

  2. 以下の値を指定の順序で連結し、パート間の空白文字 (タブと改行文字を含む) を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。すべての値は文字列型です。各パートの番号 ( 
							1
						) は以下の 2 つの例の番号に対応します。

    
										1
									ファイルのベース URL

    ベース URL は、署名付き URL を使用しなかった場合にファイルへのアクセスに使用する CloudFront URL であり、独自のクエリ文字列パラメータを含みます (ある場合)。ディストリビューション用の URL 形式の詳細については、「CloudFront でファイルの URL の形式をカスタマイズする」を参照してください。

    • 以下の CloudFront URL は、ディストリビューション内のイメージファイルの URL です (CloudFront ドメイン名を使用)。image.jpgimages ディレクトリにあります。URL 内のファイルへのパスは、HTTP サーバーまたは Amazon S3 バケットのファイルへのパスに一致する必要があります。

      http://d111111abcdef8.cloudfront.net/images/image.jpg

    • 以下の CloudFront URL には、クエリ文字列が含まれます。

      http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • 以下の CloudFront URL は、ディストリビューション内のイメージファイルの URL です。両方の URL で代替ドメイン名が使用されており、2 番目の URL にはクエリ文字列が含まれています。

      http://www.example.com/images/image.jpg

      http://www.example.com/images/image.jpg?color=red

    • 以下の CloudFront URL は、代替ドメイン名と HTTPS プロトコルを使用するディストリビューション内のイメージファイルの URL です。

      https://www.example.com/images/image.jpg

    
										2
									?

    ? は、クエリ文字列パラメータがベース URL の後に続いていることを示します。独自のクエリ文字列パラメータがない場合も ? を含めます。

    
										3
									クエリ文字パラメータ (ある場合) &

    この値はオプションです。独自のクエリ文字列パラメータ、たとえば次のクエリ文字列パラメータを追加すると仮定します。

    color=red&size=medium

    この場合、 ? ( 
											2
										を参照) の後、かつ Expires パラメータの前にこのパラメータを追加します。特定のまれな状況では、Key-Pair-Id の後にクエリ文字列パラメータを配置する必要があります。

    重要

    パラメータに ExpiresSignature、または Key-Pair-Id という名前を付けることはできません。

    独自のパラメータを追加する場合は、最後のパラメータを含め、各パラメータの後に & を付加します。

    
										4
									Expires= Unix 時間形式 (秒単位) および協定世界時 (UTC) の日時

    URL によるファイルへのアクセスの許可を停止する日付と時刻。

    有効期限切れ日時を Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。たとえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。エポック時間を使用するには、日付に 2147483647 (2038 年 1 月 19 日 03:14:07 UTC) より前の 32 ビット整数を使用します。UTC の詳細については、RFC 3339, Date and Time on the Internet: Timestamps (https://tools.ietf.org/html/rfc3339) を参照してください。

    
										5
									&Signature=ハッシュ化および署名されたバージョンのポリシーステートメント

    ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステートメント。詳細については、「既定ポリシーを使用する署名付き URL の署名の作成」 を参照してください。

    
									6
								&Key-Pair-Id=署名の生成に使用しているプライベートキーに対応する CloudFront パブリックキーのパブリックキー ID

    CloudFront パブリックキーの ID (K2JCJMDEHXQW5F など)。パブリックキー ID は、署名付き URL の検証に使用するパブリックキーを CloudFront に通知します。CloudFront は、署名内の情報をポリシーステートメント内の情報と比較して、URL が改ざんされていないことを確認します。

    このパブリックキーは、ディストリビューションの信頼された署名者であるキーグループに属している必要があります。詳細については、「署名付き URL と署名付き Cookie を作成できる署名者の指定」 を参照してください。

署名付き URL の例:


					1
				http://d111111abcdef8.cloudfront.net/image.jpg 
					2
				? 
					3
				color=red&size=medium& 
					4
				Expires=1357034400 
					5
				&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 
					6
				&Key-Pair-Id=K2JCJMDEHXQW5F

既定ポリシーを使用する署名付き URL の署名の作成

既定ポリシーを使用する署名付き URL の署名を作成するには、以下の手順を実行します。

  1. ポリシーステートメントを作成します。「既定ポリシーを使用する署名付き URL のポリシーステートメントの作成」を参照してください。

  2. ポリシーステートメントに署名して、署名を作成します。「既定ポリシーを使用する署名付き URL の署名の作成」を参照してください。

既定ポリシーを使用する署名付き URL のポリシーステートメントの作成

既定ポリシーを使用して署名付き URL を作成する場合、Signature パラメータは、ポリシーステートメントのハッシュ化および署名されたバージョンです。カスタムポリシーを使用する署名付き URL とは異なり、既定ポリシーを使用する署名付き URL では、URL にポリシーステートメントを含めません。ポリシーステートメントを作成するには、以下の手順を実行します。

既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには

  1. 以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築します。すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。Resource および DateLessThan パラメータの詳細については、「既定ポリシーを使用する署名付き URL のポリシーステートメントで指定する値」を参照してください。

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. ポリシーステートメントからすべての空白文字 (タブと改行文字を含む) を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。

既定ポリシーを使用する署名付き URL のポリシーステートメントで指定する値

既定ポリシーのポリシーステートメントを作成する場合、以下の値を指定します。

リソース
注記

Resource の日付形式は 1 つだけ指定できます。

クエリ文字列 (ある場合) が含まれるベース URL。ただし、CloudFront の ExpiresSignature、および Key-Pair-Id パラメータが除外されます。次に例を示します。

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

次の点に注意してください。

  • プロトコル – 値は http:// または https:// で始まっている必要があります。

  • クエリ文字列パラメータ – クエリ文字列パラメータがない場合は、疑問符を省略します。

  • 代替ドメイン名 – URL で代替ドメイン名 (CNAME) を指定する場合は、ウェブページまたはアプリケーション内のファイルを参照するときに代替ドメイン名を指定する必要があります。オブジェクトの Amazon S3 URL を指定しないでください。

DateLessThan

URL の有効期限切れ日時。Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。たとえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。

この値は、署名付き URL 内の Expires クエリ文字列パラメータの値と一致する必要があります。値を引用符で囲まないでください。

詳細については、「CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング」 を参照してください。

既定ポリシーを使用する署名付き URL のポリシーステートメントの例

署名付き URL 内の既定ポリシーの以下のポリシーステートメントの例を使用すると、ユーザーは、UTC の 2013 年 1 月 1 日午前 10 時 00 分までファイル http://d111111abcdef8.cloudfront.net/horizon.jpg にアクセスできます。

{ "Statement": [ { "Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

既定ポリシーを使用する署名付き URL の署名の作成

署名付き URL の Signature パラメータの値を作成するには、「既定ポリシーを使用する署名付き URL のポリシーステートメントの作成」で作成したポリシーステートメントをハッシュ化して署名します。

ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例については、以下の各資料を参照してください。

オプション 1: 既定ポリシーを使用して署名を作成するには

  1. 既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには」の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用してハッシュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。

    ハッシュ関数に必要なプライベートキーには、対応するパブリックキーがディストリビューション内のアクティブな信頼されたキーグループにあるものを使用してください。

    注記

    ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコード例」を参照してください。

  2. ハッシュ化および署名された文字列から、空白文字 (タブや改行文字を含む) を削除します。

  3. MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細については、RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message BodiesSection 6.8, Base64 Content-Transfer-Encoding を参照してください。

  4. URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文字を示します。

    無効な文字 (置換元) 有効な文字 (置換先)

    +

    - (ハイフン)

    =

    _ (下線)

    /

    ~ (チルダ)

  5. 結果の値を署名付き URL の &Signature= の後に付加し、「既定ポリシーを使用して署名付き URL を作成するには」に戻って、署名付き URL の各パートの連結を終了します。