GCSのオブジェクトデータをgmailアドレスで共有


| 3 min read | engineering gcp gcs iam

概要としては、google cloud storage(gcs)やgcp projectに閲覧権限を付与したアカウントにログインした状態で認証付きURLからアクセスすれば閲覧できる。また、その際、期限つきURLが発行され、そちらにリダイレクトされる

権限は、iamにstorage viewerの権限を付与するか、オブジェクト(≒ファイル)やバケットに対して権限を付与するとよい。この記事ではこの部分の手順は省略する

おそらくgoogle認証のみ可能なので、gmailのアドレスの必要がある。iamのため、共有設定するアドレスはドメインでも個人のアドレスでも可能である。限定公開の時の選択肢になりうる

準備

consoleのgcsの画面から適当なバケットを作成し、適当なオブジェクト(ファイル)を設置する

オブジェクト詳細画面からAuthenticated URL(認証付きURL)を確認できる

gcs-object-details

URLは以下のようになる

https://storage.cloud.google.com/{bucket_name}/{object_name}?authuser=1

アクセスすると、期限付きのURLにリダイレクトされる

ちなみにリダイレクト先のURLは以下。バケットとオブジェクト名が入りつつ、とても長いquery stringがついてくる(ここではquery stringは省略している)

https://ff79bdef1e1f8dd606acb4c456d6a0986d166448a839784730d87fa-apidata.googleusercontent.com/download/storage/v1/b/dbt-docs-storage/o/static_index.html?...

期限つきURL

リダイレクト先URLは有効期限がある。手動で確認したところ15 minのよう

16:36にGCSのオブジェクト詳細画面からアクセスしたURL(のリダイレクト先URL)に対して、しばらくすると Locked Domain Expired: Not valid after 2025-10-16T07:51:21.388+00:00 と表示された

access expired view

共有できるのは基本的に単一ファイルとなる。dbt docsのstatic pageのような単一のHTMLは問題なく閲覧できる。相対パスなどでCSS等を読み込むWebサイトでは、リソース取得時に認証が引き継がれないため正しく表示されない

また、調べた範囲、このリダイレクト先のURLの構成はどういうものかはわからなかった。検索すると署名つきURLの説明が出てくるがURLの構成が異なる

https://docs.cloud.google.com/storage/docs/access-control/signed-urls?hl=ja#example