【发布时间】:2019-09-07 14:13:30
【问题描述】:
我对 GCP 很陌生。我有一个具有以下角色的服务帐户: 我为它创建了一个 json 密钥并用它来验证 gcloud 客户端。此客户端正在该服务帐户上该项目的实例上运行。我似乎没有任何权限:
# gcloud auth activate-service-account cloudbreak@**********-lab.iam.gserviceaccount.com --key-file **********-lab-804c90ab0a14.json
# gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* cloudbreak@**********-lab.iam.gserviceaccount.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
# gcloud compute regions list
ERROR: (gcloud.compute.regions.list) Some requests did not succeed:
- Required 'compute.regions.list' permission for 'projects/**********-lab'
# gcloud projects get-iam-policy **********-lab
ERROR: (gcloud.projects.get-iam-policy) User [cloudbreak@**********-lab.iam.gserviceaccount.com] does not
have permission to access project [**********-lab:getIamPolicy] (or it may not exist): The caller does n
ot have permission
我错过了什么?
【问题讨论】:
-
这很奇怪,因为
Compute Instance Admin (v1)和Project IAM Admin角色足以获得compute.regions.list和resourcemanager.projects.getIamPolicy的权限。您如何使用服务帐户进行身份验证?您是直接使用它启动计算 VM(gcloud compute instances create [...] --service-account=<your_service_account>,还是使用您生成的 JSON 密钥? -
@norbjd,使用身份验证命令进行了更新。我使用部署创建的机器。我尝试在本地对服务帐户进行身份验证,但我得到了同样的错误
-
您能否尝试(单独):1)直接使用关联的服务帐户创建一个计算实例(
gcloud compute instances create [...] --service-account=<your_service_account>)2)生成一个新的 JSON 密钥并尝试进行身份验证(本地或从计算虚拟机)? -
你试过
gcloud config set project PROJECTNAME吗?如果您不在服务帐户有权访问的项目中,则您将无权访问;)
标签: google-cloud-platform gcloud service-accounts