如何解决创建服务时出错: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"
}

在app service中,我有这个

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

对于如何解决这个问题有什么想法吗?

当您创建诸如Cloud Run这样的资源时,您可以选择将服务帐户附加到该资源。

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

Error: Error creating Service: googleapi: Error 403: Permission"iam.serviceaccounts。在服务帐户上拒绝行动app-worker@samuel-django-project.iam.gserviceaccount.com(也有可能)不存在)。

解决方案是添加角色roles/iam.serviceAccountUser以地形的身份运作。你的问题中没有指明身份。标识可以是用户帐户或服务帐户。进入谷歌云控制台->我。查找身份并添加角色。

也可以使用CLIgcloud。确切的命令参数取决于标识类型。

对于用户帐户:

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,替换^

我运行了下面的代码:

gcloud config set auth/impersonate_service_account [SA_FULL_EMAIL] 

它对我很有效。

如果你在Google Cloud Shell应用Terraform时遇到这个问题.

我也遇到了一个非常类似的错误:

Error: googleapi: Error 403: Missing necessary permission enter code hereiam.serviceAccounts.actAs for $MEMBER 
on the service account mr-service-account-sa@mr-project.iam.gserviceaccount.com. 
Grant the role 'roles/iam.serviceAccountUser' to $MEMBER on the service  
account mr-service-account-sa@mr-project.iam.gserviceaccount.com. 
You can do that by running 'gcloud iam service-accounts 
add-iam-policy-binding mr-service-account-sa@mr-project.iam.gserviceaccount.com --member=$MEMBER 
--role=roles/iam.serviceAccountUser'. 
In case the member is a service account please use the prefix 'serviceAccount:' instead of 'user:'.

我认为这个错误信息具有欺骗性。

我的解决方案:

  • 不是给予"服务帐户用户";角色到mr-service-account-sa@mr-project.iam.gserviceaccount.com
  • 没有<<li>/strong>给予"服务帐户用户";角色到平台部署服务帐户。
  • 给予"服务帐户用户";角色到我自己的个人GCP帐户。

在应用Terraform时,Cloud Shell似乎使用了混合的授权帐户。在某些情况下,它使用在提供程序中定义的服务帐户,而在其他情况下,它使用您自己的GCP OAuth帐户。

相关内容

  • 没有找到相关文章

最新更新