You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Functions连接GCE REST服务受阻,如何配置防火墙规则指定源?

安全配置Firebase Functions访问GCE实例的防火墙规则

好问题!完全没必要把端口开放给所有用户,我们有几种更安全的方案来实现只允许Firebase Functions访问你的GCE实例上的REST服务,下面是具体步骤:

方案1:使用VPC Serverless Connector(最推荐)

这是最安全且长期稳定的方式,通过将Firebase Functions接入你的VPC网络,让它和GCE实例处于同一内网环境:

  • 第一步:在GCP控制台创建一个VPC Serverless Connector,选择与你的GCE实例相同的VPC网络和子网,区域尽量和Functions的部署区域一致。
  • 第二步:修改Firebase的部署配置,让Functions使用这个连接器。在firebase.json中添加如下配置:
    {
      "functions": {
        "vpcConnector": "projects/[你的项目ID]/locations/[连接器区域]/connectors/[连接器名称]",
        "vpcConnectorEgressSettings": "PRIVATE_RANGES_ONLY" // 仅允许访问VPC内网IP,更安全
      }
    }
    
    或者在部署命令中直接指定:
    firebase deploy --only functions --vpc-connector=你的连接器资源ID
    
  • 第三步:创建GCP防火墙规则,将源IP范围设置为你的VPC子网的IP段,目标端口设为REST服务的端口(比如8080),协议选TCP。这样只有通过VPC Connector的Firebase Functions能访问,外部流量完全被拦截。

方案2:指定Firebase Functions的出口IP范围

如果暂时不想用VPC Connector,可以直接用Cloud Functions的固定出口IP范围来限制:

  • 首先,获取Google Cloud公布的Cloud Functions出口IP范围(属于Google Cloud的外部IP段),你可以通过gcloud命令查询:
    gcloud compute addresses list --filter="status=RESERVED AND purpose=GCE_ENDPOINT"
    
  • 然后创建防火墙规则,将源IP设置为这些Cloud Functions的IP段,目标端口和协议对应你的REST服务。
  • 注意:这个IP范围可能会随着Google Cloud的更新而变化,需要定期检查并更新防火墙规则,适合临时场景或小型项目。

方案3:添加身份验证作为额外安全层

不管用上面哪种方案,都可以给REST服务加上身份验证,双重保障:

  • 让Firebase Functions使用项目的默认服务账号生成JWT令牌,在请求REST服务时携带这个令牌。
  • 在GCE实例的REST服务端验证JWT的有效性,确认请求来自你的项目的服务账号。
  • 这样即使有人绕过了防火墙,没有合法的身份凭证也无法访问服务。

额外注意事项

  • 尽量让Firebase Functions和GCE实例的区域保持一致,减少网络延迟。
  • 使用VPC Connector时,注意查看GCP的配额限制,比如连接器的最大并发连接数。
  • 测试阶段可以临时开放端口给你的本地测试IP,确认服务正常后再切换到安全规则。

内容的提问来源于stack exchange,提问作者Victor G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:13:00