gcloud:用户无权访问服务帐户“默认”

Posted

技术标签:

【中文标题】gcloud:用户无权访问服务帐户“默认”【英文标题】:gcloud: The user does not have access to service account "default" 【发布时间】:2017-03-15 01:15:24 【问题描述】:

我尝试使用已激活的服务帐户来创建和删除 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 并没有做任何事情。 【参考方案1】:

与 Google 支持人员交谈后,问题是服务帐户没有激活“服务帐户用户”权限。添加“服务帐户用户”可解决此错误。

【讨论】:

干杯。这绝对做到了。唯一需要注意的是,该角色现在称为“服务帐户用户”。 有关上述观点的更多信息,请参阅cloud.google.com/iam/docs/…【参考方案2】:

将以下角色添加到进行操作的服务帐户:

Service Account User

另见:

https://cloud.google.com/kubernetes-engine/docs/how-to/iam#service_account_user

https://cloud.google.com/iam/docs/service-accounts#the_service_account_user_role

https://cloud.google.com/iam/docs/understanding-roles

【讨论】:

对我来说很好,我的情况是,我从 Google Cloud Build 调用 ssh 到 Google Engine VM Instance【参考方案3】:

对于那些最终在这里尝试使用以下命令执行Import of Firebase Firestore documents 的人:

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

我通过以下操作解决了这个问题:

    从Google Cloud Console Storage Bucket Browser,将完成操作的服务帐户添加到角色为Storage Admin成员列表中。 重新尝试操作。

为了安全起见,我在操作完成后撤销了角色,但这是可选的。

【讨论】:

【参考方案4】:

为服务帐户添加了服务帐户用户角色,它对我有用。

【讨论】:

以上是关于gcloud:用户无权访问服务帐户“默认”的主要内容,如果未能解决你的问题,请参考以下文章

政策报告,用于查看帐户在 GCloud 上可以访问的所有资源的摘要

如何处理“访问被拒绝。您无权阅读活动记录”。使用服务帐户访问 Admin SDK API 时

CloudKit iOS 10 错误:帐户无权访问 CloudKit 帐户

无权访问此资源/API (GCP)

gcloud\kubectl 身份验证问题:忘记服务帐户

Dataflow 服务帐户无法访问网络默认值