GCE 要求“projects/someproject”具有“compute.zones.list”权限

GCE 要求“projects/someproject”具有“compute.zones.list”权限

我在 GCP 中创建了项目。然后我创建了具有Compute Admin角色的服务帐户。之后,我Compute Engine API为我的项目启用了此功能,但无法使用实例:

#gcloud compute instances list  
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/someproject'

我究竟做错了什么 ?

答案1

检查您用于运行该命令的服务帐户是否具有正确的Compute Engine 角色。您可以在此处执行此操作:IAM 和管理 > IAM。

- 更新 -

为了检查服务帐户具有正确的权限在 Cloud Shell 中运行以下命令:

$ gcloud iam service-accounts keys create key.json \ --iam-account [email protected]

上述命令将以 JSON 格式创建并下载此服务帐户的密钥。

$ gcloud projects add-iam-policy-binding some-project-name \ --member serviceAccount:[email protected] \ --role=roles/compute.admin

此命令将为 new-sa 服务帐户分配 compute.admin 角色。

$ gcloud auth activate-service-account --key-file=key.json

$ gcloud compute instances list

用这些来冒充新萨使用已经下载的key.json文件登录服务账户,并执行相应的命令列出实例某个项目名称项目。如果成功,则问题出在其他地方。

答案2

我第一次在 Google 测试期间创建了服务帐户“cloud66”。这很可能影响了访问权限。然后我将计费从测试期切换为付费期。我在“API 和服务 -> 凭据”部分中删除并重新创建了 cloud66 服务帐户。但在“IAM”部分中有一个针对“cloud66”的访问策略,其角色为“ComputeAdmin”。当我从“IAM”部分删除访问策略并重新创建服务帐户时,问题就解决了。

相关内容