构建堡垒实例以运行Terraform:API访问权限问题

TL; DR 。无法确定需要在堡垒实例上启用哪些API范围。还有,关于建造堡垒实例的任何建议吗?


我正在研究要从中运行terraform plan / terraform apply命令的堡垒实例。

我对堡垒实例的计划是这样:

  1. 设置OS Login
  2. 设置two-factor authentication
  3. 确保默认服务帐户有权访问GCP资源(以使Terraform能够访问资源):

      

    如果您是从GCE实例运行Terraform,默认凭据将自动可用。有关更多详细信息,请参见为实例创建和启用服务帐户。

         

    reference

  4. 在实例上存储地形配置,能够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修复程序,我已将堡垒VM上的 Cloud API访问范围列表更改为允许对所有Cloud API的完全访问权限。这样做之后,terraform planterraform apply命令成功。下一步,我决定限制实例可以访问的API范围的数量,但发现自己无法找到正确的API范围集来访问服务帐户API(我收到上述错误)。

经过几次尝试terraform planterraform apply才能工作。这是我目前拥有的API范围的list

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

我正在寻找以下问题的答案:

  1. 我应该启用什么API范围才能读取/写入服务帐户资源?
  2. 如果我通过“ OS Login”功能(取决于我自己的用户的IAM角色)通过SSH进入堡垒,是我自己的帐户用于访问API,还是默认服务帐户? (这只是为了帮助我理解),
  3. 有关建造堡垒实例的一般建议吗?
renqiu521 回答:构建堡垒实例以运行Terraform:API访问权限问题

使用专用VM部署Terraform脚本通常是一个问题,这就是为什么我不喜欢Terraform的原因。但是我找到了一种在无服务器上执行此操作,从而避免创建和维护VM的方法:我使用Cloud Build和Terraform容器。

如果您想了解更多,我wrote this article

本文链接:https://www.f2er.com/3124968.html

大家都在问