跳到主要内容

安全规则

安全规则 是 CloudBase 云函数的 函数级权限控制 功能,通过简单的表达式精确控制哪些用户可以调用特定的云函数。

配置入口

云开发平台/云函数 点击「权限控制」按钮进入配置页面。

适用范围

安全规则仅对客户端 SDK 调用callFunction)生效,不适用于以下场景:

  • 管理端 API 调用
  • HTTP 触发器
  • 定时触发器
  • 数据库触发器

基本语法

云函数安全规则配置在环境级别,环境内所有函数共享一个配置文件。配置采用 JSON 格式:

{
"函数名或通配符": {
"invoke": "表达式或布尔值"
}
}

配置结构说明

配置项说明示例
顶级 key函数名(具体函数)或 *(通配所有函数)"*""getUserInfo"
操作 key固定为 invoke,表示调用权限"invoke"
规则值truefalse"auth != null"见下方支持的规则值说明
必读
  1. 安全规则顶级配置必须包含 key 为 * 的通配配置
  2. 每个函数配置中必须包含 invoke 操作配置
  3. 规则值仅支持 truefalse"auth != null",不支持其他表达式
  4. 默认情况下,建议配置为 "auth != null"(仅登录用户可调用)

匹配优先级

  1. 优先匹配具体的函数名配置
  2. 如果没有匹配到具体函数名,则使用 * 通配配置

支持的规则值

云函数安全规则仅支持以下三种规则值,不支持其他复杂表达式(如 &&||、属性访问等):

规则值说明适用场景
true允许所有用户调用(包括未登录用户)公开接口(获取公告、配置等)
false禁止所有用户调用已废弃的函数、仅内部调用的函数
"auth != null"仅登录用户可调用需要用户身份验证的业务函数

不支持的表达式示例

  • "auth.uid != null" - 不支持属性访问
  • "auth != null && auth.loginType == 'WECHAT'" - 不支持逻辑运算符
  • "auth.openid != null || auth.uid != null" - 不支持复杂条件

如需更精细的权限控制,请在云函数内部实现业务逻辑验证。

常用模板

{
"*": {
"invoke": "auth != null"
}
}

所有函数默认要求用户登录后才能调用,适用于需要身份验证的业务系统。

常见问题

可以针对不同用户设置不同权限吗?

安全规则仅支持 truefalse"auth != null" 三种规则值,不支持基于用户属性、登录方式、角色等的复杂权限控制

如需更精细的权限控制(如基于角色、用户组、登录方式等),可以在云函数内部进行验证

如何排查权限错误?

当遇到 PERMISSION_DENIED 错误时,请按以下步骤排查:

  1. 检查安全规则配置
  2. 确认用户登录状态
    • 使用客户端 SDK 检查用户是否已登录
    • 对于需要 "auth != null" 的函数,确保调用前已完成登录
  3. 查看错误详情
    • 详细错误信息请参考 PERMISSION_DENIED 错误码
    • 检查是否是调用方式问题(如使用了 HTTP 触发器而非 SDK callFunction