用户管理服务帐户以部署 CloudRun 实例

User manage Service Account to deploy CloudRun instance

我需要你的帮助。我无法找出我缺少的东西。我创建了用户管理的 SA 并提供了角色

roles/run.admin 
roles/iam.serviceAccountUser 

但不知何故我在创建服务时看不到它:

我还向默认计算 SA 添加了模拟。

我正在通过 terraform 推动更改:

resource "google_service_account" "sa-deployer" {
  project      = local.project_id
  account_id   = "${local.env}-sa-deployer-tf"
  display_name = "Service Account to deploy CloudRun instance"
}

resource "google_service_account_iam_member" "gce-default-account-iam" {
  service_account_id = data.google_compute_default_service_account.default.name
  role               = "roles/iam.serviceAccountUser"
  member             = "serviceAccount:${google_service_account.sa-deployer.email}"

  depends_on = [
    google_service_account.sa-deployer
  ]
}

resource "google_project_iam_binding" "sa-deployer-run-admin" {
  project = local.project_id
  role    = "roles/run.admin"

  members = [
    "serviceAccount:${google_service_account.sa-deployer.email}",
  ]

  depends_on = [
    google_service_account.sa-deployer
  ]
}

resource "google_project_iam_binding" "sa-deployer-build-admin" {
  project = local.project_id
  role    = "roles/cloudbuild.builds.builder"

  members = [
    "serviceAccount:${google_service_account.sa-deployer.email}",
  ]

  depends_on = [
    google_service_account.sa-deployer
  ]
}

当前用户必须是 serviceAccountUser 才能列出项目上的服务帐户。

要允许用户管理服务帐户,请授予以下角色之一:

服务帐户用户 (roles/iam.serviceAccountUser):包括列出服务帐户、获取有关服务帐户的详细信息以及模拟服务帐户的权限。

服务帐户管理员 (roles/iam.serviceAccountAdmin):包括列出服务帐户和获取服务帐户详细信息的权限。还包括创建、更新和删除服务帐户的权限,以及查看或更改服务帐户的 IAM 策略的权限。

要了解有关这些角色的更多信息,请参阅 Service Accounts roles

IAM 基本角色(roles/viewer、roles/editor)还包含管理服务帐户的权限。您不应在生产环境中授予基本角色,但可以在开发或测试环境中授予它们。

有关详细信息,请参阅以下文档。

  1. Permissions to manage service accounts.
  2. Listing service accounts.