如何限制Google Compute Engine仅对Firebase云函数开放?能否通过VPC/防火墙规则实现?
限制Google Compute Engine仅允许Firebase云函数访问的实现方案
完全可以通过VPC配置、防火墙规则结合IAM权限来实现这个需求,我经常给用户推荐这种双重保障的方案,下面是分步的实操细节:
1. 先让Firebase云函数接入你的VPC网络
首先得确保你的Firebase云函数能访问到Compute Engine所在的VPC,最靠谱的方式是用Serverless VPC Access连接器(第二代云函数支持这个功能):
- 登录Google Cloud控制台,创建一个VPC连接器,选和你的Compute Engine实例相同的VPC网络和子网就行。
- 在Firebase函数的部署配置里,把这个连接器加上。比如在
firebase.json里这么写:
这样配置后,你的Firebase函数就只会通过这个连接器访问VPC内的资源,不会走公网,安全性直接拉满。{ "functions": { "source": "functions", "vpcConnector": "你的连接器名称", "vpcConnectorEgressSettings": "PRIVATE_RANGES_ONLY" } }
2. 配置Compute Engine的防火墙规则(核心步骤)
接下来要把Compute Engine的访问来源锁死,这里有两种实用的方法,你可以根据场景选:
方法一:基于VPC连接器的IP范围限制
- 先去Serverless VPC Access控制台找到你创建的连接器的IP段(一般是一个私网CIDR)。
- 新建一条防火墙规则:
- 目标:给你的Compute Engine实例打个标签(比如
backend-service),然后规则目标选这个标签,这样只对目标实例生效。 - 来源IP范围:填入刚才找到的VPC连接器IP段。
- 协议和端口:指定你的服务用的端口(比如
tcp:8080,如果是HTTP服务就是80/443)。 - 动作:选“允许”。
- 目标:给你的Compute Engine实例打个标签(比如
- 别忘了把默认的公网访问规则调整一下——要么删掉允许所有公网IP访问的规则,要么把优先级调低,确保我们的新规则先生效。
方法二:结合服务账号IAM权限(更安全的双重验证)
除了网络层的防火墙,还可以通过IAM权限来确保只有Firebase函数的服务账号能访问:
- 找到你的Firebase云函数用的服务账号(默认是
你的项目ID@appspot.gserviceaccount.com)。 - 给这个账号授予合适的IAM角色:比如如果是访问Compute Engine的HTTP服务,可能需要
roles/compute.instanceAdmin.v1;如果需要SSH登录,就给roles/compute.osLogin。当然,能选更细粒度的角色就尽量选,遵循最小权限原则。 - 如果你的Compute Engine上跑的是自定义API,还可以在代码里加一层验证——检查请求的服务账号身份,确保只有Firebase函数的账号发起的请求才被处理。
3. 验证配置是否生效
- 部署更新后的Firebase函数,测试它能不能正常访问Compute Engine实例。
- 用自己的电脑或者其他公网服务试试访问Compute Engine的公网IP(如果有的话),应该会被防火墙拦下来。
- 要是你的Compute Engine实例没开公网IP,只用内部IP,那只有通过VPC连接器的Firebase函数能访问,安全性就更高了。
对了,如果你用的是第一代Firebase云函数,VPC连接器的配置方式有点不一样,但核心思路是一样的——先让函数接入VPC,再通过防火墙锁死来源。
内容的提问来源于stack exchange,提问作者user79854
相关产品推荐
相关产品推荐

