При предоставлении ролей моей учетной записи службы эти роли не дают мне тех разрешений, которые, как они утверждают, предоставляют.
Я использую Terraform. Я создал новую учетную запись службы следующим образом:
gcloud iam service-accounts create terraform \
--display-name "Учетная запись администратора Terraform"
Я создал новые учетные данные JSON для этой учетной записи:
gcloud iam service-accounts keys create service account.json \
--iam-account (скрытый) предоставил роль
администратора экземпляра вычислений
этой учетной записи службы, как описано здесь: https://cloud.google.com/iam/docs/understanding-roles# role_types
проекты gcloud add-iam-policy-binding PROJECT_ID \
--member (скрыто) \
--role role / compute.instanceAdmin
Я вижу, что учетная запись службы имеет правильные разрешения:
gcloud projects get-iam-policy PROJECT_ID \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:terraform"
ROLE
roles/compute.instanceAdmin
И Я ВСЕ ЕЩЕ снова и снова получаю следующие ошибки, даже когда я предоставляю владельца
или редактор
ролей.
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
Согласно документации, указанной выше -
To avoid confusion, we suggest using unique service account names. If this is not possible, you can grant a role to the new service account by: 1. Explicitly removing all bindings granting that role to the old service account. 2. Re-granting those roles to the new service account.
Если пользователь будет управлять экземплярами виртуальных машин, которые настроены для работы в качестве учетной записи службы, вы также должны предоставить роль role / iam.serviceAccountUser. Пользователи, которым была предоставлена роль пользователя учетной записи службы для учетной записи службы, могут использовать ее для косвенного доступа ко всем ресурсам, к которым имеет доступ учетная запись службы.
Например, если учетной записи службы была предоставлена роль администратора вычислений (роли / compute. admin), пользователь, которому была предоставлена роль пользователей учетной записи службы (roles / iam.serviceAccountUser) в этой учетной записи службы, может действовать как учетная запись службы для запуска экземпляра Compute Engine. В этом потоке пользователь олицетворяет учетную запись службы для выполнения любых задач, используя предоставленные ему роли и разрешения.