Cloud Storage 驗證

在 Cloud Storage 執行的大多數作業都必須經過驗證。只有允許匿名存取的物件作業屬於例外情況。如果 allUsers 群組擁有 READ 權限,即可透過匿名方式存取物件。網際網路上的任何使用者皆屬於 allUsers 群組。

OAuth 2.0

驗證

Cloud Storage 使用 OAuth 2.0 進行 API 驗證及授權。「驗證」是判定用戶端身分的程序。驗證的細節會因存取 Cloud Storage 的方式而異,但可大致分為兩種類型:

  • 以伺服器為主的流程會允許應用程式直接保存服務帳戶的憑證,以便完成驗證。如果您的應用程式使用的是本身的資料而非使用者資料,請使用此流程。Google Cloud Platform 專案有預設的服務帳戶可供使用,或者您也可以建立新的帳戶。

  • 以使用者為主的流程會允許應用程式向使用者取得憑證。使用者須登入才能完成驗證。如果您的應用程式需要存取使用者資料,請使用此流程。請參閱本頁面後續的使用者帳戶憑證一節,瞭解以使用者為主的流程所適用的情境。

別忘了,您可以在應用程式中同時使用這兩種類型的驗證。如需進一步瞭解驗證的背景資訊,請參閱 Google Cloud Platform 驗證指南

範圍

「授權」是判定經過驗證的身分對於一組資源具有哪些權限的程序。OAuth 使用「範圍」來判斷某個經過驗證的身分是否獲得授權。應用程式會使用憑證 (在以使用者為主或以伺服器為主的驗證流程中取得) 加上一個或多個範圍,向 Google 授權伺服器要求存取憑證,以存取受保護的資源。例如,具有 read-only 範圍存取符記的應用程式 A 只能讀取,而具有 read-write 範圍存取符記的應用程式 B 可以讀取和修改資料。這兩個應用程式都無法讀取或修改物件和值區的存取控制清單,只有擁有 full-control 範圍的應用程式有權執行這類動作。

類型 說明 範圍網址
read-only 僅允許讀取資料 (包括清單值區) 的權限。 https://www.googleapis.com/auth/devstorage.read_only
read-write 有權讀取及變更資料,但不允許存取 IAM 政策等中繼資料。 https://www.googleapis.com/auth/devstorage.read_write
full-control 允許完全控制資料,包括修改 IAM 政策。 https://www.googleapis.com/auth/devstorage.full_control
cloud-platform.read-only 查看您在 Google Cloud Platform 服務中的資料。對於 Cloud Storage 來說,這與 devstorage.read-only 相同。 https://www.googleapis.com/auth/cloud-platform.read-only
cloud-platform 查看及管理所有 Google Cloud Platform 服務中的資料。對於 Cloud Storage 來說,這與 devstorage.full-control 相同。 https://www.googleapis.com/auth/cloud-platform

gsutil 驗證

透過從 Cloud SDK 安裝的 gsutil,您可以使用服務帳戶憑證進行驗證。

  1. 使用現有的服務帳戶,或是建立新帳戶,並下載關聯的私密金鑰。

  2. 使用 gcloud auth activate-service-account 以服務帳戶進行驗證:

    gcloud auth activate-service-account --key-file [KEY_FILE]

    其中 [KEY_FILE] 是內有服務帳戶憑證的檔案名稱。

在取得存取憑證時,gcloud auth 使用的是 cloud-platform範圍

如果您安裝了獨立於 Cloud SDK 的 gsutil,請參閱 gsutil 安裝頁面 以瞭解如何進行驗證。

用戶端程式庫驗證

用戶端程式庫可以使用應用程式預設憑證輕鬆向 Google API 進行驗證,然後傳送要求到這些 API。有了應用程式預設憑證,您可在本機測試應用程式,並部署應用程式,而無須變更基礎程式碼。如需詳細資訊,包括範例程式碼,請參閱 Google Cloud Platform 驗證指南

  • Google Cloud Platform

    如果您是在 App EngineCompute Engine 上執行應用程式,此環境已提供了服務帳戶的驗證資訊,因此無需進一步設定。對於 Compute Engine,服務帳戶範圍取決於執行個體的建立方式。請參閱設定執行個體存取服務帳戶範圍。App Engine 使用的是 cloud-platform 範圍。

  • 其他環境

    如要初始化本地開發或生產環境,請建立 GCP 服務帳戶,下載其金鑰,並設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數以使用該金鑰。如需逐步操作說明,請參閱使用 Cloud Storage 用戶端程式庫設定驗證作業一文。也可以直接在程式碼中使用服務帳戶金鑰,以此方式代替設定環境變數。

API 驗證

如要使用 OAuth 2.0 對 Cloud Storage 的 XML APIJSON API 提出要求,請在每個需要驗證的要求中,將應用程式的存取憑證加到 Authorization 標頭內。您可以透過 OAuth 2.0 Playground 產生存取憑證。

Authorization: Bearer <oauth2_token>

以下範例是會列出值區中物件的要求。

JSON API

請使用物件資源的 list 方法。

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

如要透過指令列或針對測試授權要求,您可以使用 curl 指令,使用的語法如下:

curl -H "Authorization: Bearer ACCESS_TOKEN" "https://www.googleapis.com/storage/v1/b/example-bucket/o"

針對本機測試,您可以使用 gcloud auth application-default print-access-token 指令來產生憑證。

XML API

請使用列出物件要求。

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

如要透過指令列或針對測試授權要求,您可以使用 curl 指令,使用的語法如下:

curl -H "Authorization: Bearer ACCESS_TOKEN" "https://example-bucket.storage.googleapis.com"

針對本機測試,您可以使用 gcloud auth application-default print-access-token 指令來產生憑證。

由於存取憑證在管理和重新整理上的複雜性,加上直接處理加密應用程式時的安全風險,我們強烈建議使用經過驗證的用戶端程式庫

如果您需要的是能搭配 XML API 使用,以便和 Amazon S3 互通存取的 HMAC 金鑰,請參閱管理 HMAC 金鑰以進行簡易遷移

使用者帳戶憑證

當您的應用程式需要代表使用者存取資料時,請以使用者帳戶憑證進行驗證;否則請使用服務帳戶憑證。以下是使用者帳戶憑證可派上用場的情境範例:

  • 網路伺服器應用程式
  • 已安裝的桌面應用程式
  • 行動應用程式
  • 用戶端 JavaScript
  • 輸入受限裝置的應用程式

如要進一步瞭解上述情境,請參閱 OAuth 2.0 使用情境

如果您是在設計用以支援使用者多重驗證選項的應用程式,請使用 Firebase 驗證,其可支援電子郵件和密碼驗證,也能支援搭配識別資訊提供者 (如 Google、Facebook、Twitter 和 GitHub) 的聯合登入。

在以使用者為主的驗證流程中,當使用者授予應用程式存取憑證時,該存取憑證僅會擁有授予憑證的使用者可用的權限。舉例來說,如果 jane@gmail.com 擁有 example-bucketread-only 存取權,即使 Jane 將 read-write 的存取權授予應用程式,應用程式也無法代她寫入 example-bucket

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