如何禁止直接访问Google Cloud Run/Functions,仅允许通过负载均衡访问
Cloud Functions仅允许GCP负载均衡访问的配置方法
1. 创建负载均衡专用服务账号
- 在IAM控制台创建服务账号,命名建议贴合用途,比如
lb-functions-invoker@你的项目ID.iam.gserviceaccount.com - 给该账号分配
roles/cloudfunctions.invoker角色,权限范围限定到需要保护的Cloud Functions上(避免全局授权)
2. 配置负载均衡后端服务身份
- 打开负载均衡的后端服务配置页面,找到关联Cloud Functions的后端项
- 开启身份验证选项,将后端服务使用的身份设置为刚才创建的专用服务账号
3. 移除Cloud Functions的公开访问权限
- 进入目标Cloud Functions的权限管理页面,删除
allUsers对应的roles/cloudfunctions.invoker权限 - 此时默认URL的直接访问会被拦截,返回403权限错误
4. 验证配置效果
- 直接访问Cloud Functions的默认域名(如
https://europe-west1-helloworld.cloudfunctions.net/function-name),确认无法访问 - 通过负载均衡的域名发起请求,确认能正常调用函数
额外注意点
- 若使用Serverless NEG关联Cloud Functions,需确保NEG配置中指定了正确的服务账号
- 负载均衡必须是GCP原生的HTTP(S)负载均衡,第三方LB无法通过此方式授权
- 遵循最小权限原则,服务账号仅授予必要的函数调用权限,避免过度授权
内容的提问来源于stack exchange,提问作者Vojtěch
相关产品推荐
相关产品推荐

