我可以为 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 密钥吗?