【发布时间】:2021-10-30 13:39:59
【问题描述】:
给定一个 Google Cloud Platform (GCP) 服务帐户 $GCP_SERVICE_ACCOUNT_NAME,授予用户以下权限的正确方法是:
- 使用
$GCP_SERVICE_ACCOUNT_NAME部署作业和虚拟机的权限 - 管理
$GCP_SERVICE_ACCOUNT_NAME的权限
在控制台中使用 GCP Cloud SDK (gcloud) 而不是 this 页面?
换句话说,如果$GCP_SERVICE_ACCOUNT_NAME是在GCP项目$GCP_PROJECT_NAME中创建的:
gcloud iam service-accounts create $GCP_SERVICE_ACCOUNT_NAME \
--description=$GCP_SERVICE_ACCOUNT_DESCRIPTION \
--display-name=$GCP_SERVICE_ACCOUNT_NAME
#=>
Created service account [$GCP_SERVICE_ACCOUNT_NAME].
并通过某个策划角色获得了权限:
gcloud projects add-iam-policy-binding $GCP_PROJECT_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT_NAME@$GCP_PROJECT_NAME.iam.gserviceaccount.com" \
--role=$GCP_CURATED_ROLE
#=>
Updated IAM policy for project [$GCP_PROJECT_NAME].
bindings:
. . .
- members:
. . .
- serviceAccount:$GCP_SERVICE_ACCOUNT_NAME@$GCP_PROJECT_NAME.iam.gserviceaccount.com
role: $GCP_CURATED_ROLE
. . .
. . .
etag: . . .
version: 1
什么gcloud 组和命令将授予用户部署作业和虚拟机的权限以及管理$GCP_SERVICE_ACCOUNT_NAME 的权限?
使用 gcloud 创建服务帐户的官方 GCP 文档,发现 here,建议使用 add-iam-policy-binding 命令“允许用户模拟服务帐户”:
gcloud iam service-accounts add-iam-policy-binding \
$GCP_SERVICE_ACCOUNT_NAME@$GCP_PROJECT_NAME.iam.gserviceaccount.com \
--member="user:$GCP_USER_NAME" \
--role="roles/iam.serviceAccountUser"
#=>
Updated IAM policy for serviceAccount [$GCP_SERVICE_ACCOUNT_NAME@$GCP_PROJECT_NAME.iam.gserviceaccount.com].
bindings:
- members:
- user:$GCP_USER_NAME
role: roles/iam.serviceAccountUser
etag: . . .
version: 1
与:
gcloud config list account --format="value(core.account)"
#=>
$GCP_USER_NAME
这是否意味着$GCP_USER_NAME 能够使用$GCP_SERVICE_ACCOUNT_NAME 部署作业和虚拟机、管理$GCP_SERVICE_ACCOUNT_NAME 或两者兼而有之?
【问题讨论】:
标签: google-cloud-platform gcloud google-iam google-cloud-iam google-cloud-sdk