如何配置GCP HTTPS函数仅允许特定GCP函数及外部IP访问?
限制GCP HTTPS函数的访问范围(仅允许内部函数+特定外部IP)
1. 给内部调用函数的服务账号配置权限
Pub/Sub触发的GCP函数调用你的HTTPS函数时,会使用它自身的默认服务账号(格式通常为你的项目ID@appspot.gserviceaccount.com)。你需要给这个账号授予调用权限:
- 打开GCP控制台,找到目标HTTPS函数,进入「权限」标签页
- 点击「添加」,在「新成员」输入框中填入调用方函数的服务账号邮箱
- 角色选择「Cloud Functions > Cloud Functions Invoker」,完成后保存设置
2. 调整入口流量规则,限制外部访问IP
默认的「允许所有流量」需要修改为仅允许内部流量和指定外部IP:
- 回到目标HTTPS函数的「触发器」标签页
- 找到「入口设置」选项,选择「允许内部流量和指定的外部IP地址」
- 在「IP地址范围」输入框中填入外部应用的公网IP(单个IP直接填写,如
114.114.114.114;批量IP用CIDR格式,如192.168.0.0/24) - 保存设置
3. 验证配置是否生效
- 内部调用测试:触发对应的Pub/Sub主题,让调用方函数执行并调用你的HTTPS函数,确认能正常返回结果
- 外部IP测试:用指定的IP发起请求,能正常访问即为配置有效;用未授权的IP发起请求,会收到403禁止访问的提示
注意事项
- 如果调用方函数使用了自定义服务账号,需要给该自定义账号也授予「Cloud Functions Invoker」权限
- 入口设置中的「内部流量」包含GCP内部服务(如其他Cloud Functions、Cloud Run等)的调用,因此Pub/Sub触发的函数会被允许访问
- 外部应用的IP建议使用静态IP,避免IP变动导致访问失败
内容的提问来源于stack exchange,提问作者Amit Verma
相关产品推荐
相关产品推荐

