terraform - 如何解决创建服务时出错: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
关于如何解决这个问题的任何想法?
解决方案
创建 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 ,将\替换为^
推荐阅读
- html - white-space:前行在顶部添加不寻常的空间
- jquery - HoverIntent 配置,不拾取
- javascript - Safari 中的选框动画
- java - 从数据库获取数据时没有结果,为什么?java(安卓工作室
- java - 我们如何在 FXML 中定义上下文菜单?
- android - 启用 tls 1.2 Android 4.X - Xamarin Android -
- mysql - 如何使用 MariaDB 从 JSON 数组中的多个对象中提取值?
- angular - 如何在 Angular 6 中显示表单控件值?
- xml - 访问/过滤没有值的 XML 节点
- c# - .Net Core 2.1 获取客户端机器 windows 用户名