Роли учетных записей служб GCP работают некорректно

При предоставлении ролей моей учетной записи службы эти роли не дают мне тех разрешений, которые, как они утверждают, предоставляют.

Я использую 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 даже не проверяет учетные данные. Это безумие.

Спасибо

0
задан 23 October 2019 в 00:30
2 ответа

Вы случайно не удалили учетную запись службы 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.
1
ответ дан 4 December 2019 в 15:36

Если пользователь будет управлять экземплярами виртуальных машин, которые настроены для работы в качестве учетной записи службы, вы также должны предоставить роль role / iam.serviceAccountUser. Пользователи, которым была предоставлена ​​роль пользователя учетной записи службы для учетной записи службы, могут использовать ее для косвенного доступа ко всем ресурсам, к которым имеет доступ учетная запись службы.

Например, если учетной записи службы была предоставлена ​​роль администратора вычислений (роли / compute. admin), пользователь, которому была предоставлена ​​роль пользователей учетной записи службы (roles / iam.serviceAccountUser) в этой учетной записи службы, может действовать как учетная запись службы для запуска экземпляра Compute Engine. В этом потоке пользователь олицетворяет учетную запись службы для выполнения любых задач, используя предоставленные ему роли и разрешения.

0
ответ дан 4 December 2019 в 15:36

Теги

Похожие вопросы