web-stack-defense/wsd-google-cloud-web-security
GitHub: web-stack-defense/wsd-google-cloud-web-security
面向 Google Cloud Web 工作负载的安全加固参考库,提供基于真实 PSE 认证部署的 Cloud Armor、IAM、防火墙等安全配置与审计脚本。
Stars: 1 | Forks: 0
# Google Cloud Web 安全
经过脱敏处理的 Google Cloud 安全内容,专门针对运行在 GCP 上的网站和 Web 应用程序。
本仓库专注于实用的 Cloud Armor 安全策略、针对 Web 工作负载的 IAM 最小权限模式、面向公网的 GCP 环境的 VPC 防火墙基线、针对 Web 流量的 Cloud Logging 配置、负载均衡器强化以及操作安全的实施指南。它的目的是为在 Google Cloud 上运行 Web 工作负载的防御者提供帮助,同时也方便审查工作的工程师或业务所有者阅读。
本仓库由一位 Google Cloud 专业安全工程师 (PSE) 维护。
## 范围
本仓库包括:
- 使用当前 (CRS 4.22) 预配置 WAF 规则的 Cloud Armor 安全策略表达式
- Cloud Armor 速率限制策略
- 针对常见 Web 工作负载 service account 的 IAM 最小权限角色绑定
- 面向公网部署的 VPC 防火墙规则示例
- HTTPS 负载均衡器强化参考(SSL 策略、安全策略附件)
- 针对 Web 流量的 Cloud Logging 过滤器示例
- 用于只读审计的 gcloud CLI 脚本
- 围绕手动部署、验证、回滚和调整规范编写的文档
本仓库不包括:
- Terraform 模块或完整的基础设施即代码自动化
- 未经确认即修改生产环境 GCP 资源的脚本
- 针对企业级数据工程工作负载的配置
- 不影响 Web 应用程序的通用 GCP 安全内容
- 针对 GKE 的特定强化(此处超出范围,可能会单独涵盖)
- 声称此处的每个示例无需调整即可普遍安全部署的说法
## 为什么会有这个仓库
许多公开的 GCP 安全内容要么带有浓厚的企业数据工程色彩(BigQuery、Dataflow、数据边界),要么过于依赖特定公司的技术栈,要么已经不符合当前的 Cloud Armor 和 IAM 默认设置。这里的目标与众不同:
- 保持结构清晰
- 保持范围诚实——针对运行在 GCP 上的网站和 Web 应用程序,而不是泛泛的 GCP
- 仅使用当前的、有文档记录的 API、角色 ID 和预配置 WAF 规则名称
- 记录真实的操作权衡
- 让验证和回滚成为工作流中一等(首要)的组成部分
## 目标受众
本仓库面向:
- 在 GCP 上运行网站的站点可靠性工程师
- 在 Cloud Run、App Engine 或 Compute Engine 上管理 Web 工作负载的 DevOps 工程师
- 处理 GCP Web 环境的安全工程师
- 负责托管在 GCP 上的公共服务的蓝队工程师
- 审查 Web Stack Defense 工作的业务所有者
## 基础环境
本仓库的内容是基于运行以下配置的真实 GCP Web 部署构建的:
- 外部应用负载均衡器(全球性和区域性)
- 带有 OWASP CRS 4.22 预配置 WAF 规则的 Cloud Armor 安全策略
- 具有托管 runtime 的 Cloud Run 服务
- 具有 Web 工作负载的 Compute Engine 实例
- 带有结构化日志条目的 Cloud Logging
- 用于应用程序凭据的 Secret Manager
- 用于静态资产交付的 Cloud CDN
- 用于管理员和预发布环境的 Identity-Aware Proxy (IAP)
有关确切的版本说明,请参阅 [TESTED_ON.md](TESTED_ON.md)。
## 仓库结构
```
configs/
cloud-armor/
iam/
vpc-firewall/
load-balancer/
logging/
checklists/
scripts/
examples/
```
## 内容设计
本仓库有意拆分为:
**Cloud Armor 安全策略**
用于部署 Cloud Armor 安全策略的 gcloud CLI 命令和策略表达式。每条规则都使用当前的规则语言语法,其中 `evaluatePreconfiguredWaf()` 引用了 CRS 4.22(`xss-v422-stable`、`sqli-v422-stable` 等)。所有规则旨在首先以 `preview` 模式部署,然后在审查日志后提升为强制执行。
**IAM 最小权限模式**
针对通常支撑 Web 工作负载的 service account 的 IAM 角色绑定示例:Cloud Run runtime、部署流水线、日志记录器、机密读取器。角色通过其确切的预定义角色 ID(`roles/secretmanager.secretAccessor`、`roles/logging.logWriter` 等)进行引用,并根据当前的 Google Cloud 文档进行了验证。
**VPC 防火墙和负载均衡器**
限制对 GFE 健康检查范围和 Google Front End 的 ingress 的防火墙规则。负载均衡器强化包括符合 RESTRICTED 配置文件的 SSL 策略以及将 Cloud Armor 附加到后端服务。
**Cloud Logging**
用于呈现 Web 工作负载上关键事件的日志过滤器表达式:Cloud Armor 安全事件、负载均衡器 4xx/5xx 激增、IAM 权限更改以及 IAP 身份验证失败。
**检查清单**
用于初始部署、IAM 审查和 Cloud Armor 调整的操作检查清单。
**脚本**
报告当前状态的基于 gcloud 的只读审计脚本。本仓库中的任何脚本都不会修改实时的 GCP 资源。
## 安装理念
本仓库假定采用手动部署。
这是有意为之。
GCP 资源具有真实的账单影响、真实的爆炸半径(配置错误的 Cloud Armor 策略可能导致站点离线;过于宽泛的 IAM 授权会暴露机密),并且在区域范围划定、项目边界和 IAM 继承方面存在真实的复杂性。公开的 GCP 安全仓库的实际价值在于作为可供调整的参考,而不是复制粘贴的部署。
审查 gcloud 命令。了解它修改了哪个资源。首先以 `preview` 模式部署 Cloud Armor 策略。在假定已实现最小权限之前,使用 `gcloud asset search-all-iam-policies` 验证 IAM 绑定。在防火墙和 IAM 更改期间保持备用访问方法畅通。
## 验证工作流
针对任何更改的推荐顺序:
1. 审查 gcloud 命令并确认正在修改的资源
2. 确认项目、区域和账户上下文(`gcloud config list`)
3. 如果可用,请使用 `--dry-run` 运行,或者先在非生产项目中运行
4. 对于 Cloud Armor:在 `preview` 模式下部署规则(`--preview` 标志)
5. 应用更改
6. 对于 Cloud Armor:在安全日志中审查匹配的请求 24 到 72 小时
7. 对于 IAM:验证 principal 是否仍能执行预期的操作,并且不能执行意外的操作
8. 对于防火墙:验证是否仍然可以从公共互联网访问该站点
9. 仅在日志审查后,才将 Cloud Armor 规则从预览中提升为强制执行
10. 使用时间戳、命令和结果记录更改
## 风险与防护措施
本仓库假定您了解以下风险:
- 如果未事先进行调整,强制执行模式下的 Cloud Armor 规则可能会阻止合法流量
- IAM 更改可能需要 2 到 7 分钟才能传播(最近的授权可能不会立即生效)
- 较高级别(文件夹、组织)的 IAM 授权会覆盖看起来像是项目级别的最小权限授权
- VPC 防火墙规则按优先级应用——高优先级的允许规则会覆盖具有较高数字优先级的拒绝规则
- 移除 IAM 角色可能会将 service account 锁定在所需的 API 之外
- 删除附加到后端服务的安全策略不会彻底取消附加——必须先取消附加
- 设置为 MODERN 或 RESTRICTED 的 SSL 策略可能会破坏旧版客户端
- 如果 cache keys 配置错误,则可能发生 Cloud CDN 缓存中毒
- IAP 需要正确配置的 OAuth2 客户端凭据——配置错误会将管理员锁定在外
## 脱敏政策
本仓库中的任何内容都不应暴露:
- 真实的项目 ID 或项目编号
- 真实的 service account 电子邮件地址
- 真实的 OAuth2 客户端 ID 或客户端密钥
- 真实的 KMS 密钥资源名称
- 来自生产环境的真实 Cloud Armor 策略名称
- 与实际部署相关的真实 IP 地址
所有示例都使用 `PROJECT_ID` 和 `PROJECT_NUMBER` 作为占位符变量,使用 `example.com` 作为域名,并使用文档保留范围 `203.0.113.0/24` 作为 IP 地址。Service account 电子邮件使用 `service-account-name@PROJECT_ID.iam.gserviceaccount.com` 格式。
## 相关平台
本仓库是在 [Web Stack Defense](https://www.webstackdefense.com) 上记录的更广泛的网站安全工作的一部分。该网站上的指南深入探讨了上下文、权衡和实施决策。此处的配置和脚本是与这些指南配套的实用工件。
## 贡献政策
允许提交问题和精心策划的 pull request,但这不是一个无限制的社区仓库,并非每个提交都会被合并。
应根据 [SECURITY.md](SECURITY.md) 私下报告安全问题。
贡献标准记录在 [CONTRIBUTING.md](CONTRIBUTING.md) 中。
标签:AppImage, GitHub Advanced Security, Google Cloud, Web应用防火墙, 参考配置, 安全加固