我可以为 Terraform for GCP 赋予管理员角色吗? (Cloud Run 域映射示例)

Posted

技术标签:

【中文标题】我可以为 Terraform for GCP 赋予管理员角色吗? (Cloud Run 域映射示例)【英文标题】:Can I give admin role to Terraform for GCP? (example on Cloud Run domain mapping) 【发布时间】:2020-06-14 16:10:30 【问题描述】:

我在为 Terraform 提供必要的 GCP 角色时遇到问题,其中有很多 Error 403: The caller does not have permission

我这样做的方式是逐步添加权限,但这更像是一种反复试验的方法,我最终会添加授权。

有没有办法像我们在 AWS 上那样在 GCP 上为 Terraform 提供完整的管理员角色?或者也许我遗漏了一些东西,但我在网上找不到关于该主题的文档。

谢谢。

--

更新:

我要创建的资源是 Cloud Run 的域映射。这是通过以下方式完成的:

resource "google_cloud_run_domain_mapping" "default" 
  location = "europe-west1"
  name     = "mydomain.com"

  metadata 
    namespace = "default"
  

  spec 
    route_name = google_cloud_run_service.default.name
  

P.S.:该域已通过 Google 网站管理员页面进行了验证。

terraform apply 上返回的问题是:

Error creating DomainMapping: googleapi: Error 403: The caller does not have permission

为了解决这个特定问题,我需要找到需要为我的 Terraform 角色添加的授权,但在需要新的 GCP 服务时再次遇到相同的问题只是时间问题。

此外,我完全能够使用 GCP 控制台添加映射,这表明我能够通过所有必需的验证步骤。

让 Terraform 管理所有 GCP 资源并让它创建所有必要的资源不是更好吗?

【问题讨论】:

你想用 terraform 做什么? 嗨@guillaumeblaquiere,我添加了有关该问题的更新,并提供了更多详细信息 我认为最好限制 api 访问,直到你完全确定你会需要它。显然,另一种选择是授予 Terraform GodMode 权限以创建所有内容 嗨@cricket_007 我同意,我们应该始终将授权限制在必要的范围内。不幸的是,很难找到有关使用新 Terraform 资源时要添加哪些授权的文档。在使用资源时,Terraform 的文档非常棒,但是缺少所需的授权部分。你怎么知道要添加哪些?例如,在google_cloud_run_domain_mapping 上,我选择随机授权进行反复试验!这不聪明:( 我不太熟悉 GCP 资源的细粒度细节,但我想 Cloud Run 有自己的项目子集......域映射听起来像 VPC 配置 【参考方案1】:

有关使用预定义的过度特权角色,请参阅understanding roles 文档。

在link within Daniel's answer,文档提示可以Add verified domain owners to other users or service accounts。

一旦服务帐户被信任以进行域映射,请提供roles/run.admin 角色以验证它解决了问题,然后通过switching to a custom role 对其进行限制以遵守最低权限。

【讨论】:

【参考方案2】:

在添加自定义域的特定情况下,您需要参考documentation 的以下部分。

请注意,您需要将服务帐户添加为经过验证的所有者才能获得正确的权限。

【讨论】:

以上是关于我可以为 Terraform for GCP 赋予管理员角色吗? (Cloud Run 域映射示例)的主要内容,如果未能解决你的问题,请参考以下文章

GCP 为每个项目和 Terraform 预定义 IAM 角色

我可以使用 Terraform 创建 GCP API 密钥吗?

使用来自 GCP 市场的 terraform 创建实例

terraform GCP https) 负载均衡器

使用 Terraform 创建 GCP 自定义 IAM 角色

等待 GCP 基础架构更改传播的 Terraform 问题