署名付き URL でらくらく共有!
最初に…署名付き URL って?
- Wasabi Hot Cloud Storage のバケットは基本プライベートですが、署名付き URL を利用することで、指定した時間内だけ指定したファイル(オブジェクト)を任意の人へ共有できる
- 共有できるのは最長12時間
- バケットのアクセス権(アクセスキー ID やシークレットキー)は渡したくないけど、一時的にファイル ( オブジェクト ) を共有、公開したいときに便利
とりあえずやってみる
Wasabi コンソールにログインして、共有したいファイル ( オブジェクト ) の3点ボタンを選択して、「署名付き URL で共有」を選択します。

そうすると、以下のような画面がでてきますので、共有したい時間と分を設定して、「署名付き URL の作成」を実行します。

そうすると以下の画面が出てきます。表示された URL をコピーして閉じます。

この署名付き URL は作成した上記の段階でのみコピー可能です
それでは作成した署名付き URL にアクセスしてみましょう。ブラウザのロケーションバーに入力してみてみます。

共有したのは前回のブログのアイキャッチ画像ですが、問題なくアクセスして表示できますね。

当然ながら Excel ファイルとかを URL にして共有することも可能です。
バケット内に対するアクセスは渡したくないけど、一部ファイルを共有するには便利な機能ですね。
そもそも署名付き URL とはなんぞや?
署名付き URL の動作を確認するだけでは文字数を稼げないので、そもそも署名付き URL とはなんだ?という点を確認していきたいと思います!
先ほど、ブラウザのロケーションバーに入力した URL をみましたか?とても長いですよね?長いのには理由があります。一つ一つみていきましょう。
URLの中身
長い URL を一つ一つ見ていきたいと思います。
エンドポイント、バケット、オブジェクト
最初の https://s3.ap-northeast-1.wasabisys.com/ はエンドポイント部分になります。これはWasabiストレージの東京リージョン(ap-northeast-1)を指しています。
backupuser-uploader001-002 はバケット名です。先ほどの Wasabi コンソールを見ていただくと、このバケット内のファイル ( オブジェクト ) を指定しているのがわかります。
MUA.png はオブジェクトの名前です。これはわかりやすい。
つまり、ここまでを合わせると、

https://s3.ap-northeast-1.wasabisys.com/backupuser-uploader001-002/MUA.png
となるわけね。。。その後ろが長いわけね。なぜかしら。
クエリパラメーター
ここから先が署名 URL の大事なところです。一般的にクエリパラメーターといわれている部分に署名が入ってきます。
書かれている内容が長いので、ひとまず、クエリパラメーターで指定されているパラメーターがなんなのかを確認します。指定されているパラメーターは以下です。
- X-Amz-Algorithm
- 署名計算に利用したアルゴリズム
- X-Amz-Content-Sha256
- リクエストのボディの内容をどのように扱うか、またはその内容のハッシュ値
- X-Amz-Credential
- アクセスキー ID、署名の有効範囲
- X-Amz-Date
- ISO 8601 規格に準拠した日付と時刻
- X-Amz-Expires
- 署名付き URL の有効期限
- X-Amz-Signature
- リクエストを認証するための署名
- X-Amz-SignedHeaders
- 署名の計算に使用したヘッダーの一覧
これだけのパラメーターが指定されています。 Amz と書かれていますね。 Wasabi Hot Cloud Storage は S3 互換のオブジェクトストレージなので、Amazon S3 と同じ形式を利用していることがわかります。実際にこれらのパラメーターは Amazon Web Services のドキュメントで解説があります。原文は以下に記載があります。
Authenticating Requests: Using Query Parameters (AWS Signature Version 4)
今回の場合
X-Amz-Algorithm | AWS4-HMAC-SHA256 |
アルゴリズムは HMAC-SHA256 が利用されていますね。
X-Amz-Content-Sha256 | UNSIGNED-PAYLOAD |
UNSIGNED-PAYLOADとなっていますね、これはリクエストのボディは署名計算に含まないことを意味しています。
X-Amz-Credential | BL8XW68BT6Q5XP6Y7MSD%2F20250417%2Fap-northeast-1%2Fs3%2Faws4_request |
%2F
は /
がURLエンコードされたものなので、デコードすると BL8XW68BT6Q5XP6Y7MSD/20250417/ap-northeast-1/s3/aws4_request となります。
BL8XW68BT6Q5XP6Y7MSD
: アクセスキーID です。このURLを生成したユーザーを識別します。ストレージ側はこのIDを見て、対応する鍵(シークレットアクセスキー)を使って署名を検証します。つまり、署名作成時 ( URL 作成時 ) に鍵 (シークレットアクセスキー) をもちいて署名しているわけです。 20250417/ap-northeast-1/s3/aws4_request
: 署名が有効な日付、リージョン、サービス、リクエストタイプが含まれています。これらも署名検証に使われます。
X-Amz-Date | 20250417T062638Z |
URLが生成された(署名が計算された)日時をUTC(協定世界時)で示します。
X-Amz-Expires | 7200 |
このURLの有効期間を秒単位で示します。7200
秒は 2時間 です。つまり、このURLは X-Amz-Date
の時刻からの有効期限です。
X-Amz-Signature | b1dc~5b ( と長い 16進数 ) |
これが計算された署名です。アクセスキーID BL8XW68BT6Q5XP6Y7MSD
に紐づく鍵(シークレットアクセスキーこれはURLには現れません)と、他のパラメータ(アルゴリズム、日付、リクエスト内容など)を使って計算された値です。署名の計算は以下が詳しく書かれています。
AWS – 署名付き AWS API リクエストを作成する – 署名を計算する
X-Amz-SignedHeaders | host |
署名の計算にどのHTTPヘッダーを含めたかを示します。ここでは Host
ヘッダー (s3.ap-northeast-1.wasabisys.com
) が計算に含まれたことを意味します。
つまり

