【问题标题】:Permisson error creating project with GCP token, terraform and vault使用 GCP 令牌、terraform 和保管库创建项目的权限错误
【发布时间】:2021-08-06 10:24:45
【问题描述】:

我想使用 vault 创建一个带有 terraform 的 GCP 项目以获取令牌。我已经配置了 GCP 机密引擎,我要求 terraform 中的 vault 获取令牌;但是当我运行 terraform 来创建项目时,我收到一条错误消息:

Error 403: Service accounts cannot create projects without a parent., forbidden. If you received a 403 error, make sure you have the `roles/resourcemanager.projectCreator` permission
│ 
│   with module.gcp-project.google_project.project,
│   on .terraform/modules/gcp-project/main.tf line 6, in resource "google_project" "project":
│    6: resource "google_project" "project" {

我认为问题出在保险库令牌的角色集绑定中,但我不知道必须将哪个资源放入角色集中。

我尝试使用resourcemanager.projectCreator 角色;但它总是问我项目名称。

我应该向所有组织授予权限吗?因为如果我想创建新项目,如果我将一个存在的项目作为资源,我将无法创建另一个项目。

谢谢!!

【问题讨论】:

  • 我遇到了与您完全相同的错误消息,我正在使用 terraform-google-modules/project-factory/google v10.3.2,但到目前为止还没有解决。希望有人可以帮助我们

标签: google-cloud-platform terraform vault


【解决方案1】:

您必须create a GCP Organization resource 并确保您的 Vault GCP 角色集是在组织内部的项目(例如“管理员”项目)中创建的。

当您使用 terraform 创建项目创建者角色集时,您需要为其授予具有resourcemanager.projects.create 权限的角色。您可以针对整个组织或组织内的单个文件夹创建绑定。例如:

resource "vault_gcp_secret_roleset" "default" {
  backend      = var.gcp_secret_backend
  roleset      = var.roleset_name
  project      = var.project
  secret_type  = var.secret_type
  token_scopes = ["https://www.googleapis.com/auth/cloud-platform"]

  binding {
    resource = "//cloudresourcemanager.googleapis.com/folders/${var.folder_id}"

    roles = [
      "roles/resourcemanager.projectCreator",
      "roles/resourcemanager.projectMover",
      "roles/resourcemanager.projectDeleter",
    ]
  }
}

【讨论】:

  • 这个问题很难发现问题,因为:1) 服务帐户无法在没有父级(文件夹或组织)的情况下创建项目,但是 2) 用户可以这样做,如果您使用用户凭据进行测试,everyting 将工作,然后突然停止,不知道为什么。
猜你喜欢
  • 2021-06-13
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
相关资源
最近更新 更多