本頁面說明實作 V4 簽署程序的演算法,讓您能使用偏好的程式設計語言,在自己的工作流程中建立 Cloud Storage RSA 金鑰經簽署的網址。
事前準備
建立實作 V4 簽署程序的程式之前,請先完成下列步驟:
授予服務帳戶足夠的權限,讓服務帳戶可以執行經簽署的網址提出的要求。
舉例來說,如果經簽署的網址允許使用者讀取物件資料,服務帳戶本身必須具備讀取物件資料的權限。
如果打算使用的簽署演算法未內建於Google Cloud,請產生新的私密金鑰,或使用服務帳戶的現有私密金鑰。金鑰可以採用 JSON 或 PKCS12 格式。
網址簽署演算法
您的程式應包含下列步驟:
建構「標準化要求」做為字串。標準要求定義了使用者在使用經簽署的網址時,必須在要求中包含的元素。
如需必要部分和格式的詳細資訊,請參閱標準要求。
建構待簽署字串。待簽署字串是建立簽章的基礎,其中包含標準要求的十六進位編碼雜湊值。
如要進一步瞭解待簽署字串的格式,請參閱「簽章」。
將 RSA 簽名與 SHA-256 搭配使用,簽署欲簽署字串。簽署結果就是要求簽章。簽署方式有以下幾種:
您可以使用具備程式庫的程式設計語言,執行 RSA 簽章。
使用下列串連方式建構經簽署的網址:
HOSTNAME + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE
經簽署的網址包含下列元件:
HOSTNAME:應為
https://storage.googleapis.com。PATH_TO_RESOURCE:這應與您建構標準要求時使用的值相符。
CANONICAL_QUERY_STRING:這應與您在建構標準要求時使用的值相符。
REQUEST_SIGNATURE:這是上一個步驟中使用 RSA 簽章的輸出內容,以十六進位編碼。
完成後的網址範例如下:
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 用戶端程式庫,為多種常見的程式設計語言建立經簽署的網址。如需範例,請參閱「使用 Cloud Storage 工具的 V4 簽署程序」。
下列範例說明如何實作不使用 Cloud Storage 用戶端程式庫的網址簽署演算法。範例使用 Python 程式設計語言,但可調整為您選擇的語言。
後續步驟
- 瞭解如何使用 Cloud Storage 工具簽署網址,例如用戶端程式庫或 Google Cloud CLI。
- 進一步瞭解經簽署的網址。
- 瞭解標準要求,這是經簽署網址的基礎。