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

如何移除Firebase Gen 2 HTTP onRequest函数的“允许未认证访问”设置?

Firebase Gen 2 HTTP onRequest函数禁用未认证访问的解决方案

用gcloud部署Cloud Functions时,--no-allow-unauthenticated参数能直接禁止未认证访问,但这个参数在Firebase部署命令里无效,比如执行firebase deploy --only functions --no-allow-unauthenticated根本没用。现在Firebase Gen 2版本的HTTP onRequest函数,部署后默认会设为“允许未认证访问”状态,确实有安全隐患。而且Gen 2不像Gen 1那样能直接移除allUsers角色,得换下面的方法处理:

一、部署时直接禁用未认证访问

方法1:通过firebase.json配置权限

直接编辑项目根目录的firebase.json,在functions节点里添加"invoker": [],这样部署时就不会自动开放未认证访问。示例配置如下:

{
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ],
      "invoker": []
    }
  ]
}

配置好后执行firebase deploy --only functions就行。

方法2:部署后用gcloud命令快速修正

先正常部署函数:firebase deploy --only functions,然后用gcloud命令移除公共访问权限,命令格式如下(替换成自己的函数名和地域):

gcloud functions add-iam-policy-binding YOUR_FUNCTION_NAME \
  --region=YOUR_REGION \
  --member=allUsers \
  --role=roles/cloudfunctions.invoker \
  --remove

二、部署后通过控制台手动修改

  1. 打开Firebase控制台,进入目标项目
  2. 切换到「函数」页面,找到要修改的Gen 2函数
  3. 点击函数名称进入详情页,切换到「权限」标签
  4. 在成员列表里找到「所有用户」(对应allUsers)的条目,点击右侧删除按钮即可

注意:Gen 2函数控制台显示的“允许未认证访问”状态可能有延迟,只要移除了allUsers的invoker权限,未认证请求就会被拒绝,修改后可以发个未认证请求测试下是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:17:04