列出 GCP 的所有用户 account/Organization
List ALL users of GCP account/Organization
我在 GCP 中有一个组织,其中有多个项目。
有没有什么方法可以列出所有项目用户及其角色,而无需逐个项目访问?
我使用的是 gcloud projects get-iam-policy PROJECTNAME
,但列出单个项目的用户,我有几百个。
谢谢。
您可以在 Cloud Shell 中使用以下命令获取所有项目,然后显示每个项目的 iam-policy:
for i in $(gcloud projects list | sed 1d | cut -f1 -d$' '); do
gcloud projects get-iam-policy $i;
done;
关于命令的一些说明:
sed 1d
删除将包含以下内容的第一行 headers:
PROJECT_ID | NAME | PROJECT_NUMBER
cut -f1 -d$' '
将获取第一列,即 PROJECT_ID 将传递给 gcloud projects get-iam-policy
命令
编辑
由于您希望获得 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;
Is there any way to list ALL project users and their roles without
having to access project by project?
不,您将需要扫描组织、文件夹、项目和资源,以获得有权访问云资源的所有 IAM 成员的完整列表。仅扫描项目不会为您提供完整列表。
您可以使用以下命令在您的组织内搜索 organizations/folders/projects 的所有 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
我在 GCP 中有一个组织,其中有多个项目。
有没有什么方法可以列出所有项目用户及其角色,而无需逐个项目访问?
我使用的是 gcloud projects get-iam-policy PROJECTNAME
,但列出单个项目的用户,我有几百个。
谢谢。
您可以在 Cloud Shell 中使用以下命令获取所有项目,然后显示每个项目的 iam-policy:
for i in $(gcloud projects list | sed 1d | cut -f1 -d$' '); do
gcloud projects get-iam-policy $i;
done;
关于命令的一些说明:
sed 1d
删除将包含以下内容的第一行 headers:PROJECT_ID | NAME | PROJECT_NUMBER
cut -f1 -d$' '
将获取第一列,即 PROJECT_ID 将传递给gcloud projects get-iam-policy
命令
编辑
由于您希望获得 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;
Is there any way to list ALL project users and their roles without having to access project by project?
不,您将需要扫描组织、文件夹、项目和资源,以获得有权访问云资源的所有 IAM 成员的完整列表。仅扫描项目不会为您提供完整列表。
您可以使用以下命令在您的组织内搜索 organizations/folders/projects 的所有 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