繁体   English   中英

如何使用 gcloud CLI 向 Cloud IAM 服务帐号授予特定权限?

[英]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 的工作方式。 仅将角色分配给服务帐户、用户或组,这些服务帐户、用户或组通常包含一组权限。

如果您希望角色只包含一个权限,或者只包含您感兴趣的权限,您可以考虑创建一个自定义角色,它允许您指定要授予定义的角色的权限以便在更细粒度的级别上限制访问。 然后,将该自定义角色分配给服务帐户:

  1. 使用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 根据需要并相应地替换这些值。

  2. 完成后,您还可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM