如何列出GCP组织内各项目中含默认防火墙规则的所有VPC?
获取GCP组织内带默认防火墙规则的VPC列表
没有直接的单条gcloud命令可以完成这个需求,但可以通过结合gcloud命令和Shell脚本(比如Bash)遍历组织内所有项目,逐个检查每个VPC是否包含默认防火墙规则。
实现步骤
获取组织内所有项目ID
使用以下命令列出指定组织下的所有项目(替换your-organization-id为实际组织ID,若无需限制组织可去掉--organization参数):gcloud projects list --organization=your-organization-id --format="value(projectId)"遍历项目并检查VPC的默认防火墙规则
编写Bash脚本自动完成遍历和检查:# 替换为你的组织ID,或移除--organization参数获取所有可访问项目 ORG_ID="your-organization-id" # 获取组织内所有项目ID PROJECTS=$(gcloud projects list --organization=$ORG_ID --format="value(projectId)") for PROJECT in $PROJECTS; do echo "=== 项目: $PROJECT ===" # 获取项目内所有VPC网络 NETWORKS=$(gcloud compute networks list --project=$PROJECT --format="value(name)") for NETWORK in $NETWORKS; do # 检查VPC是否包含典型的默认防火墙规则(可根据需求调整过滤条件) DEFAULT_RULES=$(gcloud compute firewall-rules list --project=$PROJECT --filter="network:$NETWORK AND name:(default-allow-icmp OR default-allow-internal OR default-allow-rdp OR default-allow-ssh)" --format="value(name)") if [ ! -z "$DEFAULT_RULES" ]; then echo "VPC: $NETWORK 包含默认防火墙规则" echo "默认规则列表:" echo "$DEFAULT_RULES" echo "" fi done done
注意事项
- 确保你拥有足够权限:需要
resourcemanager.projects.list权限列出项目,以及compute.firewalls.list、compute.networks.list权限查询VPC和防火墙规则,通常roles/editor角色可满足需求。 - 默认防火墙规则是GCP创建默认VPC时自动生成的,若手动创建同名规则也会被检测到,可根据实际场景修改过滤条件。
- 若只需检查默认VPC(即名称为
default的VPC),可在获取VPC列表时添加过滤条件:--filter="name:default"。
内容的提问来源于stack exchange,提问作者gcp_user
相关产品推荐
相关产品推荐

