![](/img/trans.png)
[英]Why do service accounts appear with the CLI gcloud and not in the IAM Cloud Console?
[英]How do I grant a specific permission to a Cloud IAM service account using the gcloud CLI?
我知道我可以通过 UI (Cloud Console) 来完成,我也可以分配角色。 虽然,我如何轻松授予单个权限?
例如,我使用新创建的服务帐户将映像推送到 Google Container Registry,但收到错误消息,指出此服务帐户没有storage.buckets.get
权限。 使用 CLI 授予此特定权限的最简单方法是什么?
您不能直接向服务帐号授予权限,这不是 Google Cloud IAM 的工作方式。 仅将角色分配给服务帐户、用户或组,这些服务帐户、用户或组通常包含一组权限。
如果您希望角色只包含一个权限,或者只包含您感兴趣的权限,您可以考虑创建一个自定义角色,它允许您指定要授予定义的角色的权限以便在更细粒度的级别上限制访问。 然后,将该自定义角色分配给服务帐户:
使用gcloud
CLI,您可以使用gcloud iam roles create
自定义角色,即:
gcloud iam roles create bucketViewer \\ --project example-project-id-1 \\ --title "Bucket viewer" \\ --description "This role has only the storage.buckets.get permission" \\ --permissions storage.buckets.get
这将为项目 ID example-project-id-1
创建一个 ID 为bucketViewer
的自定义角色,仅包含权限storage.buckets.get
。 根据需要并相应地替换这些值。
完成后,您还可以使用gcloud projects add-iam-policy-binding
使用单个gcloud
命令分配此自定义角色:
gcloud projects add-iam-policy-binding example-project-id-1 \\ --member='serviceAccount:test-proj1@example.domain.com' \\ --role='projects/example-project-id-1/roles/bucketViewer'
将example-project-id-1
替换为您的项目 ID,并将test-proj1@example.domain.com
替换为您要为其分配角色的服务帐户的实际名称。
您很可能不想分配单个权限。 它通常需要更多权限才能实现您想要的。
这些权限被组织成角色 - 您可以选择现有的权限,也可以创建自己的权限,如本答案https://stackoverflow.com/a/59757152 中所述。
但通常有一些现有的预定义角色。 您需要在 Google Cloud 文档中找到它们 - 例如对于容器注册表https://cloud.google.com/container-registry/docs/access-control - 您的选择可能是 Storage Object Admin (roles/storage.objectAdmin)。
这些角色实际上是https://cloud.google.com/storage/docs/access-control/iam-roles中描述的 Cloud Storage 角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.