GCP 服務帳號角色無法正常工作
在向我的服務帳戶授予角色時,這些角色不會授予我他們所說的權限。
我正在使用 Terraform。我創建了一個新的服務帳戶,如下所示:
gcloud iam service-accounts create terraform \ --display-name "Terraform admin account"
我為此帳戶創建了一個新的 JSON 憑據:
gcloud iam service-accounts keys create service account.json \ --iam-account terraform@PROJECT_ID.iam.gserviceaccount.com
我已將
Compute Instance Admin
角色授予此服務帳戶,如下所述:https ://cloud.google.com/iam/docs/understanding-roles#role_types
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:terraform@PROJECT_ID.iam.gserviceaccount.com \ --role roles/compute.instanceAdmin
我可以看到服務帳戶具有正確的權限:
gcloud projects get-iam-policy PROJECT_ID \ --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:terraform" ROLE roles/compute.instanceAdmin
而且我仍然一遍又一遍地收到以下錯誤,即使我授予
owner
或editor
角色。Error: Error reading ComputeNetwork "network-2pal-network": googleapi: Error 403: Required 'compute.networks.get' permission for 'projects/PROJECT_ID/global/networks/mars-production-network-2pal-network', forbidden
Error: Error reading ComputeGlobalAddress "mars-production-lb-ip": googleapi: Error 403: Required 'compute.globalAddresses.get' permission for 'projects/PROJECT_ID/global/addresses/production-lb-ip', forbidden
我完全被困住了。有誰知道如何克服這個問題。它就像 GCP 甚至沒有檢查憑據。這是瘋狂。
謝謝
您是否曾經刪除過 terraform 服務帳戶,只是為了稍後重新創建它?重新創建的同名服務帳戶會出現意外行為。這是 GCP IAM 中的一個已知問題-deleting_and_recreating_service_accounts
根據上面連結的文件 -
為避免混淆,我們建議使用唯一的服務帳戶名稱。 如果這不可能,您可以通過以下方式向新服務帳戶授予角色: 1. 顯式刪除將角色授予舊服務帳戶的所有綁定。 2. 將這些角色重新授予新服務帳戶。