![在 GCP 角色分配中使用条件来防止用户邀请其他用户并仅管理服务帐户](https://linux22.com/image/773126/%E5%9C%A8%20GCP%20%E8%A7%92%E8%89%B2%E5%88%86%E9%85%8D%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9D%A1%E4%BB%B6%E6%9D%A5%E9%98%B2%E6%AD%A2%E7%94%A8%E6%88%B7%E9%82%80%E8%AF%B7%E5%85%B6%E4%BB%96%E7%94%A8%E6%88%B7%E5%B9%B6%E4%BB%85%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1%E5%B8%90%E6%88%B7.png)
我最近读到了有关 GCP 中的条件以及如何使用它们为角色添加逻辑的文章。我想为用户提供一个角色,以便将角色分配给服务帐户。但如果我这样做,用户也将能够邀请其他用户加入项目,而这是我不希望看到的。
我尝试过类似的事情:
gcloud projects add-iam-policy-binding <project> --member="user:[email protected]" --role="roles/accesscontextmanager.policyEditor" --condition='title="allow_admin_service_user_only",expression=resource.name.startsWith("iam.googleapis.com/projects/project/serviceAccounts")
gcloud projects add-iam-policy-binding <project> --member="user:[email protected]" --role="roles/iam.roleAdmin" --condition='title="allow_admin_service_user_only",expression=resource.name.startsWith("iam.googleapis.com/projects/project/serviceAccounts")
也尝试了多个其他角色但都因相同的错误而失败:
ERROR: (gcloud.projects.add-iam-policy-binding) User [[email protected]] does not have permission to access projects instance [project:setIamPolicy] (or it may not exist): Policy update access denied.
问题是:是否可以仅允许在服务帐户上编辑/添加/撤销角色?如果可以,该怎么做?
答案1
在大多数情况下,您遇到的错误是由于您的 GCP 项目未启用所需的 API 而导致的。要解决这个问题,首先,您需要一个 API 密钥。有 3 个方法可以获取它:
1.- 请安全管理员为您创建 API 密钥。
2.- 要求安全管理员授予您访问项目的权限这样您就可以在与 API 关联的同一项目中创建 API 密钥。
3.- 要求安全管理员授予您启用 API 的权限在您自己的 Google Cloud 项目中,以便您可以创建 API 密钥。
获得该信息后,请执行以下步骤:
1.- 在云控制台中,转到项目的 API 和服务。
2.- 在库页面上,单击私有 API。如果您没有看到列出的 API,则表示您尚未被授予启用该 API 的权限。
3.- 单击要启用的 API。如果您需要帮助查找 API,请使用搜索字段。
4.- 在显示 API 信息的页面中,单击启用。
以下 URL 包含 GCP 有关该过程的官方文档在您的 Google Cloud 项目中启用 API。另外,我建议您确保您具有 IAM 的安全管理员角色。
现在,谈到服务帐户的角色,看起来您已经测试了所有现有角色,但没有一个符合您的需求。因此,您可以尝试使用自定义角色,这意味着您详细设计的角色。要创建自定义角色,您可以在创建服务帐户后显示的屏幕中直接访问;在“选择角色”选择列表字段中,选择“管理角色”选项,在以下屏幕中,您将看到蓝色文本的“+创建角色”按钮。在那里,您将能够创建一个符合您要求的自定义角色。在以下 URL 中,我将与您分享 GCP 的官方信息 了解服务帐户和角色。