View a markdown version of this page

リクエストの認証: POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード - Amazon Simple Storage Service

リクエストの認証: POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード

Amazon S3 は HTTP POST リクエストをサポートしているため、ユーザーはコンテンツを Amazon S3 に直接アップロードできます。Amazon S3 にデータを保存するために HTTP POST を使用してコンテンツをアップロードすると、簡単にアップロードでき、アップロードのレイテンシーが低減されます。このセクションでは、HTTP POST リクエストを認証する方法について説明します。HTTP POST リクエスト、フォームの作成方法、POST ポリシーの作成方法、および例の詳細については、「POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード」を参照してください。

HTTP POST リクエストを認証するには、次の手順を実行します。

  1. Amazon S3 がリクエストを受信したときに、署名を再計算するために使用できる署名および関連情報を提供するために、フォームには次のフィールドが含まれている必要があります。

    要素名 説明
    policy

    リクエストで許可されているものについて説明する Base64 でエンコードされたセキュリティポリシー。署名の計算において、このポリシーが署名対象となる文字列です。Amazon S3 は署名を再計算できるように、このポリシーを取得する必要があります。

    x-amz-algorithm

    使用される署名アルゴリズムです。AWS 署名バージョン 4 の場合、値は AWS4-HMAC-SHA256 です。

    x-amz-credential

    アクセスキー ID に加えて、署名計算用の署名キーの計算に使用したスコープ情報を提供します。

    これは、次のような形式の文字列です。

    <your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

    例えば、次のようになります。

    AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request. .

    Amazon S3 の場合、aws-service 文字列は s3 です。Amazon S3 aws-region 文字列のリストについては、「AWS 全般のリファレンス」の「リージョンとエンドポイント」を参照してください。

    x-amz-date

    ISO8601 形式の日付値です。例えば、20130728T000000Z

    署名キーの作成に使用したのと同じ日付です。これは、署名したポリシー (x-amz-date) で指定した値と同じである必要があります。

    x-amz-signature

    (AWS 署名バージョン 4) セキュリティポリシーの HMAC-SHA256 ハッシュ。

    署名のオプションの詳細については、「AWS 全般のリファレンス」の「HTTP リクエストに署名を追加する」を参照してください。

  2. POST ポリシーには以下の要素が含まれます。

    要素名 説明
    x-amz-algorithm

    署名の計算に使用した署名アルゴリズム。AWS 署名バージョン 4 の場合、値は AWS4-HMAC-SHA256 です。

    x-amz-credential

    アクセスキー ID に加えて、署名計算用の署名キーの計算に使用したスコープ情報を提供します。

    これは、次のような形式の文字列です。

    <your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

    例えば、

    AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request. .

    x-amz-date

    ISO8601 形式の文字列で指定された日付値。例えば、「20130728T000000Z」。日付は、署名計算用の署名キーの作成に使用した日付と同じである必要があります。

  3. 署名の計算において、POST ポリシーが署名する文字列です。

署名の計算

次の図は、署名計算プロセスを示しています。

StringToSign、SigningKey、および Signature ステップを使用した AWS 署名計算プロセス。

署名を計算するには
  1. UTF-8 エンコーディングを使用してポリシーを作成します。

  2. UTF-8 エンコードされたポリシーを Base64 に変換します。その結果が、署名する文字列です。

  3. 署名する文字列の HMAC-SHA256 ハッシュとして署名を作成します。署名キーをハッシュ関数のキーとして提供します。

  4. 16 進エンコードを使用して署名をエンコードします。

HTML フォーム、セキュリティポリシー、および例の作成の詳細については、次のサブトピックを参照してください。