AWS API リクエストの署名 - AWS 全般のリファレンス

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 はリクエストを拒否します。