1

我想使用 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角色;但它总是问我项目名称。

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

谢谢!!

4

1 回答 1

2

您必须创建 GCP 组织资源并确保您的 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",
    ]
  }
}
于 2021-05-26T13:38:43.530 回答