You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Google Cloud Function公网URL配置IP白名单限制第三方调用?

如何给Google Cloud Function的公网URL配置IP白名单限制访问?

当然可以实现!下面我给你梳理几种靠谱的授权机制,按需选择就行:

方案1:Cloud Armor + HTTP(S)负载均衡(推荐生产环境)

这是最稳定、可扩展的方案,适合需要精细IP管控的生产场景:

  • 先创建一个HTTP(S)负载均衡,把你的Cloud Function配置成后端服务
  • 关联Cloud Armor安全策略,在策略里添加允许特定IP/IP范围的规则,其余请求直接拦截
  • 优势很明显:规则管理集中,不用修改函数代码,还能搭配SQL注入、XSS防护等额外安全规则,而且Cloud Armor支持批量导入IP列表,维护起来很方便

方案2:在函数代码里直接校验源IP

如果不想折腾负载均衡,小范围场景下可以直接在函数逻辑里检查请求来源:

  • Cloud Function收到的请求会带上X-Forwarded-For头部,这个头部的第一个IP就是客户端的真实IP(Google前端代理会转发这个信息)
  • 举个Python示例(CIDR范围校验建议用ipaddress模块,避免自己写的逻辑有漏洞):
import ipaddress

ALLOWED_IPS = [
    ipaddress.ip_address("192.168.1.1"),
    ipaddress.ip_network("10.0.0.0/24")
]

def my_function(request):
    client_ip_str = request.headers.get("X-Forwarded-For", "").split(",")[0].strip()
    try:
        client_ip = ipaddress.ip_address(client_ip_str)
        if not any(client_ip in network for network in ALLOWED_IPS):
            return "Forbidden", 403
    except ValueError:
        return "Invalid IP", 400
    # 你的业务逻辑代码
    return "Success", 200
  • 缺点是规则变更需要改代码重新部署,适合IP变动少的小型场景

方案3:VPC连接器+VPC防火墙规则

如果你的函数不需要公网开放,仅和特定第三方服务器(可通过VPC peering或直接在VPC内)通信,可以用这个方案:

  • 给Cloud Function配置VPC连接器,让函数加入你的VPC网络
  • 在VPC防火墙规则里,仅允许指定IP范围访问函数的HTTPS端口(443)
  • 这种方式会关闭函数的默认公网入口,安全性拉满,但配置相对复杂,适合对网络隔离要求高的场景

注意:Cloud Function的默认公网URL本身没有内置IP过滤功能,以上三种都是官方推荐的合规实现路径。

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

火山引擎 最新活动