このURLは、「アクセスキーID BL8XW68BT6Q5XP6Y7MSD
を持つユーザーが、特定の日時(X-Amz-Date
)に、Wasabiの東京リージョンにある backupuser-uploader001-001
バケットの b1dc~5b
というオブジェクトを取得を時間限定(X-Amz-Expires=7200
)で与えていて、その正当性は X-Amz-Signature
によって担保し、ストレージ側は対応する鍵 (シークレットキー) を使ってこれを検証するってことね!
簡単にファイルを共有していると思ったら、本来必要な鍵 ( シークレットキー ) を渡すことなく、署名という仕組みにより、その正当性を担保して、かつ、時間制限のなかでアクセスできるようにしているんですね。ただ、この URL を意図しない公開をすると任意でアクセスできるため、公開する場所や人については十分に注意したほうがよさそうですね。
ちなみに署名なし URL であくせすると、、以下のようにちゃんとアクセスを防いでくれます。

まとめ
- 署名付き URL における X-Amz-Signature の値により、その URL の正当性を担保してアクセスを許可することになります。
- 作成時
- URLを作成する人が、自身のシークレットアクセスキー(鍵)とリクエスト内容(どのファイルに、何をするか、いつまで有効か等)を使って、署名 (Signature) を計算します。(ブラウザ上で作成するときにはこのような面倒なことは勝手にサービス側がやってくれます!)
- 利用時
- 作成された署名付きURLを、アクセスが必要な第三者に渡します。第三者は、特別な認証情報なしに、そのURLにアクセスするだけです。
- 検証・アクセス時
- ストレージ側は、アクセスされた署名付きURLを受け取ります。
- URL内の情報を元に、内部で対応するシークレットアクセスキーを使って、署名を再計算します。
- URLに付与されていた署名と、ストレージ側が再計算した署名が一致し、かつ有効期限内であれば、「このリクエストは正当なものだ」と判断します。
- 検証が成功すれば、URLにアクセスできます。
- 作成時
- 署名付き URL は URL がわかればだれでもアクセスできてしまう。
上記を頭の片隅にいれて、便利に署名付き URL を利用しましょう!
なお Wasabi Hot Cloud Storage について詳しく知りたい、導入したい場合は株式会社 BitoB までお気軽にお問合せくださいませ。
(長い URL ね。。。。。)