我不明白为什么 IAM 的使用如此难以理解。例如,我正在尝试为 VM 实例创建计划。当我将实例添加到计划时,我得到:
Compute Engine System service account [email protected]
needs to have [compute.instances.start,compute.instances.stop] permissions applied in order to perform this operation
我在 IAM 中找到了该帐户,但我不知道这些东西属于哪个角色。我应该添加哪个角色来实现这一目标。
如果我尝试gcloud
我得到错误:
gcloud projects add-iam-policy-binding general-123456 \
--member=user:[email protected] --role=roles/compute.instances.start
ERROR: (gcloud.projects.add-iam-policy-binding) User [xxxxxx] does not have permission to access projects instance [general-123456:getIamPolicy] (or it may not exist): The caller does not have permission
我是帐户和所有项目的所有者。
我该怎么办?
一般来说,当他们表达喜欢someth.the.other.etc
或someThingsNotRight
-如何识别正确的角色名称时,处理 GCP 权限的程序是什么?
要找出具有 compute.instances.start 和 compute.instances.stop 的角色,您可以转到角色列表并按这些权限进行过滤(在过滤器框中键入一个)[1]。这将产生大约十几个具有所需权限的不同角色,但这些默认角色将在权限数量方面非常广泛(所有者、编辑者、计算管理员)或为其他任务而设计,与什么无关您正在尝试做(Cloud Dataflow 服务代理、Kubernetes Engine 服务代理)。
在您的情况下,您可以创建一个新角色(将其命名为 Instance Scheduler)[2] 并仅分配这两个权限,然后将该角色绑定到您的服务帐户。
[1] https://cloud.google.com/iam/docs/creating-custom-roles#getting_the_role_metadata
[2] https://cloud.google.com/iam/docs/creating-custom-roles#creating_a_custom_role