gcloud:用户无法访问服务帐户“default”

17

我尝试使用一个激活的服务账号来创建和删除gcloud容器集群(k8s集群),使用以下命令:

gcloud config configurations create my-svc-account \
   --no-activate \
   --project myProject


gcloud auth activate-service-account my-svc-account@my-project.iam.gserviceaccount.com \
   --key-file=/path/to/keyfile.json \
   --configuration my-svc-account

gcloud container clusters create a-new-cluster \
   --configuration my-svc-account \
   --project= my-project
   --zone "my-zone"

我总是收到这个错误:

...ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message=The user does not have access to service account "default".

我该如何授予my-svc-account访问GKE默认服务账号的权限?


请注意,gcloud config configurations create my-svc-account --no-activate --project myproject 不会在创建的配置中设置项目。实际上,--project 没有任何作用。 - cherba
6个回答

35

与谷歌支持团队交流后,发现问题在于服务账号未启用“服务账号用户”权限。添加“服务账号用户”权限可解决此错误。


12
干杯。这肯定做到了。 唯一需要注意的是,该角色现在被称为“服务帐号用户”。 - mongrelion
有关上述内容的更多信息,请参见https://cloud.google.com/iam/docs/service-accounts#the_service_account_actor_role。 - matt b
1
你刚刚拯救了我的神经系统。谢谢。 - OnlyDryClean Codzy

14

对我来说很有效,我的情况是,我从Google Cloud Build调用ssh到Google Engine VM实例。 - vanduc1102

1
对于那些试图使用如下命令进行Firebase Firestore文档导入的人:

gcloud beta firestore import --collection-ids='collectionA','collectionB' gs://YOUR_BUCKET

我通过以下方式解决了这个问题:

  1. Google Cloud Console Storage Bucket Browser中,添加完成操作的服务帐户到成员列表,并赋予Storage Admin角色。
  2. 重新尝试该操作。

出于安全考虑,在操作完成后,我撤销了该角色,但这是可选的。


1

iam.serviceAccounts.actAs是您从服务帐户用户需要的确切权限。


1

FYI:我无法在 https://console.cloud.google.com/iam-admin/orgpolicies/list 的用户界面中“看到”此策略,但根据 https://cloud.google.com/build/docs/securing-builds/configure-user-specified-service-accounts#cross-project_set_up ,它默认已启用(“在具有您指定的服务帐号的项目中,请确保未强制执行 iam.disableCrossProjectServiceAccountUsage 组织策略约束。默认情况下会强制执行此约束。”) - Hirnhamster
跟进:在选择受影响的项目时(之前我选择了组织作为项目),我能够在界面中看到它。要禁用它,我需要拥有“组织策略管理员”角色,并且可以通过 https://console.cloud.google.com/iam-admin/orgpolicies/iam-disableCrossProjectServiceAccountUsage/edit?project=$home-project-of-service-account 对每个项目进行禁用(而不是针对整个组织)。几分钟后,更改生效,(误导性的)错误消失了。 - Hirnhamster

0

我给服务账户添加了服务账户用户角色,然后它对我起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接