本文將說明一些重要的驗證方法和概念,以及如何取得驗證實作或疑難排解方面的協助。 驗證文件主要適用於服務,但這份清單的 Google Cloud 驗證使用情況和本頁的簡介資料,也包含其他 Google 產品的使用情況。
簡介
驗證程序會使用某種憑證確認您的身分。驗證是為了證明您的身分。
Google 提供許多 API 和服務,但存取時需要驗證。Google 也提供多項服務,代管客戶編寫的應用程式;這些應用程式也需要判斷使用者身分。
Google API 會實作並擴充 OAuth 2.0 架構。
如何取得驗證相關協助
我想要... | 資訊 |
---|---|
以快速模式向 Vertex AI 進行驗證 (預先發布版)。 | 使用登入程序中建立的 API 金鑰,向 Vertex AI 進行驗證。詳情請參閱「Vertex AI 快速模式總覽」。 |
使用高階程式設計語言,從應用程式向服務進行驗證。 Google Cloud | 設定應用程式預設憑證,然後使用其中一個 Cloud 用戶端程式庫。 |
向需要 ID 權杖的應用程式進行驗證。 | 取得 OpenID Connect (OIDC) ID 權杖,並隨要求一併提供。 |
為存取 Google 或 Google Cloud 服務和資源的應用程式實作使用者驗證。 | 如要比較各項選項,請參閱「驗證應用程式使用者」。 |
在本機開發環境中試用一些 gcloud 指令。 |
初始化 gcloud CLI。 |
在我的本機開發環境中,試用一些 Google Cloud REST API 要求。 |
使用 curl 等指令列工具呼叫 REST API。 |
試用產品說明文件中提供的程式碼片段。 | 為本機開發環境設定 ADC,並在本機環境中安裝產品的用戶端程式庫。用戶端程式庫會自動尋找您的憑證。 |
取得其他驗證使用情境的相關協助。 | 請參閱「驗證用途」頁面。 |
查看 Google 在身分與存取權管理領域提供的產品清單。 | 請參閱「Google 身分與存取權管理產品」頁面。 |
根據用途選擇合適的驗證方法
使用 Google Cloud CLI、Cloud 用戶端程式庫、支援 應用程式預設憑證 (ADC) 的工具 (例如 Terraform) 或 REST 要求存取服務時,請參考下圖選擇驗證方法: Google Cloud
這張圖表會引導您思考下列問題:
-
您是否在單一使用者開發環境中執行程式碼,例如自己的工作站、Cloud Shell 或虛擬桌面介面?
- 如果是,請繼續進行問題 4。
- 如果沒有,請繼續回答問題 2。
- 您是否在 Google Cloud中執行程式碼?
- 如果是,請繼續進行問題 3。
- 如果沒有,請繼續進行問題 5。
- 您是否在 Google Kubernetes Engine 中執行容器?
- 如果是,請使用 Workload Identity Federation for GKE,將服務帳戶附加至 Kubernetes Pod。
- 如果沒有,請將服務帳戶附加至資源。
-
您的用途是否需要服務帳戶?
舉例來說,您想為所有環境中的應用程式,設定一致的驗證和授權方式。
- 如果沒有,請使用使用者憑證進行驗證。
- 如果是,請 使用使用者憑證模擬服務帳戶。
-
您的工作負載是否透過支援工作負載身分聯盟的外部識別資訊提供者進行驗證?
- 如果是,請 設定 Workload Identity Federation,讓在內部部署或其他雲端服務供應商執行的應用程式使用服務帳戶。
- 如果沒有,請建立服務帳戶金鑰。
Google Cloud 服務的授權方法
Google Cloud 的授權作業主要由 Identity and Access Management (IAM) 處理。IAM 可依主體和資源提供精細的控制選項。
您可以使用 OAuth 2.0 範圍套用另一層授權。向 Google Cloud 服務進行驗證時,您可以使用授權存取所有 Google Cloud 服務的全球範圍 (https://www.googleapis.com/auth/cloud-platform
),也可以使用範圍較小的限制性範圍 (如果服務支援)。如果您的程式碼在可能發生權杖遭盜用的環境中執行 (例如行動應用程式),有限範圍有助於降低風險。
API 方法接受的授權範圍會列在各 Google Cloud 服務的 API 參考說明文件中。
應用程式預設憑證
Application Default Credentials (ADC) 是驗證程式庫採用的策略,可根據應用程式環境自動尋找憑證。驗證程式庫會將這些憑證提供給 Cloud 用戶端程式庫和 Google API 用戶端程式庫。使用 ADC 時,您的程式碼可以在開發或正式環境中執行,無需變更應用程式向 Google Cloud 服務和 API 驗證的方式。
使用 ADC 可簡化開發程序,因為您可以在各種環境中使用相同的驗證程式碼。不過,如果您使用快速模式的服務,則不需要使用 ADC。
您必須先向 ADC 提供憑證,才能使用 ADC,具體做法取決於您要執行程式碼的位置。ADC 會自動找出憑證,並在背景取得權杖,讓您的驗證程式碼在不同環境中執行時,不必進行修改。舉例來說,當程式碼在開發工作站或 Compute Engine 上執行時,相同版本的程式碼可以透過Google Cloud API 進行驗證。
您提供給 ADC 的 gcloud 憑證與使用 gcloud CLI 時的憑證不同。詳情請參閱「 gcloud CLI 驗證設定和 ADC 設定」。
術語
討論驗證和授權時,請務必瞭解下列術語。
驗證
「驗證」是判定嘗試存取資源的主體身分的程序。
授權
授權程序會判斷嘗試存取資源的主體或應用程式,是否已獲得該存取層級的授權。
憑證
本文所指的「使用者帳戶」,是指 Google 帳戶,或是由身分識別提供者管理並與員工身分聯盟同盟的使用者帳戶。
憑證是數位物件,可做為身分驗證的依據。視應用程式需求而定,密碼、PIN 碼和生物特徵辨識資料都可以做為憑證。舉例來說,當您登入使用者帳戶時,您會提供密碼並滿足任何雙重驗證要求,證明該帳戶確實屬於您,且您並未遭到惡意行為人冒用。
權杖並非憑證,這是數位物件,可證明呼叫端已提供適當的憑證。
您需要提供的憑證類型取決於要驗證的項目。
您可以在Google Cloud 控制台中建立下列類型的憑證:
API 金鑰
您可以搭配接受 API 金鑰的 API 使用 API 金鑰,藉此存取 API。未繫結至服務帳戶的 API 金鑰會提供專案,用於帳單和配額用途。如果 API 金鑰繫結至服務帳戶,API 金鑰也會提供服務帳戶的身分和授權 (預先發布版)。
如要進一步瞭解 API 金鑰,請參閱「API 金鑰」。如要進一步瞭解與服務帳戶綁定的 API 金鑰,請參閱 Google Cloud 快捷模式常見問題。
OAuth 用戶端 ID
OAuth 用戶端 ID 用於向 Google Cloud識別應用程式。如果您想存取使用者擁有的資源,就必須使用三足式 OAuth (3LO)。如要進一步瞭解如何取得及使用 OAuth 用戶端 ID,請參閱 設定 OAuth 2.0。
服務帳戶金鑰
服務帳戶金鑰會識別主體 (服務帳戶) 和與服務帳戶相關聯的專案。
您也可以使用 gcloud CLI 建立憑證。這類憑證包括下列類型:
主體
主體是可以取得資源存取權的身分。Google API 支援以下兩種主體進行驗證:使用者帳戶和服務帳戶。
您要使用使用者帳戶還是服務帳戶進行驗證,取決於用途。您可能會同時使用這兩者,但會在專案的不同階段或不同的開發環境中使用。
使用者帳戶
使用者帳戶代表開發人員、管理員,或任何其他與 Google API 和服務互動的人員。
使用者帳戶會以 Google 帳戶的形式管理,可透過 Google Workspace 或 Cloud Identity 管理。也可以是第三方身分識別提供者管理的使用者帳戶,並與員工身分聯盟聯合。
使用使用者帳戶時,您可以透過下列方式驗證 Google API 和服務:
- 使用 gcloud CLI 設定應用程式預設憑證 (ADC)。
- 使用使用者憑證登入 Google Cloud CLI,然後使用該工具存取 Google Cloud 服務。
- 使用使用者憑證模擬服務帳戶。
- 使用使用者憑證登入 Google Cloud CLI,然後使用該工具產生存取權杖。
如要瞭解如何為 Google Cloud中的使用者設定身分,請參閱「使用者身分」一文。
服務帳戶
服務帳戶代表的不是真人使用者,當沒有人直接參與時 (例如應用程式需要存取 Google Cloud 資源時),這些憑證可做為管理驗證和授權的方式。服務帳戶由 IAM 管理。
下列清單列出幾種使用服務帳戶向 Google API 和服務進行驗證的方法,並依安全性由高至低排序。詳情請參閱本頁的「根據用途選擇合適的驗證方法」。
將使用者代管的服務帳戶附加至資源,並使用 ADC 進行驗證。
建議您使用這種方式,驗證在Google Cloud上執行的正式版程式碼。
-
服務帳戶模擬功能可讓您暫時授予服務帳戶更多權限。暫時授予額外權限可讓該服務帳戶執行必要的存取作業,而不必永久取得更多權限。
使用 Workload Identity 聯盟,驗證在地端或不同雲端服務供應商執行的工作負載。
使用預設服務帳戶。
不建議使用預設服務帳戶,因為預設服務帳戶的權限很高,違反了最低權限原則。
如要瞭解如何設定工作負載身分,包括服務帳戶,請參閱 Google Cloud的「工作負載身分」一文。如需最佳做法,請參閱「使用服務帳戶的最佳做法」。
權杖
在驗證和授權程序中,權杖是一種數位物件,可證明呼叫端已提供適當的憑證,並以該憑證換取權杖。權杖包含提出要求的主體身分資訊,以及他們獲授權的存取類型。
權杖可以想成是飯店鑰匙。入住飯店時,只要向飯店登記櫃檯出示適當文件,即可取得房卡,存取特定飯店資源。舉例來說,房卡可能只能開啟你的房間和客用電梯,但無法開啟其他房間或服務電梯。
除了 API 金鑰,Google API 不直接支援憑證。應用程式必須取得或產生權杖,並提供給 API。權杖類型有很多種,詳情請參閱「權杖類型」。
工作負載和員工
Google Cloud 身分和存取權產品可讓程式化存取和使用者存取Google Cloud 服務和資源。 Google Cloud 使用「工作負載」一詞表示程式化存取,並使用「工作團隊」一詞表示使用者存取。
工作負載身分聯盟可讓您授權地端部署或多雲端工作負載存取權,不必建立及管理服務帳戶金鑰。
員工身分聯盟可讓您使用外部身分提供者,透過 IAM 驗證工作團隊 (例如員工、合作夥伴和約聘人員等使用者群組) 的身分並授權,讓使用者存取Google Cloud 服務。
後續步驟
- 進一步瞭解 Google Cloud 服務如何使用 IAM 控管 Google Cloud 資源存取權。
- 瞭解應用程式預設憑證的運作方式,以及如何為各種開發環境設定這項憑證。