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

时间:2019-09-04 09:47:33

标签: google-cloud-platform google-cloud-iam

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

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

我当时使用的是QtCore.pyqtSignal applied,但是列出了一个项目的用户,而我有几百个。

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以在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;

答案 1 :(得分:0)

  

有没有办法列出所有项目用户及其角色而无需   必须按项目访问项目?

否,您将需要扫描组织,文件夹,项目和资源,以获得可以访问云资源的所有IAM成员的完整列表。仅扫描项目不会提供完整列表。

答案 2 :(得分:0)

您可以使用以下命令在组织内的组织/文件夹/项目的所有IAM策略中进行搜索:

gcloud beta asset search-all-iam-policies --scope=organizations/123 --query="resource:*//cloudresourcemanager*"

您可以将范围更改为文件夹或项目。

您必须对作用域具有cloudasset.assets.searchAllIamPolicies权限。

文档:https://cloud.google.com/asset-inventory/docs/searching-iam-policies

尽管它不涵盖所有政策:https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types