【问题标题】:How to use GCP Service Account User Role to create resource?如何使用 GCP 服务帐户用户角色创建资源?
【发布时间】:2020-11-05 14:11:59
【问题描述】:

在 GCP 文档上:

在服务帐户上被授予服务帐户用户角色的用户可以使用它来间接访问服务帐户有权访问的所有资源。例如,如果服务帐户已被授予计算管理员角色 (roles/compute.admin),则已在该服务帐户上被授予服务帐户用户角色 (roles/iam.serviceAccountUser) 的用户可以充当服务帐户启动 Compute Engine 实例。在此流程中,用户模拟服务帐户以使用其授予的角色和权限执行任何任务。

所以我想试试这个功能:

  1. 创建项目
  2. 将testuser@example.com 添加到项目并授予查看者角色。
  3. 打开新浏览器,用testuser登录GCP控制台,确认用户只能查看实例,不能创建实例。
  4. 添加一个服务账号:sa-name@project-id.iam.gserviceaccount.com,并授予Compute Admin角色,这样这个服务账号就可以创建实例了。
  5. 将具有service account user 角色的testuser@example.com 授予此服务帐号。

因此,根据上述 GCP 文档,我希望 testuser@example.com 可以创建实例,但 Create instance 按钮仍处于禁用状态。

然后我在项目级别授予testuser@example.com 和service account user 角色,但Create instance 按钮仍然处于禁用状态。

那么有什么问题呢?

  1. 我理解错了吗?授予testuser@example.com 和service account user 角色不赋予testuser 创建实例的能力?

  2. 我做错了吗?

  3. 如何通过service account user创建实例?

【问题讨论】:

标签: google-cloud-platform service-accounts


【解决方案1】:

当您明确要求 gcloud CLI 使用模拟时,模拟可以使用命令行。但默认情况下它是不活动的,因此在 GUI 上不起作用。

尝试使用参数 --impersonate-service-account=<ServiceAccountEmail> 的 gcloud 命令

注意:您需要在项目级别授予用户“服务使用消费者”角色,并在服务帐户级别(或项目级别)授予用户“服务帐户令牌创建者”角色如果您想模拟项目的所有服务帐户)。更多细节在blog post of John Hanley

【讨论】:

  • 这个问题特别是关于使用“服务帐户用户”角色——那些其他角色确实可以使用模拟,但这显然不同于依赖于“iam.serviceAccounts.actAs”权限的任何角色“服务帐户用户”。
猜你喜欢
  • 2021-05-18
  • 1970-01-01
  • 2020-07-15
  • 2019-08-19
  • 2021-12-19
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2019-09-08
相关资源
最近更新 更多