如何限制Google Cloud VM仅允许Firebase服务器访问?
当然可以实现!以下是具体的步骤和方案:
我们的核心目标是让你的VM彻底脱离公网,仅在VPC内部暴露API,同时让Firebase服务通过专属内部通道访问它。
1. 移除VM的公网访问权限
先把VM的外部IP彻底移除,确保它只能通过VPC内部IP被访问:
- 登录GCP控制台,找到你的VM实例
- 点击「编辑」按钮,在「网络接口」区域,把「外部IP」设置为「无」
- 保存修改后,VM就只剩VPC内部IP了,公网任何请求都无法直接触达它
2. 配置Serverless VPC Access连接器
Firebase的服务(比如Cloud Functions)默认运行在Google公共网络中,无法直接访问VPC内部资源,所以需要用Serverless VPC Access搭建专属通道:
- 在GCP控制台搜索「Serverless VPC Access」进入服务页面
- 点击「创建连接器」,填写关键信息:
- 名称:起个好记的名字(比如
firebase-vpc-link) - 区域:必须选择和你的VM相同的区域(跨区域无法直接访问内部IP)
- VPC网络:选择VM所在的VPC
- 子网:可以选VM所在的子网,也可以新建一个专属子网(注意IP范围不要和现有子网冲突)
- 名称:起个好记的名字(比如
- 创建完成后,这个连接器就会成为Firebase服务访问VPC的唯一入口
3. 让Firebase服务绑定连接器
假设你用Cloud Functions作为前端服务调用VM的API,需要配置函数通过连接器访问VPC:
- 命令行部署时,添加参数:
firebase deploy --only functions --vpc-connector=projects/你的项目ID/locations/区域/connectors/连接器名称 - 或者在
firebase.json里配置:
"functions": { "vpcConnector": "firebase-vpc-link", "vpcConnectorEgressSettings": "PRIVATE_RANGES_ONLY" }
这样配置后,你的Firebase函数只会通过VPC连接器发送请求,完全不走公网。
4. 配置VPC防火墙规则
最后要确保VPC内部防火墙允许Firebase的流量访问VM的API端口:
- 进入GCP控制台「VPC网络」→「防火墙」页面
- 点击「创建防火墙规则」:
- 名称:比如
allow-firebase-to-vm-api - 网络:选择VM所在的VPC
- 方向:入站
- 目标:选择「指定目标标签」,输入你给VM打的标签(如果没打标签,先给VM加个标签比如
api-service-vm) - 来源IP范围:填写Serverless VPC Access连接器的IP范围(在连接器详情页可以查看)
- 协议和端口:选择「指定协议和端口」,输入你的API用的TCP端口(比如
8080或443) - 动作:允许
- 名称:比如
- 保存规则后,Firebase的流量就能通过连接器正常访问VM的API了
额外注意点
- 如果是Firebase Hosting需要调用VM API,不能直接连接,得通过Cloud Functions做中间层转发(Hosting本身无法访问VPC内部资源)
- 若VM和Firebase不在同一个GCP项目,需要配置共享VPC,把VM所在的VPC共享给Firebase项目后再创建连接器
- 测试时,先用Firebase Emulator在本地验证函数调用VM内部IP的响应,再部署上线;同时用公网工具(比如curl)直接访问VM内部IP,应该会失败,这就说明公网访问已经被彻底阻断
内容的提问来源于stack exchange,提问作者user1584421
相关产品推荐
相关产品推荐

