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

如何配置带Firebase Auth的GCP API网关后Cloud Function仅接受网关流量

解决Cloud Function仅允许API网关访问的安全配置问题

针对你要禁止直接调用Cloud Function、仅接受API网关流量的需求,以下是几种可行的解决方案:

方案1:通过Cloud IAM权限控制

这是最直接的云原生方案,通过IAM角色限制只有API网关的服务账号能调用函数:

  • 定位API网关使用的服务账号:通常格式为apigateway-service@<你的GCP项目ID>.iam.gserviceaccount.com,也可在API网关的配置页面查看具体账号
  • 进入Cloud Function的权限设置,移除所有面向公开的权限(比如allUsers角色)
  • 添加API网关的服务账号,为其授予roles/cloudfunctions.invoker角色
  • 完成后,只有API网关的服务账号发起的请求能调用函数,外部直接访问会返回权限不足的错误

方案2:在Cloud Function内验证请求来源

通过在函数代码中检查请求头部的专属标识,确保请求来自API网关:

  • 首先在API网关的转发规则中添加自定义请求头(比如X-Api-Gateway-Signature),并设置只有网关知道的密钥值
  • 在Cloud Function代码中验证该请求头的存在性和正确性,示例(Node.js):
exports.targetFunction = (req, res) => {
  const validSignature = process.env.GATEWAY_SIGNATURE;
  const incomingSignature = req.headers['x-api-gateway-signature'];
  
  if (!incomingSignature || incomingSignature !== validSignature) {
    res.status(403).send('Forbidden');
    return;
  }
  
  // 执行正常业务逻辑
  res.json({ status: 'success' });
};
  • 注意将密钥存在环境变量中,避免硬编码,定期轮换密钥提升安全性

方案3:通过VPC连接器实现内部流量访问

你之前设置“仅允许内部流量”报错,是因为默认API网关处于Google公共网络,不在你的VPC范围内。通过VPC连接器可将网关流量导入VPC:

  • 创建Cloud VPC连接器,将API网关和Cloud Function关联到同一VPC
  • 配置Cloud Function的网络设置为“仅允许内部流量”,并选择创建好的VPC连接器
  • 在API网关的配置中启用VPC连接,确保请求通过VPC连接器转发到Cloud Function
  • 这样网关的流量会被视为VPC内部流量,就能正常访问函数,外部直接访问则被拒绝

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:10:37