0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Signature Version 4(SigV4)概要

Posted at
  • AWS を利用していると遭遇することがある SigV4(AWS Signature Version 4)。 この仕組みについて「どのように使われ、何を保証していて、どこでハマるのか」など整理する。

1. SigV4 は何を解決する仕組みか?

AWS API では、次の 3 つが必須になる。

  1. “誰が送ったか” を証明する(真正性)
  2. リクエストが途中で改ざんされていない(完全性)
  3. 盗聴されても再送できない(リプレイ防止)

SigV4 はこの 3 つを 署名アルゴリズムによって成立させる。
AWS CLI, SDK, CDK, CloudFormation などの内部では SigV4 が利用されている。

2. SigV4 が使われる実務シーン

AWS ユーザーは、知らないうちに SigV4 に依存している(AWS API 呼び出し”が SigV4 上で動作している)。

例:

S3: 署名付き URL(Presigned URL)

  • アプリは AWS 認証情報を持たずにアップロードできる
  • URL に署名(SigV4)を埋め込む
  • 有効期限すぎたら無効 → リプレイ防止

Lambda → DynamoDB / SQS / Bedrock

  • Lambda ランタイムが自動的に SigV4 署名して AWS API を叩く。

API Gateway の IAM 認証

  • リクエストは IAM 認証を使用する場合、SigV4 署名必須。

AWS CLI の各コマンド

  • CLI は全ての API を SigV4 で署名する。

3. SigV4 と SigV4a の違い

項目 SigV4 SigV4a
方式 HMAC(対称鍵) ECDSA(非対称鍵)
リージョン依存 リージョン固定 複数リージョン対応
利用場面 標準的な単一リージョン API MRAP(Multi-Region Access Point)、グローバルサービス、フェイルオーバー
鍵管理 クライアントが秘密鍵 AWS は公開鍵のみ保持

使い分け

  • ほとんどのケース → SigV4
  • S3 Multi-Region Access Point など、リージョンに依存できない場面 → SigV4a

4. SigV4 が署名する情報

AWS はリクエストを 正規化(Canonicalization)した上で署名する。

  • HTTP メソッド

  • パス(URI)

  • クエリパラメータ(ソート・エンコード)

  • 小文字化・整形された全ヘッダ

  • ペイロードの SHA-256 ハッシュ

  • この「正規化リクエスト」をハッシュし、 アクセスキーの秘密鍵から導出した署名鍵で HMAC-SHA256 署名する。

  • AWS は受信後、同じ処理を再現し署名が一致することを確認する。


5. SigV4 のハマりポイント

SigV4 の Canonicalization(正規化)エラー。

失敗例

  • URI エンコードが 1 文字違う
  • クエリパラメータがバイト順にソートされていない
  • 余分な空白
  • ヘッダを SignedHeaders に入れ忘れる
  • STS の X-Amz-Security-Token を入れ忘れる
  • ローカルの時計がズレる(±5 分許容)

6. SigV4 署名リクエスト(AWS CLI 例)

AWS CLI に --debug をつければ、実際の署名リクエストを確認することができる。

例:

GET /my-bucket?list-type=2
Host: s3.ap-northeast-1.amazonaws.com
X-Amz-Date: 20251109T020015Z
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
Authorization: AWS4-HMAC-SHA256 \
  Credential=AKIA.../20251109/ap-northeast-1/s3/aws4_request, \
  SignedHeaders=host;x-amz-content-sha256;x-amz-date, \
  Signature=1a9ef2e...

署名の構造を理解するとデバッグが楽になる。

7. まとめ

SigV4 は、

AWS API 呼び出しの「真正性・改ざん防止・再利用防止」を低コストに成立させるための署名プロトコル

であり、 「AWS を利用する」という行為そのものを支えている基盤技術

実務では、

  • S3 署名付き URL
  • Lambda → DynamoDB
  • API Gateway IAM 認証
  • Bedrock 呼び出し
  • CLI コマンド

など 日常の多くのAWS活用場面で動いている

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?