【问题标题】:How do I grant a specific permission to a Cloud IAM service account using the gcloud CLI?如何使用 gcloud CLI 向 Cloud IAM 服务帐号授予特定权限?
【发布时间】:2020-01-15 17:35:03
【问题描述】:

我知道我可以通过 UI(云控制台)来完成,而且我也可以分配一个角色。不过,如何轻松授予单个权限?

例如,我使用新创建的服务帐户将图像推送到 Google Container Registry,我收到一条错误消息,指出此服务帐户没有storage.buckets.get 权限。使用 CLI 授予此特定权限的最简单方法是什么?

【问题讨论】:

    标签: google-cloud-platform gcloud google-cloud-iam


    【解决方案1】:

    您不能直接向服务帐号授予权限,这根本不是 Google Cloud IAM 的工作方式。 Only roles 分配给服务帐户、用户或组,而这些服务帐户、用户或组通常又包含一组权限。

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

    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 为 bucketViewer 的自定义角色,用于 项目IDexample-project-id-1,只包含权限 storage.buckets.get。根据需要替换这些值并 相应地。

    2. 完成后,您还可以分配此自定义角色,也可以使用单个 gcloud 使用gcloud projects add-iam-policy-binding 命令:

      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 与服务的实际名称 要将角色分配到的帐户。

    【讨论】:

    • 您知道这种笨拙的访问管理方法背后的原因是什么吗?
    • 也许创建自定义角色看起来是一个不必要的步骤,但如果你有很多用户更容易设置角色而不是为每个用户设置单独的权限,我认为这不适合项目或组织用户很少,但是当项目的用户数量增加时,这个选项更有意义。
    • 添加绑定的命令对我来说没有引号。
    【解决方案2】:

    您很可能不想分配单一权限。它通常需要更多权限才能实现您想要的。

    这些权限被组织成角色 - 您要么选择现有的,要么创建自己的,如此答案 https://stackoverflow.com/a/59757152 中所述。

    但通常有一些现有的预定义角色。您需要在 Google Cloud 文档中找到它们 - 例如对于容器注册表https://cloud.google.com/container-registry/docs/access-control - 您可以选择存储对象管理员 (roles/storage.objectAdmin)。

    这些角色实际上是 https://cloud.google.com/storage/docs/access-control/iam-roles 中描述的 Cloud Storage 角色。

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多