認証方法 - AWS Identity and Access Management

認証方法

重要

AWS SDK または CLI を使用していない限り、リクエストの認証情報を提供する署名を計算するコードを記述する必要があります。AWS Signature Version 4 での署名計算は複雑な作業になる場合があるため、可能な限り AWS SDK または CLI を使用することをお勧めします。

認証情報は、次のいずれかの方法で表現できます。

HTTP 認証ヘッダー

HTTP Authorization ヘッダーはリクエストを認証する最も一般的な方法です。すべての REST API 操作 (POST リクエストを使用したブラウザベースのアップロードを除く) には、このヘッダーが必要です。認証ヘッダー値、署名の計算方法、および関連オプションの詳細については、「Amazon S3 API リファレンス」の「リクエストの認証: 認証ヘッダーの使用 (AWS Signature Version 4)」を参照してください。

以下は、Authorization ヘッダー値の例です。この例では、読みやすいように改行が追加されています。コードでは、ヘッダーは連続した文字列である必要があります。アルゴリズムと認証情報の間にカンマはありませんが、他の要素はカンマで区切る必要があります。

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

次の表では、前述の例にある認証ヘッダー値のさまざまなコンポーネントについて説明しています。

コンポーネント 説明

認証

署名の計算に使用されたアルゴリズム。認証に AWS Signature Version 4 を使用する場合、この値を指定する必要があります。文字列は AWS Signature Version 4 (AWS4) と署名アルゴリズム (HMAC-SHA256) を指定します。

Credential

アクセスキー ID と、署名の計算に使用された日付、リージョン、およびサービスを含むスコープ情報。

この文字列の形式は次のとおりです。

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

Where: <date> 値は YYYYMMDD 形式で指定されます。Amazon S3 にリクエストを送信するときの <aws-service> 値は s3 です。

SignedHeaders

Signature の計算に使用したリクエストヘッダーをセミコロンで区切ったリスト。リストにはヘッダー名のみが含まれており、ヘッダー名は小文字である必要があります。例: host;range;x-amz-date

署名

64 個の小文字の 16 進数文字で表現される 256 ビットの署名。以下に例を示します。fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

署名計算は、ペイロードの転送に選択したオプションによって異なります。

クエリ文字列パラメータ

クエリ文字列を使用すると、リクエスト全体を URL で表現できます。この場合、クエリパラメータを使用して、認証情報を含むリクエスト情報を提供します。リクエスト署名は URL の一部であるため、この種類の URL は署名付き URL と呼ばれることがよくあります。署名付き URL を使用して、クリック可能なリンクを HTML に埋め込むことができます。このリンクは最大 7 日間有効です。詳細については、「Amazon S3 API リファレンス」の「リクエストの認証: クエリパラメータの使用 (AWS Signature Version 4)」を参照してください。

署名付き URL の例を次に示します。この例では、読みやすいように改行が追加されています。

https://s3.amazonaws.com/examplebucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
注記

URL 内の X-Amz-Credential 値には、読みやすさのためにのみ挿入された「/」文字が表示されています。実際には、%2F としてエンコードする必要があります。例:

&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request

次の表では、認証情報を提供する URL 内のクエリパラメータについて説明します。

クエリ文字列パラメータ名 説明

X-Amz-Algorithm

AWS Signature のバージョンと、署名の計算に使用したアルゴリズムを識別します。AWS Signature Version 4 では、このパラメータ値を AWS4-HMAC-SHA256 に設定します。この文字列は、AWS Signature Version 4 (AWS4) および HMAC-SHA256 アルゴリズム (HMAC-SHA256) を識別します。

X-Amz-Credential

このパラメータは、アクセスキー ID の他に、署名が有効なスコープ (AWS リージョンおよびサービス) も指定します。この値は、次のセクションで説明する署名計算で使用するスコープと一致する必要があります。

このパラメータ値の一般的な形式は次のとおりです。

<your-access-key-id>/<date>/<AWS Region>/<AWS-service>/aws4_request

例: AKIAIOSFODNN7EXAMPLE/20130721/us-east-1/s3/aws4_request

AWS リージョン文字列のリストについては、「AWS 全般のリファレンス」の「リージョンのエンドポイント」を参照してください。

X-Amz-Date

日付と時刻の形式は ISO 8601 規格に準拠している必要があるため、yyyyMMddTHHmmssZ 形式でフォーマットする必要があります。例えば、日付と時刻が「08/01/2016 15:32:41.982-700」の場合、まず UTC (協定世界時) に変換してから「20160801T223241Z」として送信する必要があります。

X-Amz-Expires

生成された署名付き URL が有効な期間を秒単位で指定します。例えば、86400 (24 時間) と指定します。この値は整数です。設定できる最小値は 1 で、最大値は 604800 (7 日間) です。署名計算に使用する署名キーは最大 7 日間有効であるため、署名付き URL は最大 7 日間有効です。

X-Amz-SignedHeaders

署名の計算に使用したヘッダーを一覧表示します。署名計算には次のヘッダーが必要です。

  • HTTP ホストヘッダー。

  • リクエストに追加する予定のすべての x-amz-* ヘッダー。

セキュリティの強化のために、リクエストに含める予定のすべてのリクエストヘッダーに署名する必要があります。

X-Amz-Signature

リクエストを認証するための署名を指定します。この署名は、サービスが計算する署名と一致する必要があります。一致しない場合、サービスはリクエストを拒否します。例えば、733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

署名計算については、次のセクションで説明します。

X-Amz-Security-Token

STS サービスから取得した認証情報を使用する場合のオプションの認証情報パラメータ。