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 安裝頁面 以瞭解如何進行驗證。

用戶端程式庫驗證

Client libraries can use Application Default Credentials to easily authenticate with Google APIs and send requests to those APIs. With Application Default Credentials, you can test your application locally and deploy it without changing the underlying code. For more information, including code samples, see Google Cloud Platform Auth Guide.

  • 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 API 或是 JSON API 提出要求,請在每個需要驗證的要求中,將應用程式的存取憑證加到 Authorization 標頭內。

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

XML API

請使用列出物件要求。

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

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

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

使用者帳戶憑證

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

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

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

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

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

後續步驟

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

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

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