本文僅說明如何透過 Google Cloud CLI 存取Google Cloud 資源時進行驗證。如要使用 Cloud 用戶端程式庫或 Google API 用戶端程式庫驗證工作負載,請參閱「應用程式預設憑證的運作方式」。
事前準備
如果您是 Google Cloud 新手,只想在本機開發環境中開始使用 gcloud CLI 指令,可以執行下列指令初始化 gcloud CLI:
gcloud init
初始化程序會引導您完成驗證流程、設定 gcloud CLI 設定,並授權 gcloud CLI 代表您執行動作。不必執行個別驗證步驟。
本文件的其餘部分將介紹更複雜的情境,例如搭配不同主體類型使用 gcloud CLI、適用於不同環境的適當驗證方法、切換主體,以及管理儲存的憑證。
驗證方法
所有 gcloud CLI 指令都必須通過 API 驗證。 Google Cloud 您可以透過下列方式進行驗證:
授權及儲存憑證:適合使用者在本機開發環境中使用。您可以使用
gcloud auth login指令,授權 gcloud CLI 代表主體執行動作。完成初始驗證後,這項指令會將憑證儲存在 gcloud CLI 設定目錄中。gcloud CLI 會使用這些儲存的憑證,在工作階段到期或您撤銷授權之前,自動驗證後續指令。使用憑證檔案進行驗證:適用於在 Google Cloud外部執行的工作負載。您可以使用環境變數或 gcloud CLI 設定屬性,指定用於自動驗證的憑證檔案。這個檔案可以是下列其中之一:
Workload Identity Federation 憑證設定檔。
服務帳戶金鑰。
提供存取權杖:適用於高度隔離的自動化工作流程,或共用電腦上的無狀態工作階段。您可以直接向 gcloud CLI 提供存取權杖,略過憑證儲存程序。您可以將特定環境變數設為原始存取權杖字串,或讓 gcloud CLI 指向含有存取權杖的檔案,藉此完成這項操作。
驗證後,您可以選擇提供服務帳戶的電子郵件地址,讓 gcloud CLI 模擬服務帳戶。
您可以在單一環境中使用多種驗證方法。不過,任何給定的 gcloud 指令只會使用一個主體。如要判斷要使用哪個主體,gcloud CLI 會遵循優先順序。
不需要驗證的情況
在下列情況中,您不需要驗證 gcloud CLI:
- 初始化 gcloud CLI 後,請立即執行下列指令:初始化程序會驗證及授權 gcloud CLI 代表您執行動作。如果您需要使用其他主體存取不同資源,或是需要重新驗證主體,可能仍須再次驗證。
- 從公開 Compute Engine 中繼資料伺服器的資源使用 gcloud CLI。 包括 Compute Engine VM 執行個體、Cloud Run 服務和 Cloud Build 建構作業等資源。gcloud CLI 會使用附加至 VM 的服務帳戶進行驗證,並在套用的任何 存取範圍限制內,存取與該服務帳戶相同的資源。
- 使用 Cloud Shell 時。gcloud CLI 會自動使用您登入 Google Cloud 控制台時的主體進行驗證。在新的 Cloud Shell 工作階段中首次執行 gcloud CLI 指令時,系統會提示您使用該主體 授權 Cloud Shell。
為工作選擇適當的主體
主體類型分為兩種,分別供人員和自動化工作負載使用。 您需要使用的主體類型會影響驗證方式。
-
使用者帳戶:這些是供使用者執行互動式工作的 Google 帳戶,例如臨時管理工作、 Google Cloud 服務的非程式輔助設定、測試、實驗和可觀測性。
您會以使用者憑證 (例如密碼和一次性代碼) 驗證使用者帳戶。
-
服務帳戶:這些是專屬帳戶,工作負載可透過這些帳戶存取服務或資源。 Google Cloud 您通常不會直接以服務帳戶進行驗證,而是將服務帳戶附加至 Compute Engine VM 等資源,或使用服務帳戶模擬。
-
聯合主體:這類身分會參照外部身分提供者中的使用者或服務帳戶。 Google Cloud支援兩種同盟主體,名稱相似:
-
員工身分聯盟:允許使用者透過外部識別資訊提供者管理的身分登入 Google Cloud 。如果貴機構已設定單一登入 (SSO),您可以使用這類身分驗證 Google Cloud。
如要使用員工身分聯盟,您的識別資訊提供者必須支援 OpenID Connect (OIDC) 或 SAML 2.0。
-
Workload Identity Federation:允許在 Google Cloud 外部執行的工作負載對 Google Cloud 資源執行作業。
您可以搭配使用 Workload Identity Federation 與下列工作負載:使用 X.509 用戶端憑證驗證身分的工作負載;在 Amazon Web Services (AWS) 或 Azure 上執行的工作負載;在 地端部署 Active Directory 上執行的工作負載;部署服務 (例如 GitHub 和 GitLab);以及支援 OpenID Connect (OIDC) 或安全宣告標記語言 (SAML) V2.0 的任何身分識別提供者。
-
以人類身分使用 gcloud CLI
如果是互動式工作,通常會透過下列其中一種方式進行驗證:
使用者帳戶
使用員工身分聯盟的聯合使用者身分
使用者帳戶
使用使用者帳戶向 gcloud CLI 進行驗證的方式,取決於裝置上是否已安裝網頁瀏覽器。
我的裝置有網路瀏覽器
如要在搭載網頁瀏覽器的裝置上,透過使用者帳戶進行驗證,請完成下列步驟:
執行下列指令來啟動程序:
gcloud auth login按照瀏覽器式流程驗證並授權 gcloud CLI,以便日後代表您存取資源。
gcloud auth login 指令會將存取憑證儲存在主目錄中。經過驗證的主體會成為有效 gcloud CLI 設定中的有效主體。除非遭到覆寫,否則 gcloud CLI 會使用這些已儲存的憑證存取 Google Cloud。
我的裝置沒有網路瀏覽器
如果要在沒有網頁瀏覽器的裝置上使用 gcloud CLI,可以在其他信任的裝置上驗證使用者帳戶。這個程序會因其他信任裝置上安裝的軟體而異。
使用其他信任的裝置進行驗證
選取其他信任的裝置上可用的軟體。
gcloud CLI 和網路瀏覽器
使用 --no-browser 標記,在安裝 gcloud CLI 的其他裝置上,透過網頁瀏覽器完成驗證程序:
在要使用 gcloud CLI 的原始裝置上執行下列指令:
Linux 和 macOS
gcloud auth login \ --no-browserWindows (PowerShell)
gcloud auth login ` --no-browser複製以
gcloud auth login --remote-bootstrap="開頭的gcloud指令,以便在其他裝置上使用。前往其他受信任的裝置,該裝置必須安裝網頁瀏覽器和 gcloud CLI 372.0.0 以上版本。
在終端機中執行先前複製的指令 (開頭為
gcloud auth login --remote-bootstrap="),然後完成瀏覽器流程。在終端機中,複製以
https://localhost開頭的網址,以便在原始裝置上使用。返回原本的裝置。
在終端機的提示中,貼上您先前複製的
https://localhost網址。按下鍵盤上的 Enter 或 Return 鍵,即可完成程序。
gcloud auth login 指令會將存取憑證儲存在主目錄中。經過驗證的主體會成為有效 gcloud CLI 設定中的有效主體。除非遭到覆寫,否則 gcloud CLI 會使用這些已儲存的憑證存取 Google Cloud。
僅限網路瀏覽器
使用 --no-launch-browser 標記,透過其他裝置的網路瀏覽器完成驗證程序:
在要使用 gcloud CLI 的原始裝置上執行下列指令:
Linux 和 macOS
gcloud auth login \ --no-launch-browserWindows (PowerShell)
gcloud auth