AWS API リクエストの署名
AWS SDK または AWS コマンドラインツールを使用して AWS に API リクエストを送信する場合、これらのツールが API リクエストに署名してくれます。AWS API リクエストの送信に AWS SDK または AWS コマンドラインツールを使用しない場合、このドキュメントで説明されている AWS API リクエストのみに署名する必要があります。
AWS に API リクエストを送信ときは、誰がそれらを送信したかを AWS が特定できるように、リクエストに署名してください。セキュリティ上の理由から、ほとんどのリクエストは AWS セキュリティ認証情報を使用して署名されます。詳細については、「プログラム的なアクセス」を参照してください。
AWS のサービス が認証されたリクエストを受け取ると、リクエストに含まれる認証情報を使用して署名を再作成します。署名が一致すると、サービスはリクエストを処理します。それ以外の場合、リクエストを拒否します。
署名バージョン 4 は、AWS 署名プロトコルです。AWS は、マルチリージョン API リクエストの署名をサポートする署名バージョン 4A という拡張機能もサポートしています。詳細については、GitHub で「sigv4a-signing-examples
リクエストに署名するタイミング
AWS に API リクエストを送信するためのカスタムコードを記述するときは、リクエストに署名するためのコードを含める必要があります。カスタムコードを書く理由は次のとおりです。
-
AWS SDK がないプログラミング言語を使用しているためです。
-
AWS にリクエストを送る方法を完全に管理する必要がある場合。
リクエストに署名する理由
署名プロセスは、次のような点でリクエストのセキュリティ確保に役立ちます。
-
リクエスタの ID の確認
有効なアクセスキーを持っている人がリクエストを送る必要があります。
-
送信中のデータの保護
送信中のリクエストの改ざんを防ぐために、一部のリクエスト要素からリクエストのハッシュ (ダイジェスト) を計算し、得られたハッシュ値をリクエストの一部として含めます。AWS のサービス がリクエストを受け取ると、同じ情報を使用してハッシュを計算し、リクエストに含まれているハッシュ値と比較します。ハッシュ値が一致しない場合、AWS はそのリクエストを拒否します。
-
潜在的なリプレイ攻撃の防止
多くの場合、リクエストは、リクエストのタイムスタンプの 5 分以内に AWS に到達する必要があります。その条件を満たさない場合、AWS はリクエストを拒否します。