在研讀Google Cloud IAM(Identity and Access Management)時,讀到成員除了Google帳戶,還可能有Service Account(和其他),不是很懂,故問了ChatGPT,得到以下回答:
Service Account是一種由Google管理的特殊帳戶,用來讓應用程式或虛擬機器以機器身分去存取GCP資源。不像人類使用者需要登入帳密,服務帳戶使用金鑰憑證(key)或IAM權限來進行身份驗證與授權。
- 使用情境範例:
- 一個自動化腳本每天從BigQuery抽資料並存到Google Cloud Storage:使用service account認證以便程式自動運作。
- Cloud Run應用程式要存取Firestore或Pub/Sub:指定應用程式使用某個service account去執行。
- Terraform/CI-CD pipeline要部署GCP基礎架構:使用service account金鑰來認證。
- Service Account的重要組成:
- Email(帳戶識別)
例如:my-service-account@my-project.iam.gserviceaccount.com
像是一般使用者帳號,但是代表服務。 - Roles(角色與權限)
控制這個帳戶能做什麼,例如:Storage Admin,BigQuery Viewer等。 - Key(金鑰)
- 可以下載為.json檔。
- 程式中用這個key進行驗證(常與Google API搭配)。
- 建立與管理方式:
- 在GCP Console中建立
IAM & Admin → Service Accounts → 建立帳戶。 - 設定權限(IAM Roles)
給予該帳戶執行所需資源的最小權限(遵循最小權限原則)。 - 產生JSON金鑰(如需要)
下載並妥善保管,不能公開上傳到GitHub!
- 總結:
Service Account是應用程式使用的身份帳戶,用來讓程式自動存取GCP資源,並於認證時使用金鑰(可產生JSON憑證),其存取GCP資源的權限是透過IAM控制賦予的能力。