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

Google Cloud IAM权限配置:Cloud Storage网站调用Gen2 Cloud Function

解决方案:限制Cloud Function仅允许指定Cloud Storage静态网站调用

核心问题分析

你之前尝试的各类服务账号、allAuthenticatedUsers等主体无效的原因很明确:前端JS在用户浏览器中发起的请求是匿名请求,不会携带任何服务账号的身份凭证,也不属于已认证用户范畴,因此这些权限配置无法匹配请求身份,直接返回403错误。

推荐方案:IAM条件限制请求来源(简便适配需求)

通过给allUsers权限添加IAM条件,仅放行来自你的Cloud Storage静态网站域名的请求,具体操作步骤如下:

  1. 清理原有公开权限
    先删除Cloud Function和关联Cloud Run服务上已有的allUsers权限(如果还保留的话)。

  2. 添加带条件的allUsers权限

    • 针对Gen2 Cloud Function:
      给allUsers授予roles/cloudfunctions.invoker角色,同时添加IAM条件:
      request.headers.referer.matches("https://<你的存储桶名称>.storage.googleapis.com/*")
      
    • 针对关联的Cloud Run服务:
      给allUsers授予roles/run.invoker角色,添加完全相同的IAM条件。
  3. 验证配置效果
    从你的静态网站发起API调用时,请求会自动携带指向存储桶域名的Referer头,符合条件即可正常访问;其他来源的请求会被直接拦截返回403。

补充说明:Referer头存在被伪造的可能性,但对于公开静态网站的场景,这是最轻量化且满足需求的方案。如果需要更高安全性,可以结合用户身份认证(如Firebase Auth),仅允许已登录用户的请求访问。

备选方案:用户身份认证(适用于需登录的场景)

如果你的网站要求用户登录才能使用,可以集成Firebase Auth或Google Sign-In,让前端请求携带用户的身份凭证,此时将权限配置为allAuthenticatedUsers即可,只有已完成认证的用户请求能访问Cloud Function。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:06:10