TL; DR . Не могу понять, какую область действия API необходимо включить на экземпляре бастиона. Кроме того, какой-нибудь совет по созданию экземпляра бастиона?
Я работаю над экземпляром бастиона, из которого я хотел бы запускать команды terraform plan
/ terraform apply
.
МойПлан для бастионного экземпляра таков:
- настройка Вход в ОС ,
- настройка двухфакторная аутентификация ,
убедитесь, что учетная запись службы по умолчанию имеет доступ к ресурсам GCP (чтобы у terraform была возможность доступа к ресурсам):
Если вы используете Terraform из экземпляра GCE, по умолчаниюучетные данные автоматически доступны . Дополнительные сведения см. В разделе «Создание и включение учетных записей служб для экземпляров».
reference
сохранять конфигурации terraform в экземпляре, иметь возможность terraform plan
/ terraform apply
После выполнения пунктов 1, 3 и 4 из приведенного выше списка у меня возникла проблема с доступом Terraform к API управления учетными записями служб - запуск terraform plan
приводит кследующее:
$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
google_service_account.terraform_state_user: Refreshing state... [id=projects/xxxxxxxx-xxxxxx-xxxxxx/serviceAccounts/terraform-state-user@xxxxxxxx-xxxxxx-xxxxxx.iam.gserviceaccount.com]
google_storage_bucket.access_logs: Refreshing state... [id=xxxxxxxx-bucket-access-logs]
google_storage_bucket.terraform_state_storage: Refreshing state... [id=xxxxxxxx-terraform-state-storage]
Error: Error reading Service Account "projects/xxxxxxxx-xxxxxx-xxxxxx/serviceAccounts/terraform-state-user@xxxxxxxx-xxxxxx-xxxxxx.iam.gserviceaccount.com": googleapi: Error 403: Request had insufficient authentication scopes., forbidden
В качестве исправления PoC я изменил список областей доступа к Cloud API на виртуальной виртуальной машине на Разрешить полный доступ ко всем облачным API . После этого команды terraform plan
и terraform apply
были успешно выполнены. В качестве следующего шага я решил ограничить количество областей API, к которым у экземпляра есть доступ, но не смог найти правильный набор областей API для доступа к API учетной записи службы (я получаю сообщение об ошибке, как указано выше).
После пары попыток terraform plan
и terraform apply
на работу. Это список областей API, которые у меня сейчас есть на бастионе:
Bigtable Admin Disabled
Bigtable Data Disabled
Cloud Datastore Disabled
Cloud Debugger Disabled
Cloud Pub/Sub Disabled
Cloud Source Repositories Disabled
Cloud SQL Disabled
Compute Engine Read Write
Service Control Enabled
Service Management Read Write
Stackdriver Logging API Write Only
Stackdriver Monitoring API Write Only
Stackdriver Trace Write Only
Storage Read Write
Task queue Disabled
User info Enabled
Я пытаюсь найти ответы на следующие вопросы:
- Какую область API я должен разрешить, чтобы иметь возможность читать / записывать ресурсы учетной записи службы?
- при условии, что я использую SSH в бастион через функцию «Вход в ОС» (которая зависит от роли IAM моего собственного пользователя), используется ли моя собственная учетная записьполучить доступ к API или это учетная запись службы по умолчанию? (это просто, чтобы помочь моему пониманию),
- какие-либо общие рекомендации по созданию экземпляра бастиона?