如何使用GCP服务帐户用户角色创建资源?

时间:2020-07-16 00:34:12

标签: google-cloud-platform service-accounts

在GCP文档上:

在服务帐户上被授予服务帐户用户角色的用户可以使用它来间接访问该服务帐户可以访问的所有资源。例如,如果一个服务帐户已被授予Compute Admin角色(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. 授予testuser@example.com角色service account user到该服务帐户。

因此,根据上述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创建实例?

1 个答案:

答案 0 :(得分:2)

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

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

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

中的更多详细信息