인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

performing-gcp-security-assessment-with-forseti

performing-gcp-security-assessment-with-forseti

使用 Forseti Security、Security Command Center(安全指挥中心)和 gcloud CLI 对 Google Cloud Platform 环境进行全面安全评估,审计 IAM 策略、防火墙规则、存储权限,并对照 CIS GCP Foundations Benchmark 进行合规检查。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: performing-gcp-security-assessment-with-forseti description: > 使用 Forseti Security、Security Command Center(安全指挥中心)和 gcloud CLI 对 Google Cloud Platform 环境进行全面安全评估,审计 IAM 策略、防火墙规则、存储权限,并对照 CIS GCP Foundations Benchmark 进行合规检查。 domain: cybersecurity subdomain: cloud-security tags: [cloud-security, gcp, forseti, security-command-center, iam-audit, cis-benchmark] version: "1.0" author: mahipal license: Apache-2.0

使用 Forseti 执行 GCP 安全评估

适用场景

  • 对 GCP 组织和项目进行定期安全评估时
  • 接入新 GCP 项目并建立安全基线时
  • 合规要求评估 CIS GCP Foundations Benchmark 时
  • 跨多个 GCP 项目审计 IAM 绑定、防火墙规则和存储 ACL 时
  • 为 GCP 基础设施构建持续安全监控时

不适用于:替代 GCP Security Command Center Premium 进行实时威胁检测、应用层漏洞扫描(应使用 Web Security Scanner),或 GKE 专项安全评估(应使用 GKE Security Posture)。

前置条件

  • GCP 组织(Organization)具有 Organization Admin 或 Security Admin IAM 角色
  • gcloud CLI 已使用足够权限进行认证(roles/securitycenter.admin、roles/iam.securityReviewer)
  • 在组织级别启用 Security Command Center(SCC)
  • 已安装 ScoutSuite 用于多云对比(pip install scoutsuite)
  • Python 3.8+ 及 google-cloud-asset 和 google-cloud-securitycenter 库,用于自定义审计脚本

工作流程

步骤 1:启用 Security Command Center 和资产清单

启用 SCC 并设置 Cloud Asset Inventory(云资产清单),以实现全面的资源可见性。

# 启用 Security Command Center API
gcloud services enable securitycenter.googleapis.com \
  --project=PROJECT_ID

# 启用 Cloud Asset API
gcloud services enable cloudasset.googleapis.com \
  --project=PROJECT_ID

# 列出组织中的所有资产
gcloud asset search-all-resources \
  --scope=organizations/ORG_ID \
  --asset-types="compute.googleapis.com/Instance,storage.googleapis.com/Bucket,iam.googleapis.com/ServiceAccount" \
  --format="table(name, assetType, location, project)"

# 将资产清单导出到 BigQuery 进行分析
gcloud asset export \
  --organization=ORG_ID \
  --output-bigquery-force \
  --output-bigquery-dataset=projects/PROJECT_ID/datasets/asset_inventory \
  --output-bigquery-table=resources \
  --content-type=resource

步骤 2:审计 IAM 策略和绑定

审查整个组织的 IAM 策略,查找过度宽松的绑定、原始角色(Primitive Role)和服务账号滥用情况。

# 列出组织级别的所有 IAM 策略绑定
gcloud organizations get-iam-policy ORG_ID \
  --format=json > org-iam-policy.json

# 查找所有跨项目拥有 Owner 或 Editor 角色的用户
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:roles/owner OR policy:roles/editor" \
  --format="table(resource, policy.bindings.role, policy.bindings.members)"

# 识别具有管理员角色的服务账号
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy.bindings.members:serviceAccount AND policy:roles/owner" \
  --format=json

# 检查 allUsers 或 allAuthenticatedUsers 绑定(公开访问)
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:allUsers OR policy:allAuthenticatedUsers" \
  --format="table(resource, policy.bindings.role, policy.bindings.members)"

# 列出超过 90 天的服务账号密钥
gcloud iam service-accounts keys list \
  --iam-account=SA_EMAIL \
  --managed-by=user \
  --format="table(name,validAfterTime,validBeforeTime)"

步骤 3:评估防火墙规则和网络配置

审计 VPC 防火墙规则,检查过度宽松的入站规则、缺失日志记录和网络暴露情况。

# 列出允许来自 0.0.0.0/0 入站流量的所有防火墙规则
gcloud compute firewall-rules list \
  --filter="direction=INGRESS AND sourceRanges=0.0.0.0/0" \
  --format="table(name, network, allowed, sourceRanges, targetTags)"

# 查找允许所有协议/端口的防火墙规则
gcloud compute firewall-rules list \
  --filter="direction=INGRESS AND allowed[].IPProtocol=all" \
  --format="table(name, network, sourceRanges, targetTags)"

# 检查向互联网开放 SSH(22)和 RDP(3389)的规则
gcloud compute firewall-rules list \
  --filter="direction=INGRESS AND sourceRanges=0.0.0.0/0 AND (allowed[].ports=22 OR allowed[].ports=3389)" \
  --format="table(name, network, allowed, sourceRanges)"

# 审计 VPC 流日志配置
gcloud compute networks subnets list \
  --format="table(name, region, enableFlowLogs, logConfig.aggregationInterval)"

步骤 4:审计 Cloud Storage 存储桶权限

检查公开可访问的存储桶和缺失的加密配置。

# 列出项目中的所有存储桶
gsutil ls -p PROJECT_ID

# 检查存储桶 IAM 中的公开访问情况
for bucket in $(gsutil ls -p PROJECT_ID); do
  echo "=== $bucket ==="
  gsutil iam get "$bucket" | grep -E "allUsers|allAuthenticatedUsers" && \
    echo "  警告:检测到公开访问" || \
    echo "  正常:无公开访问"
