如何通过反向代理让Cloud Run仅接受Cloudflare的流量?
确保Cloud Run仅接收Cloudflare流量的实现方案
一、IP白名单限制
Cloudflare会公布其所有用于代理请求的IP段,你可以将这些IP添加到Cloud Run的访问控制列表中,拒绝非Cloudflare来源的流量:
- 获取Cloudflare官方IP段:Cloudflare提供固定的IPv4和IPv6地址段,直接使用这些地址段配置白名单即可
- 配置Cloud Run访问控制:
- 进入Cloud Run控制台的服务详情页,切换到「安全」标签
- 在「Ingress 控制」中选择「内部和云负载平衡」,确保仅授权来源可访问
- 在「授权网络」中添加Cloudflare的所有IP段,保存配置
- 也可通过gcloud命令快速配置:
gcloud run services update [你的服务名] \ --ingress=internal-and-cloud-load-balancing \ --allow-unauthenticated \ --network=default \ --add-authorized-network=[Cloudflare IPv4段1] \ --add-authorized-network=[Cloudflare IPv6段1]
二、Origin Pulls证书验证(更安全的方式)
IP白名单存在被伪造的风险,Origin Pulls通过证书验证确保请求确实来自Cloudflare,详细步骤如下:
1. 在Cloudflare生成Origin CA证书
- 登录Cloudflare域名管理页,切换到「SSL/TLS」→「源服务器」标签
- 点击「创建证书」,选择「Origin CA」,填写覆盖你的自定义域名
- 设置证书有效期后点击「创建」,下载PEM格式的证书和私钥文件
2. 将证书上传到Cloud Run
- 进入Cloud Run服务的「自定义域名」配置页,点击「管理证书」
- 选择「上传新证书」,上传刚才下载的证书和私钥,绑定自定义域名并保存
3. 启用Cloudflare Origin Pulls
- 返回Cloudflare的「SSL/TLS」→「源服务器」标签,找到「Origin Pulls」选项并开启
- 确认选择「使用Cloudflare Origin CA证书」,保存配置
完成后,只有Cloudflare代理的请求会携带有效Origin CA证书,Cloud Run才会处理,彻底阻断非Cloudflare来源的流量。
补充说明
- 同时启用IP白名单和Origin Pulls可实现双重验证,进一步提升安全性
- Cloudflare的IP段会定期更新,建议定期检查并同步更新Cloud Run的授权网络列表
- 确保Cloud Run自定义域名的TLS配置为「自定义证书」,而非Google管理证书,才能使用上传的Origin CA证书
内容的提问来源于stack exchange,提问作者Ayyappa
相关产品推荐
相关产品推荐

