Google cloud platform 构建bastion实例以运行terraform:API访问问题
TL;DR。无法确定bastion实例上需要启用哪些API作用域。还有,有没有关于建造堡垒的建议Google cloud platform 构建bastion实例以运行terraform:API访问问题,google-cloud-platform,terraform,service-accounts,terraform-provider-gcp,Google Cloud Platform,Terraform,Service Accounts,Terraform Provider Gcp,TL;DR。无法确定bastion实例上需要启用哪些API作用域。还有,有没有关于建造堡垒的建议 我正在处理一个bastion实例,我想从中运行terraform plan/terraform apply命令 我对堡垒实例的计划如下: 成立, 成立, 确保默认服务帐户可以访问GCP资源(terraform可以访问资源): 如果您从GCE实例运行Terraform,默认凭据将自动可用。有关更多详细信息,请参阅为实例创建和启用服务帐户 将地形配置存储在实例上,可以地形规划/地形应用 完成上面列
我正在处理一个bastion实例,我想从中运行
terraform plan
/terraform apply
命令
我对堡垒实例的计划如下:
地形规划
/地形应用
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修复,我已将bastion VM上的云API访问范围列表更改为允许完全访问所有云API。执行此操作后,terraform plan
和terraform apply
命令成功执行。作为下一步,我决定限制实例可以访问的API作用域的数量,但发现自己无法找到正确的API作用域集来访问服务帐户API(我得到的错误如上所述)
经过几次尝试后,地形规划
和地形应用
。这是我目前在bastion上使用的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
我试图找到以下问题的答案:
使用专用VM部署Terraform脚本通常是个问题,这就是我不喜欢Terraform的原因。但我发现了一种在无服务器环境下执行此操作的方法,从而避免了创建VM和维护VM:我使用云构建和Terraform容器
如果你想知道更多的话,我会在这个问题上发表意见。1)每篇文章问一个问题。2) 您试图控制错误的项(范围)。您应该管理分配给计算引擎默认服务帐户的角色。但是,Terraform需要您正在构建的服务所需的任何权限。这因脚本而异。花些时间学习什么是服务帐户、IAM角色和Terraform。然后,您将能够为每种类型的Terraform活动配置正确的权限。在这种情况下,可能需要创建一个专门用于此用途的服务帐户,该帐户具有您所需的确切权限,并将实例作为该服务帐户运行,你应该在答案中加入该链接的摘要,否则当该链接不再工作时,这是没有帮助的。