V4 署名は、Cloud Storage の XML API リクエストで認証用の署名を生成するためのプロセスです。このページでは、gsutil と Cloud Storage のクライアント ライブラリを使用して署名付き URL を作成する方法について説明します。署名付き URL では、特定の Cloud Storage リソースへの読み取りまたは書き込みを期限付きで行うことができます。署名付き URL を作成する独自のプログラムを作成する場合は、独自のプログラムを使用した V4 署名をご覧ください。
オブジェクトをダウンロードする署名付き URL の作成
バケットからオブジェクトを取得できる署名付き URL を作成するには、次の手順を行います。
gsutil
新しい秘密鍵を生成するか、サービス アカウント用の既存の秘密鍵を使用します。鍵は、JSON 形式か PKCS12 形式のものを使用できます。
秘密鍵とサービス アカウントについて詳しくは、サービス アカウントをご覧ください。
gsutil signurl
コマンドを使用して、前の手順の秘密鍵のパス、バケット名、オブジェクト名を渡します。たとえば、次のコマンドでは、フォルダ
Desktop
に保存されている鍵を使用して、オブジェクトcat.jpeg
を 10 分間ユーザーが参照できるようにするための署名付き URL が生成されます。gsutil signurl -d 10m Desktop/private-key.json gs://example-bucket/cat.jpeg
成功すると、レスポンスは次のようになります。
URL HTTP Method Expiration Signed URL gs://example-bucket/cat.jpeg GET 2018-10-26 15:19:52 https://storage.googleapis. com/example-bucket/cat.jpeg?x-goog-signature=2d2a6f5055eb004b8690b9479883292ae74 50cdc15f17d7f99bc49b916f9e7429106ed7e5858ae6b4ab0bbbdb1a8ccc364dad3a0da2caebd308 87a70c5b2569d089ceb8afbde3eed4dff5116f0db5483998c175980991fe899fbd2cd8cb813b0016 5e8d56e0a8aa7b3d7a12ee1baa8400611040f05b50a1a8eab5ba223fe5375747748de950ec7a4dc5 0f8382a6ffd49941c42498d7daa703d9a414d4475154d0e7edaa92d4f2507d92c1f7e811a7cab64d f68b5df4857589259d8d0bdb5dc752bdf07bd162d98ff2924f2e4a26fa6b3cede73ad5333c47d146 a21c2ab2d97115986a12c28ff37346d6c2ca83e5618ec8ad95632710b489b75c35697d781c38e& x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40example-project. iam.gserviceaccount.com%2F20181026%2Fus%2Fstorage%2Fgoog4_request&x-goog-date= 20201026T211942Z&x-goog-expires=3600&x-goog-signedheaders=host
署名付き URL は
https://storage.googleapis.com
で始まる文字列であり、数行にわたる可能性があります。この URL を使用すると、設定した時間枠内の間(この例では 10 分)、関連付けられたリソース(この例ではcat.jpeg
)に誰でもアクセスできます。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
オブジェクトをアップロードする署名付き URL の作成
バケットにオブジェクトをアップロードできる署名付き URL を作成するには、次の手順を行います。
gsutil
新しい秘密鍵を生成するか、サービス アカウント用の既存の秘密鍵を使用します。鍵は、JSON 形式か PKCS12 形式のものを使用できます。
秘密鍵とサービス アカウントについて詳しくは、サービス アカウントをご覧ください。
gcloud auth activate-service-account
を使用して、サービス アカウントで認証を行います。gcloud auth activate-service-account --key-file KEY_FILE_LOCATION/KEY_FILE_NAME
ここで
KEY_FILE_LOCATION
は、サービス アカウントの認証情報を含むファイルへのローカルパスです。例:Desktop
KEY_FILE_NAME
は、サービス アカウント認証情報を含むファイルの名前です。例:key.txt
-u
オプションを指定したgsutil signurl
コマンドを使用して、サービス アカウントの認証情報を参照します。たとえば、次のコマンドは、ユーザーが画像ファイルをアップロードできる署名付き URL を作成します。
gsutil signurl -m PUT -d 1h -c CONTENT_TYPE -u gs://BUCKET_NAME/OBJECT_NAME
ここで
CONTENT_TYPE
は、オブジェクトのコンテンツ タイプです。例:image/png
BUCKET_NAME
は、オブジェクトがアップロードされるバケットの名前です。例:example-bucket
OBJECT_NAME
は、アップロードされたオブジェクトに割り当てる名前です。例:cat.png
成功すると、レスポンスは次のようになります。
URL HTTP Method Expiration Signed URL gs://example-bucket/cat.png PUT 2021-01-09 00:28:11 https://storage.googleapis. com/example-bucket/cat.png?x-goog-signature=2d2a6f5055eb004b8690b9479883292ae74 50cdc15f17d7f99bc49b916f9e7429106ed7e5858ae6b4ab0bbbdb1a8ccc364dad3a0da2caebd308 87a70c5b2569d089ceb8afbde3eed4dff5086f0db5483998c175980991fe899fbd2cd8cb813b0016 5e8d56e0a8aa7b3d7215ee1baa8400611040f05b50a1a8eab5ba223fe1375747748de950ec7i6dc5 0f8382a6ffd4994ac42498d7daa703d9a414d4475154d0e7edaa92d4f2507d92c1f7e8efa7cab64d f68b5df48575b9259d8d0bdb5dc752bdf07bd162d98ff2924f2p4a26fa6b3cede73ad5333c47d146 a21c2ab2d97b15986a12c68ff3734696c2ca83e56b8ec8ad95632710b488b75c35697d781c38e& x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40example-project. iam.gserviceaccount.com%2F20181026%2Fus%2Fstorage%2Fgoog4_request&x-goog-date= 20201026T211942Z&x-goog-expires=3600&x-goog-signedheaders=host
署名付き URL は
https://storage.googleapis.com
で始まる文字列であり、数行にわたる可能性があります。この URL を使用すると、指定した時間内(この場合は 1 時間)、誰でもリソース(この場合はcat.png
)を特定の Cloud Storage バケットにアップロードできます。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
次のステップ
- 独自のプログラムで URL に署名する方法を確認する。
- 署名付き URL で使用できるオプションを確認する。
- 署名付き URL の詳細を確認する。
- XML API を使用したオブジェクトのアップロードについて確認する。
- オブジェクトのアップロードについて確認する。