經簽署的網址

本頁面提供已簽署網址的總覽,這類網址會使用簽章,向特定 Cloud Storage 資源提供限時存取權。任何擁有已簽署網址的人,無論是否擁有有效帳戶,都能在該網址有效運作時使用它。如要進一步瞭解如何建立已簽署網址,請參閱使用 Cloud Storage 工具進行 V4 簽署程序使用您自己的程式進行 V4 簽署程序。如要瞭解控制值區和物件存取權的其他方式,請參閱「存取權控制總覽」。

總覽

已簽署網址,這個網址可提供有限的權限和時間來提出要求。簽署網址的查詢字串中包含驗證資訊,包括簽章,因此使用者不需要任何憑證,也能對資源執行特定動作。

  • 產生已簽署網址時,您必須指定具備足夠權限的帳戶,才能提出已簽署網址將提出的要求。

    • 在多數情況下,該帳戶是服務帳戶

    • 如果您自行建立程式來產生已簽署的網址,只要使用者帳戶有相關聯的 HMAC 金鑰,就能使用該帳戶。

產生已簽署網址後,任何擁有該網址的人員都可以使用已簽署網址執行特定動作,例如,在特定時段內讀取物件。

何時應使用已簽署的網址?

某些情況下,您可能不想要求使用者擁有自己的帳戶才能存取 Cloud Storage,不過仍希望使用應用程式專屬邏輯來控制存取權。一般的因應方法是,將已簽署網址提供給使用者,讓使用者能在期限內讀取、寫入或刪除該資源。建立已簽署網址時需指定到期時間。任何人只要知道網址,就可以存取該資源,直到網址過期或用於簽署網址的金鑰輪替為止。

簽署網址最常見的用途是上傳和下載,因為在這種要求中,物件資料會在要求者和 Cloud Storage 之間移動。在大多數其他情況下,例如複製物件、組合物件、刪除物件或編輯中繼資料,建立已簽署的網址並提供給他人使用,都是不必要的額外步驟。建議您改用以下設計:負責建立已簽署網址的實體,直接向 Cloud Storage 發出所需要求。

已簽署網址範例

以下範例是在使用服務帳戶驗證進行 V4 簽署程序後所建立的已簽署網址:

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-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
2ea7abedc098d2eb14a7

此簽署網址會提供在值區 example-bucket 讀取物件 cat.jpeg 的存取權。產生此已簽署網址的查詢參數為:

  • X-Goog-Algorithm:簽署網址所用的演算法。

  • X-Goog-Credential:建立已簽署網址所用的憑證相關資訊。

  • X-Goog-Date:已簽署網址可供使用的日期和時間,格式為 ISO 8601 基本格式 YYYYMMDD'T'HHMMSS'Z'

  • X-Goog-Expires:已簽署網址維持有效的時間長度,以 X-Goog-Date 中的值開始量測 (以秒為單位)。在此範例中,已簽署網址會在 15 分鐘後過期。最長的到期值為 604800 秒 (7 天)。

  • X-Goog-SignedHeaders:需要納入任何使用已簽署網址的要求中的標頭。

  • X-Goog-Signature:允許使用此已簽署網址的要求存取 cat.jpeg 的驗證字串。

使用已簽署網址搭配支援續傳的上傳作業

一般來說,為可續傳上傳作業建立已簽署網址是不必要的,因為在啟動上傳作業的要求之後,後續上傳物件資料的 PUT 要求會使用工作階段 URI 做為驗證權杖。也就是說,PUT 要求不會使用任何已簽署的網址。

雖然您可以為初始 POST 要求建立及使用已簽署網址來啟動上傳作業,但在大多數情況下,伺服器可以改為啟動可續傳上傳作業。接著,伺服器會將工作階段 URI 傳送給用戶端,以執行上傳作業。這樣一來,伺服器就不必建立已簽署的網址,用戶端也不必處理已簽署的網址並啟動可續傳的上傳作業,可避免複雜的程序。

與已簽署網址類似,任何擁有工作階段 URI 的人都能使用該 URI 上傳資料。將工作階段 URI 提供給用戶端時,請務必透過 HTTPS 進行傳輸。

已簽署網址的注意事項

使用已簽署網址時,請注意下列幾點:

  • 已簽署網址只能用來透過 XML API 端點存取 Cloud Storage 資源。

  • 指定憑證時,建議您使用服務帳戶的電子郵件地址來進行識別,但也支援使用服務帳戶 ID。

標準要求

已簽署的網址會將標準要求包含在其 X-Goog-Signature 查詢字串參數的編碼資訊中。當您使用 Cloud Storage 工具建立已簽署的網址時,系統會建立所需的標準要求並自動合併。但是,當您使用自己的程式製作已簽署的網址時,就需要自行定義標準要求,並用來建立簽章

憑證範圍

憑證範圍會同時出現在要簽署的字串與 X-Goog-Credential 查詢字串參數中。

後續步驟