如果您使用的主體沒有完成工作所需的權限,或想在開發環境中使用服務帳戶,可以模擬服務帳戶。
使用服務帳戶模擬時,您會先以經過驗證的主體 (您的使用者帳戶或服務帳戶) 開始,然後為具有授權的服務帳戶要求短期憑證,以滿足您的用途需求。經過驗證的主體必須具備必要權限,才能模擬服務帳戶。
與使用服務帳戶金鑰相比,服務帳戶模擬功能更安全,因為服務帳戶模擬功能需要事先經過驗證的身分,而且使用模擬功能建立的憑證不會保留。相較之下,使用服務帳戶金鑰驗證不需要事先驗證,而且如果公開,永久金鑰就是高風險憑證。
如要進一步瞭解服務帳戶模擬功能,請參閱服務帳戶模擬功能。
事前準備
使用服務帳戶模擬功能前,請先啟用必要 API,並確認您具備所需角色。
啟用 API
如要模擬服務帳戶,您必須在專案中啟用 Service Account Credentials API。
必要的角色
如要取得模擬服務帳戶所需的權限,請要求管理員授予您服務帳戶的「服務帳戶權杖建立者」 (roles/iam.serviceAccountTokenCreator
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含 iam.serviceAccounts.getAccessToken
權限,這是模擬服務帳戶時的必要權限。
即使您是在自己建立的專案中工作,也必須將這些角色授予帳戶。
如要進一步瞭解模擬作業所需的角色,請參閱服務帳戶驗證的角色。
您可以使用下列方法模擬服務帳戶:
使用 gcloud CLI
gcloud CLI 提供簡單明瞭的方式來模擬服務帳戶。如果您需要使用服務帳戶,透過 gcloud CLI 存取資源或服務,這個方法就非常適合。 Google Cloud
您可以模擬特定 gcloud CLI 指令的服務帳戶,也可以設定 gcloud CLI,讓系統自動為每個指令模擬服務帳戶。
為特定 gcloud CLI 指令啟用模擬功能
如要對特定 gcloud CLI 指令使用模擬功能,請使用 --impersonate-service-account
標記。舉例來說,下列指令會使用指定服務帳戶提供的身分和存取權,列出儲存空間值區:
gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL
使用這個標記時,gcloud CLI 會為指定的服務帳戶要求短期憑證,並使用這些憑證向 API 進行驗證及授權存取。登入 gcloud CLI 的主體 (通常是您的使用者帳戶) 必須具備服務帳戶的必要權限。
預設使用 gcloud CLI 模擬身分
如要設定 gcloud CLI,使其預設使用服務帳戶提供的身分和存取權,請使用 gcloud CLI config 指令:
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
設定這個屬性後,gcloud CLI 會為指定的服務帳戶要求短期憑證,並使用這些憑證向 API 進行驗證,以及授權存取每個指令的資源。登入 gcloud CLI 的主體必須具備服務帳戶的必要權限。
設定應用程式預設憑證,以便使用用戶端程式庫
您可以使用服務帳戶模擬功能,設定本機應用程式預設憑證 (ADC) 檔案。支援模擬的用戶端程式庫可以自動使用這些憑證。使用模擬功能建立的本機 ADC 檔案支援下列語言:
- C#
- Go
- Java
- Node.js
- Python
使用服務帳戶模擬功能建立本機 ADC 檔案:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
您現在可以使用支援的語言,以與設定本機 ADC 檔案和使用者憑證後相同的方式,使用用戶端程式庫。驗證程式庫會自動尋找憑證。詳情請參閱「驗證以使用用戶端程式庫」。
並非所有驗證程式庫都支援使用服務帳戶模擬功能產生的本機 ADC 檔案憑證。詳情請參閱「 服務帳戶模擬作業傳回本機憑證的錯誤」。
產生及管理短期憑證
如果上述兩種方法都無法滿足您的用途,您需要產生及管理短期權杖。舉例來說,如果您需要其他類型的短期憑證 (存取權杖以外的憑證),或需要在實際工作環境中使用模擬功能,請使用這個方法。
如要瞭解如何產生短期權杖,請參閱「為服務帳戶建立短期憑證」。
後續步驟
- 進一步瞭解 ADC 如何尋找憑證。
- 瞭解驗證方法。