很遗憾,无法列出所有使用的用户
gcloud iam . . .
命令树;但是,我们可以通过
列出 Google Cloud Platform (GCP) 项目 (
$GCP_PROJECT_NAME) 下的所有帐户
gcloud projects get-iam-policy
改为命令树:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--flatten="bindings[].members" \
--format="value(bindings.members)" \
--sort-by=bindings.members | uniq
#=>
. . .
serviceAccount:$SOME_SERVICE_ACCOUNT
. . .
user:$SOME_USER
. . .
其中包括通过uniq 传递任何重复的结果。
注意:上述命令保证列出与$GCP_PROJECT_NAME关联的所有帐户,因为每个帐户都必须至少拥有一个角色:
gcloud projects add-iam-policy-binding $ANOTHER_USER \
--member="user:${ANOTHER_USER}"
#=>
ERROR: (gcloud.projects.add-iam-policy-binding) argument --role: Must be specified.
如有必要,我们可以利用.flatten()、.slice()和.split()gcloud投影来摆脱serviceAccount:和user:前缀:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uinq
#=>
. . .
$SOME_SERVICE_ACCOUNT
. . .
$SOME_USER
. . .
更多关于gcloud 预测here。
我们也可以使用--filter 标志过滤这个结果:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--filter="user" \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uniq
#=>
. . .
$SOME_USER
. . .
和:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--filter="serviceAccount" \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uniq
#=>
. . .
$SOME_SERVICE_ACCOUNT
. . .