使用 GCP 令牌、terraform 和保险库创建项目时出现权限错误

Permisson error creating project with GCP token, terraform and vault

我想用 terraform 创建一个 GCP 项目,使用 vault 来获取令牌。我已经配置了 GCP 机密引擎,我要求 terraform 中的保险库获取令牌;但是当我 运行 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 角色;但它总是问我项目名称。

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

谢谢!!

您必须 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",
    ]
  }
}