本文僅說明如何透過 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 聯盟憑證設定檔。
服務帳戶金鑰。
提供存取權杖:適用於高度隔離的自動化工作流程,或共用電腦上的無狀態工作階段。您可以直接向 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 login ` --no-launch-browser複製開頭為
https://accounts.google.com/o/oauth2/auth的網址,以便在其他裝置上使用。前往已安裝網頁瀏覽器的其他信任裝置。
開啟網路瀏覽器,前往先前複製的網址,然後完成瀏覽器流程。
複製驗證碼,以便在原始裝置上使用。
返回原始裝置。
在終端機的提示字元中,貼上您先前複製的驗證碼。按下鍵盤上的 Enter 或 Return 鍵,完成程序。
gcloud auth login 指令會將存取憑證儲存在主目錄中。經過驗證的主體會成為有效 gcloud CLI 設定中的有效主體。除非遭到覆寫,否則 gcloud CLI 會使用這些已儲存的憑證存取 Google Cloud。
聯合使用者身分
您可以使用 gcloud CLI,搭配在外部識別資訊提供者 (IdP) 中管理的聯合使用者身分。您可以使用「員工身分聯盟」執行這項操作。
以下操作說明假設您已設定員工身分聯盟集區和提供者,可與 IdP 搭配運作。
如要透過聯合使用者身分使用 gcloud CLI,請建立登入設定檔,然後使用瀏覽器流程登入:
執行下列指令,建立登入設定檔:
Linux 和 macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
更改下列內容:
WORKFORCE_POOL_ID:員工身分聯盟集區 ID。WORKFORCE_PROVIDER_ID:員工身分聯盟提供者 ID。-
LOGIN_CONFIG_PATH:登入設定檔的寫入路徑。例如:login-config.json。
登入設定檔包含 gcloud CLI 啟動瀏覽器式驗證流程時使用的端點,並將對象設為工作團隊身分集區提供者中設定的 IdP。檔案不含機密資訊。
登入設定檔內容類似於下列範例:
{ "universe_domain": "googleapis.com", "universe_cloud_web_domain": "cloud.google", "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://sts.googleapis.com/v1/introspect" }
使用環境變數或使用中 gcloud CLI 設定中的屬性,指向登入設定檔,或直接搭配
gcloud auth login指令使用:環境變數
如要搭配環境變數使用登入設定檔,請完成下列操作說明:
-
將
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE環境變數設為登入設定檔的路徑。 -
執行下列指令:
gcloud auth login
- gcloud CLI 會參照環境變數,找出登入設定檔,然後啟動驗證程序。按照瀏覽器式流程驗證及授權 gcloud CLI,以便日後代表您存取資源。
如要停止使用
gcloud auth login指令的登入設定檔,請清除CLOUDSDK_AUTH_LOGIN_CONFIG_FILE環境變數。gcloud CLI 設定
如要搭配使用登入設定檔和 gcloud CLI 設定屬性,請完成下列操作說明:
-
使用下列指令,將有效 gcloud CLI 設定的
auth/login_config_file屬性設為登入設定檔的路徑:gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
執行下列指令:
gcloud auth login
- gcloud CLI 會參照設定屬性來尋找登入設定檔,然後啟動驗證程序。按照瀏覽器式流程驗證及授權 gcloud CLI,以便日後代表您存取資源。
如要停止使用登入設定檔執行
gcloud auth login指令,請使用下列指令取消設定屬性:gcloud config unset auth/login_config_file
gcloud auth login
如要直接使用登入設定檔搭配
gcloud auth login指令,請完成下列操作說明:-
如果您在建立登入設定檔時使用
--activate旗標,請執行下列指令:gcloud
-
將