🐡
Cloud Storageで署名付きURLの作成
署名付きURLを生成する方法
署名方式 | 備考 |
---|---|
サービスアカウント認証によるV4署名 | |
サービスアカウント認証によるV2署名 | レガシーメカニズム・非推奨 |
HMAC認証による署名 |
プログラム(go)から署名付きURL発行してみるよ
CloudStorage
コンソールでぽちぽちと…
作成後Objectを1つおいておきます。
バケット名:public-image-smpeotn
Object:IMG_3766.JPG
※ 署名付きURLでアクセスするのでインターネット非公開です!
サービスアカウント
V4署名をするためにサービスアカウントを準備しておきます。
IAM > サービスアカウント > 作成 > 新しい鍵を作成
- 発行したキーはJSON形式でDLしておいてください(credentials.json)
- キーを適切な場所に配置(便宜上HomeDirにおいたことにします)
GOOGLE_APPLICATION_CREDENTIALS
に フルパスを設定します
export GOOGLE_APPLICATION_CREDENTIALS=/User/smpeotn/credentials.json
サンプルコード
公式のサンプルコード ほぼそのままですが…
object
expiresTime < 検証のため3分にしてる
参考:https://cloud.google.com/storage/docs/access-control/signing-urls-with-helpers?hl=ja#storage-signed-url-object-go
実行
-> % go run main.go
https://storage.googleapis.com/public-image-smpeotn/IMG_3766.JPG?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=storage-access%40smpeotn-cdn.iam.gserviceaccount.com%2F20230621%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20230621T154017Z&X-Goog-Expires=179&X-Goog-Signature=391cf233ed1d16dc7dbc2e3caaf0ae47e16eeb053e20e660cac5bab386096df4a843b24474e67aeb674ef4f4b2363c2d06e176f9477f578242a51a059c0c6725b207ee788211ba6b708520d2b813b0ba3a98c8860afed10660172e984703758ef32a53e390c830c6b7c77820177708490bef75da0ab0feeda2cf44ee487103ad81d9f19c009a07b77e149228667d559e9670c358887d2285a9236b199063f999da6253075f4b7947578b1ce7aedc673b2df3b270ed07f1ccb642be707b6eecfe0f7868d725e84b95706019012670f41416759d42c2d9c2decf40a613ddb2ab6cbb8c1ff66037382c525bd506f88bbefb33aeb2307d2c3ac6d1a85791132b8b08&X-Goog-SignedHeaders=host
こんな感じで署名付きURLが発行されます!
認証していないシークレットブラウザでアクセスしてもこの通りインターネットからアクセス可能になります!!
期限が切れるとExpireしたよって教えてくれます
まとめ
比較的簡単に署名付きURLを発行することができました!
毎回URL発行していると計算コストがあがりそうなので使い所は選ばないといけないかなと思います。
CloudCDNとか使うと良いのかもしれないですね。次回検証してみます!!
Discussion