我在我的项目上创建了一个自定义服务帐户travisci-deployer@PROJECT_ID.iam.gserviceaccount.com
,并将其授予Cloud Run管理员角色:
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
--member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role="roles/run.admin"
然后我将这个服务账户设置为我的gcloud命令的身份标识:
gcloud auth activate-service-account --key-file=google-key.json
然而,当我运行gcloud beta run deploy
命令时,出现了一个关于“计算引擎默认服务帐号”没有iam.serviceAccounts.actAs
权限的错误:
gcloud beta run deploy -q "${SERVICE_NAME}" \
--image="${CONTAINER_IMAGE}" \
--allow-unauthenticated
Deploying container to Cloud Run service [$APP_NAME] in project [$PROJECT_ID] region [us-central1]
Deploying...
Deployment failed
ERROR: (gcloud.beta.run.deploy) PERMISSION_DENIED: Permission 'iam.serviceaccounts.actAs'
denied on service account 1075231960084-compute@developer.gserviceaccount.com
对我来说这似乎很奇怪(因为我没有使用GCE默认的服务账号身份,尽管一旦部署应用程序,Cloud Run应用程序会使用它)。
所以1075231960084-compute@developer.gserviceaccount.com
账户正在被用于API调用,而不是我在gcloud
上配置的travisci-deployer@PROJECT_ID.iam.gserviceacount
服务账号吗?
我该如何解决这个问题?
roles/iam.serviceAccountUser
,那么拥有run.*
权限之一的用户可以做服务帐户运行的服务所能做的任何事情(通过持有执行该操作的代码,可能包括使用已知登录凭据启动计算 VM)。要求具有actAs
服务帐户的权限可以通过明确要求所需的权限来关闭此漏洞。 - E. Andersoniam.serviceAccounts.actAs
等同于Service Account User?如果你在文本框中快速输入"service accounts",它不会出现...因为它是复数形式...搜索引擎应该允许同时搜索技术名称和人类名称。 - undefined