首页 > 解决方案 > 如何解决创建服务时出错:googleapi:错误 403:服务帐户上的权限“iam.serviceaccounts.actAs”被拒绝

问题描述

我一直在尝试创建一个公共云运行调用程序策略并将其绑定到我的 cb_app 云运行服务,以便可以公开它。我创建了一个自定义服务并为其分配了云管理员角色。但是得到这个错误

Error: Error creating Service: googleapi: Error 403: Permission 'iam.serviceaccounts.actAs' denied on service account app-worker@samuel-django-project.iam.gserviceaccount.com (or it may not exist).

这是配置

resource "google_cloud_run_service_iam_member" "domain" {
  service = google_cloud_run_service.cb_app.name
  location = google_cloud_run_service.cb_app.location
  role = "roles/run.admin"
  member = "serviceAccount:${var.service_account}" 
}
#create service account to run service
resource "google_service_account" "cb_app" {
    account_id    = "app-worker"
    display_name  = "app worker"
}

在应用服务中,我有这个

spec {
      # Use locked down Service Account
      service_account_name = google_service_account.cb_app.email

关于如何解决这个问题的任何想法?

标签: terraformgoogle-cloud-runservice-accountsterraform-provider-gcpgoogle-iam

解决方案


创建 Cloud Run 等资源时,您可以选择将服务帐号附加到资源。

以下错误表示 Terraform 正在使用的身份(用户或服务帐户)没有将服务帐户附加到资源的权限。

错误:创建服务时出错:googleapi:错误 403:服务帐户 app-worker@samuel-django-project.iam.gserviceaccount.com 上的权限“iam.serviceaccounts.actAs”被拒绝(或者它可能不存在)。

解决方案是将角色roles/iam.serviceAccountUser添加到运行 Terraform 的身份。您没有在问题中指定身份。身份可以是用户帐户或服务帐户。转到 Google Cloud Console -> IAM。找到身份并添加角色。

您还可以使用 CLI gcloud。确切的命令参数取决于身份类型。

对于用户帐户

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:someone@gmail.com' \
--role='roles/iam.serviceAccountUser'

对于服务帐户

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:myserviceaccount@PROJECT_ID.iam.gserviceaccount.com' \
--role='roles/iam.serviceAccountUser'

上述命令使用 Linux 语法。对于 Windows ,将\替换为^


推荐阅读