done

# 检查存储桶加密配置
for bucket in $(gsutil ls -p PROJECT_ID); do
  echo "=== $bucket ==="
  gsutil kms encryption "$bucket" 2>/dev/null || echo "  使用 Google 管理的加密"
done

# 检查统一存储桶级访问强制执行
for bucket in $(gsutil ls -p PROJECT_ID); do
  gsutil uniformbucketlevelaccess get "$bucket"
done

步骤 5:运行 ScoutSuite 进行全面评估

执行 ScoutSuite 对 GCP 环境进行自动化多项安全检查。

# 针对 GCP 运行 ScoutSuite
python3 -m ScoutSuite gcp \
  --user-account \
  --all-projects \
  --report-dir ./scoutsuite-gcp-report

# 使用服务账号凭据运行
python3 -m ScoutSuite gcp \
  --service-account /path/to/service-account-key.json \
  --all-projects \
  --report-dir ./scoutsuite-gcp-report

# 打开 HTML 报告
open ./scoutsuite-gcp-report/gcp-report.html

步骤 6:查询 Security Command Center 发现

检索并分析 SCC 发现,包括漏洞、配置错误和威胁。

# 列出活跃的 SCC 发现
gcloud scc findings list ORG_ID \
  --filter="state=\"ACTIVE\" AND severity=\"CRITICAL\"" \
  --format="table(finding.category, finding.severity, finding.resourceName, finding.eventTime)"

# 按类别列出发现
gcloud scc findings list ORG_ID \
  --filter="state=\"ACTIVE\" AND category=\"PUBLIC_BUCKET_ACL\"" \
  --format=json

# 按类别统计发现数量
gcloud scc findings group ORG_ID \
  --group-by="category" \
  --filter="state=\"ACTIVE\""

# 列出 SCC 合规违规项
gcloud scc findings list ORG_ID \
  --filter="state=\"ACTIVE\" AND sourceProperties.compliance_standard=\"CIS\"" \
  --format="table(finding.category, finding.severity, finding.resourceName)"

核心概念

术语定义
Security Command CenterGCP 原生安全和风险管理平台,提供资产清单、漏洞检测和威胁监控功能
Forseti Security开源 GCP 安全工具集(现已弃用,由 SCC 取代),提供清单、扫描、执行和通知功能
Cloud Asset InventoryGCP 服务,提供包含元数据、IAM 策略和组织策略配置的完整云资源清单
CIS GCP Foundations Benchmark互联网安全中心(Center for Internet Security)针对 Google Cloud Platform 配置发布的安全最佳实践指南
统一存储桶级访问(Uniform Bucket-Level Access)GCP 存储设置,禁用旧版 ACL,通过 IAM 策略统一控制访问权限
组织策略(Organization Policy)GCP 基于约束的治理机制,在整个组织层级中限制资源配置

工具与系统

  • Security Command Center:GCP 原生 CSPM(云安全态势管理),提供资产清单、漏洞发现和合规评分
  • ScoutSuite:多云安全审计工具,对 GCP IAM、计算、存储和网络进行全面检查
  • gcloud CLI:查询 GCP 资源配置和安全设置的主要命令行界面
  • Cloud Asset Inventory:跨 GCP 项目搜索和导出资源元数据与 IAM 策略的 API
  • Forseti Security:旧版开源 GCP 安全工具集,已由 SCC 取代,但在合规框架中仍被引用

常见场景

场景:评估新收购的 GCP 组织

场景背景:公司收购后,安全团队需要评估被收购公司拥有 30+ 个项目的 GCP 组织的安全态势。

方法:

  1. 启用 Cloud Asset API,将完整资源清单导出到 BigQuery 进行分析
  2. 运行 gcloud asset search-all-iam-policies 查找所有 Owner/Editor 绑定和公开访问授权
  3. 审计所有项目中来自 0.0.0.0/0 的过度宽松入站防火墙规则
  4. 使用 gsutil iam get 检查所有存储桶的公开访问情况
  5. 运行 ScoutSuite 进行全面自动化评估并生成 HTML 报告
  6. 启用 SCC 并审查所有严重(CRITICAL)和高危(HIGH)发现
  7. 为整合团队生成按风险优先级排序的修复路线图

常见陷阱:GCP IAM 绑定从组织继承到文件夹再到项目。组织级别的宽松绑定会影响所有下游项目。务必在层级的每个级别审计 IAM,而不仅仅是项目级别。

输出格式

GCP 安全评估报告
=================================
组织: acme-acquired-org(ORG_ID: 123456789)
评估项目数: 34
评估日期: 2026-02-23
标准: CIS GCP Foundations 2.0

IAM 发现:
  组织级别具有 Owner 角色的用户数:    3
  具有 Editor 角色的服务账号数:        12
  具有 allUsers 绑定的资源数:           5
  超过 90 天的服务账号密钥数:          18

网络发现:
  允许 0.0.0.0/0 的防火墙规则数:      14
  向互联网开放 SSH 的规则数:            7
  向互联网开放 RDP 的规则数:            2
  未启用 VPC 流日志的子网数:           22

存储发现:
  公开可访问的存储桶数:                 5
  未使用 CMEK 加密的存储桶数:          28
  未启用统一访问的存储桶数:            15

严重发现: 12
高危发现: 34
中危发现: 78
低危发现: 145

优先修复事项:
  1. 从 5 个存储桶移除 allUsers 绑定(严重)
  2. 将 0.0.0.0/0 防火墙规则限制为特定 CIDR(高危)
  3. 轮换 18 个超过 90 天的服务账号密钥(高危)
  4. 在 22 个子网上启用 VPC 流日志(中危)
저장한 Skills