无法为服务帐户创建角色,因为“此资源不支持”

xet*_*a11 6 service-accounts gcloud google-cloud-iam

我想要执行以下脚本来创建我的服务帐户并为其赋予Cloud Build 服务帐户角色。

# create service account for github actions 
gcloud iam service-accounts create github-actions --display-name="Github Actions" 
 
# add iam permissions to github actions service account 
gcloud iam service-accounts add-iam-policy-binding github-actions@project-id.iam.gserviceaccount.com --member='serviceAccount:github-actions@project-id.iam.gserviceaccount.com' --role='roles/cloudbuild.builds.builder'                                
Run Code Online (Sandbox Code Playgroud)

最后一个命令执行失败

ERROR: Policy modification failed. For a binding with condition, run "gcloud alpha iam policies lint-condition" to identify issues in condition.
ERROR: (gcloud.iam.service-accounts.add-iam-policy-binding) INVALID_ARGUMENT: Role roles/cloudbuild.builds.builder is not supported for this resource.
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么,或者更好地说我能做些什么来解决这个问题。我需要该服务帐户具有该角色,以便我可以使用该服务帐户通过我的 Github Actions 管道启动 Cloud Build。

Daz*_*kin 11

这可能会令人困惑。服务帐户具有“双重性质”。它们可以被视为资源身份,但不能同时被视为资源和身份。请参阅管理服务帐户

您正在尝试向服务账户 ( github-actions@project-id.iam.gserviceaccount.com) 授予 IAM 绑定。在这种情况下,服务帐户是一种资源。您尝试引用的绑定引用相同的服务帐户 ( github-actions@project-id.iam.gserviceaccount.com),这次作为身份。这不可能。

您可能(!?)想要将绑定(按原样)授予项目(!)而不是服务帐户:

PROJECT=[[YOUR-PROJECT]]
ACCOUNT=github-actions
EMAIL="${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com"

gcloud projects add-iam-policy-binding ${PROJECT} \
--member="serviceAccount:${EMAIL}" \
--role='roles/cloudbuild.builds.builder'
Run Code Online (Sandbox Code Playgroud)

但是,在发出该命令之前,确保这是您的意图。