我有一个 GSA:my-gsa@myproject.iam.gserviceaccount.com
GCP 支持群组已经有一段时间了,所以我将 GSA 添加到了一堆群组中。
如何轻松查看 GSA 所属的组?
如果这是一个 google用户帐户,我可以转到 G Suite 控制台并查看用户的组成员身份。这是一个 GSA,它不会像那样出现在 G Suite 控制台中。
理想情况下,我可以在一些 Web 控制台页面或 gcloud 中看到这一点。此 gcloud 命令将向我显示组的成员:https ://cloud.google.com/sdk/gcloud/reference/beta/identity/groups/memberships/list 。对于 GSA 而不是谷歌用户帐户,我该如何做相反的事情?
编辑
不是解决方案,而是搜索所有组的脚本。仍然认为必须有一个 API 调用才能将其作为一个步骤。我认为该groups.memberships.searchTransitiveGroups()
方法仅用于查看嵌套组成员身份。
GSA_TO_SEARCH=my-gsa@myproject.iam.gserviceaccount.com
PROJECT_ID=projectname # This can be any project in the org
ORG_ID="$(gcloud projects get-ancestors $PROJECT_ID | grep organization | cut -f1 -d' ')"
# I don't think this label includes GCP security groups just G Suite email groups
GROUPS="$(gcloud beta identity groups search --organization=$ORG_ID --labels='cloudidentity.googleapis.com/groups.discussion_forum' --format='json')"
GROUP_EMAILS="$(echo $GROUPS | jq '.groups[] | .groupKey.id')"
echo $GROUP_EMAILS | \
xargs -I {} sh -c "echo {} && \
gcloud beta identity groups memberships list --group-email="{}" --format=json | \
jq '.[] | select(.memberKey.id==\"$GSA_TO_SEARCH\").memberKey.id'"