このページでは、好みのプログラミング言語を使用して、独自のワークフローで Cloud Storage RSA 鍵署名付き URL を作成するための、V4 署名プロセスを実装するアルゴリズムについて説明します。
始める前に
V4 署名プロセスを実装するプログラムを作成する前に、次の手順を完了する必要があります。
サービス アカウントを作成します。サービス アカウントがすでにある場合は、この手順をスキップできます。
署名付き URL によるリクエストを実行できるように、サービス アカウントに十分な権限を付与してください。
たとえば、署名付き URL でユーザーがオブジェクト データを読み取ることができるようにする場合、サービス アカウントにはオブジェクト データを読み取る権限が必要です。
使用する署名アルゴリズムが Google Cloud に組み込まれていない場合、新しい秘密鍵を生成するか、サービス アカウント用に既存の秘密鍵を準備します。鍵は、JSON 形式か PKCS12 形式のものを使用できます。
URL に署名するアルゴリズム
プログラムには次の手順が含まれている必要があります。
正規リクエストを文字列として作成します。正規リクエストにより、署名付き URL を使用するときにユーザーがリクエストに含める必要がある要素を定義します。
必要な構成要素と形式について詳しくは、正規リクエストをご覧ください。
署名対象文字列を作成します。署名対象文字列は、署名を作成するための基礎であり、正規リクエストの 16 進エンコードされたハッシュ値が含まれます。
署名対象文字列の形式の詳細については、署名をご覧ください。
SHA-256 の RSA 署名を使用して署名対象文字列に署名します。この署名の結果がリクエストの署名になります。署名にはいくつかのオプションがあります。
Google Cloud が提供する IAM
signBlob
メソッドを使用できます。RSA 署名を実行するためのライブラリを備えたプログラミング言語を使用できます。
次の文字列結合を使用して署名付き URL を作成します。
HOSTNAME + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE
署名付き URL には次のコンポーネントが含まれます。
HOSTNAME:
https://storage.googleapis.com
です。PATH_TO_RESOURCE: 正規リクエストの作成に使用した値と一致している必要があります。
CANONICAL_QUERY_STRING: 正規リクエストの作成に使用した値と一致している必要があります。
REQUEST_SIGNATURE: 前のステップで RSA 署名を使用して得られた出力です。
完成した URL の例は次のとおりです。
https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=GOOG4- RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com %2F20181026%2Fus%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T211942Z&X-Goog -expires=3600&X-Goog-Signedheaders=host&X-Goog-Signature=2d2a6f5055eb004b8690b 9479883292ae7450cdc15f17d7f99bc49b916f9e7429106ed7e5858ae6b4ab0bbbdb1a8ccc364d ad3a0da2caebd30887a70c5b2569d089ceb8afbde3eed4dff5086f0db5483998c175980991fe89 9fbd2cd8cb813b00165e8d56e0a8aa7b3d7a12ee1baa8400611040f05b50a1a8eab5ba223fe137 5747748de950ec7a4dc50f8382a6ffd4994ac42498d7daa703d9a414d4475154d0e7edaa92d4f2 507d92c1f7e8efa7cab64df68b5df48575b9259d8d0bdb5dc752bdf07bd162d98ff2924f2e4a26 fa6b3cede73ad5333c47d146a21c2ab2d97115986a12c68ff37346d6c2ca83e56b8ec8ad956327 10b489b75c35697d781c38e
Python のサンプル プログラム
Cloud Storage クライアント ライブラリを使用して、多くの一般的なプログラミング言語の署名付き URL を作成できます。Cloud Storage ツールを使用した V4 署名プロセスでサンプルをご覧ください。
次の例では、Cloud Storage クライアント ライブラリを使用せずに、URL に署名するアルゴリズムを実装しています。この例では Python プログラミング言語を使用していますが、任意の言語に適用できます。
次のステップ
- クライアント ライブラリや Google Cloud CLI などの Cloud Storage ツールを使用して URL に署名する方法を学習する。
- 署名付き URL の詳細を確認する。
- 署名付き URL の基盤となる正規リクエストの詳細を確認する。