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

如何保护GCP虚拟机实例:仅允许API Gateway访问,禁止公网直连

解决方案:限制GCP虚拟机仅允许API Gateway访问

针对你的场景,有以下几种可行方案来保护虚拟机实例,避免公网直接访问,覆盖不同成本需求:

方案一:通过VPC内部访问(需Serverless VPC Access Connector,有月度成本)

  1. 修改Go服务监听地址:将服务的监听配置从0.0.0.0:1234改为虚拟机的内部私有IP:1234,让服务仅响应VPC内部请求,公网无法直接触达。
  2. 配置API Gateway使用Serverless VPC Access Connector:创建连接器并关联到虚拟机所在VPC,使网关通过内部网络访问Go服务。注意该方案有月度费用(约50美元),适合对安全性要求极高且能接受成本的场景。
  3. 调整防火墙规则:删除原gw-apps规则中0.0.0.0/0的允许配置,替换为允许VPC内部网段或连接器IP范围访问1234端口,拒绝其他所有来源。

方案二:用Cloud Armor过滤API Gateway来源流量(低成本)

  1. 获取API Gateway的官方IP范围:GCP会定期发布所有服务的IP段,你可以通过以下gcloud命令获取API Gateway的专属IP范围:
    gcloud compute addresses list --filter="service:apigateway.googleapis.com" --format="value(address)"
    
    也可以通过GCP控制台的「VPC网络 > 外部IP地址」页面,筛选服务为apigateway.googleapis.com的条目获取。
  2. 创建Cloud Armor安全策略:新建策略,添加规则允许上述API Gateway IP段访问,拒绝所有其他来源。将策略关联到虚拟机的外部IP(若使用负载均衡器则关联到负载均衡器)。
  3. 更新防火墙规则:配合Cloud Armor,将防火墙规则调整为仅允许Cloud Armor转发流量访问1234端口,进一步缩小访问范围。

方案三:在Go服务中添加网关专属校验(零额外成本)

利用API Gateway的转发特性,在服务层添加校验逻辑,确保请求来自合法网关:

  1. 在API Gateway的OpenAPI配置中添加自定义头部:比如新增X-Gateway-Validation-Key头部,设置一个仅你知晓的密钥,让网关转发请求时自动携带该头部。
  2. 在Go服务中校验头部:在请求处理逻辑中,检查请求是否包含该头部且值与预设密钥一致。若不满足,直接返回403 Forbidden。
  3. 配合防火墙规则加固:可以保留防火墙规则中允许0.0.0.0/0访问1234端口,但通过服务层校验拦截非法请求;也可以缩小防火墙允许范围,实现双重保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:53:24