在Google Cloud Gui控制台中,我访问了"IAM和管理员" > "服务帐户"并创建了一个名为"my-service-account"的服务帐户,并将其赋予了查看者角色。然后我运行了这个命令:
如何列出与服务帐户关联的角色?
编辑:感谢对这个问题的精彩回答,我现在可以循环遍历所有项目并获得我想要的结果。所以,根据您所使用的这些 cmd 工具的版本,这应该会列出跨所有项目的单个服务帐户的所有角色绑定。
gcloud iam service-accounts get-iam-policy my-service-account@mydomain.iam.gserviceaccount.com
并看到了这个输出:
etag: ACAB
根据文档,这意味着该服务帐户没有与之关联的策略。因此我给它分配了一个在其“策略”中未包含的“角色”。如何列出与服务帐户关联的角色?
编辑:感谢对这个问题的精彩回答,我现在可以循环遍历所有项目并获得我想要的结果。所以,根据您所使用的这些 cmd 工具的版本,这应该会列出跨所有项目的单个服务帐户的所有角色绑定。
gcloud projects list | \
awk '{print $1}' | \
xargs -I % sh -c "echo ""; echo project:% && \
gcloud projects get-iam-policy % \
--flatten='bindings[].members' \
--format='table(bindings.role)' \
--filter='bindings.members:YOU-SERVICE-ACCOUNT@blah.com' \
;"
foreach
更易读。因此,另一种解决方案是foreach PROJECT in $(gcloud projects list --format='value(projectId)'); do echo "${PROJECT}:"; gcloud projects get-iam-policy ${PROJECT} --flatten='bindings[].members' --format='table(bindings.role)' --filter='bindings.members:YOU-SERVICE-ACCOUNT@blah.com'; done
。 - Vincent Yin