列出GCP帐户/组织的所有用户

恐惧F

我在GCP中有一个组织,其中有多个项目。

有什么方法可以列出所有项目用户及其角色,而不必按项目访问项目?

我正在使用gcloud projects get-iam-policy PROJECTNAME,但是列出了一个项目的用户,而我却有数百个。

谢谢。

比托

您可以在Cloud Shell中使用以下命令来获取所有项目,然后显示每个项目的iam策略:

for i in $(gcloud projects list |  sed 1d | cut -f1 -d$' '); do 
    gcloud projects get-iam-policy $i;
done;

有关该命令的一些说明:

  • sed 1d 删除将包含以下标题的第一行:

    PROJECT_ID | NAME | PROJECT_NUMBER

  • cut -f1 -d$' '将获取第一列,即将传递给gcloud projects get-iam-policy命令的PROJECT_ID

编辑

当你想要得到的结果PROJECT | MEMBERS | ROLE风格,你可以使用,这将创建一个下面.csv用以下结构内的每个项目文件:ROLES | MEMBERS每个圆角将被命名PROJECT_ID.csv

  • 角色:当前角色由以下成员列表拥有

  • 成员:拥有角色的成员列表

for i in $(gcloud projects list |  sed 1d | cut -f1 -d$' '); do
    echo "Getting IAM policies for project:" $i;
    echo "..........";
    (echo "ROLES,MEMBERS" && paste -d "," <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].role' | cut -d "\"" -f2)") <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].members | join(",")' | cut -d"\"" -f2)")) | cat >> $i.csv
 
    echo "Done. Logs created at file" $i.csv;
    echo "--------------------------------"
done;

在这里安装可能需要的唯一要求是yq,您可以将其安装在Shell中。

编辑2:

根据注释中的要求,所有信息输出将.csv按照以下格式保存到同一文件中:PROJECT_ID | ROLE | MEMBERS

echo "PROJECT_ID,ROLES,MEMBERS" | cat >> output.csv
for i in $(gcloud projects list |  sed 1d | cut -f1 -d$' '); do
    echo "Getting IAM policies for project:" $i;
    echo "..........";
    paste -d "," <(printf %s "$(for j in $(seq 1 $(gcloud projects get-iam-policy $i | yq '.bindings | .[].role' | cut -d "\"" -f2 | wc -l)); do echo $i; done;)") <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].role' | cut -d "\"" -f2)") <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].members | join(",")' | cut -d"\"" -f2)") | cat >> output.csv
 
    echo "Done. Logs created at file" $output.csv;
    echo "--------------------------------"
done;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章