跳到主要内容

安全规则

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

配置入口

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

适用范围

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

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

基本语法

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

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

配置结构说明

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

匹配优先级

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

支持的规则值

云函数安全规则支持以下规则值:

规则值说明适用场景
true允许所有用户调用(包括未登录用户)公开接口(获取公告、配置等)
false禁止非管理员访问已废弃的函数、仅内部调用的函数
"auth != null"仅登录用户可调用需要用户身份验证的业务函数
"auth.loginType != 'ANONYMOUS' && auth != null"除匿名登录外的其他身份用户可调用不对访客开放的业务函数

支持的表达式示例

  • "auth != null" - 仅登录用户
  • "auth.loginType != 'ANONYMOUS' && auth != null" - 允许除了匿名登录外的其他身份用户调用

不支持的表达式示例

  • "auth.uid != null" - 不支持单独的属性访问
  • "auth != null && auth.loginType == 'WECHAT'" - 不支持指定特定登录方式
  • "auth.openid != null || auth.uid != null" - 不支持 || 运算符

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

常用模板

{
"*": {
"invoke": "auth.loginType != 'ANONYMOUS' && auth != null"
},
"getPublicData": {
"invoke": true
}
}
  • 默认排除匿名登录用户,仅允许显式登录的用户调用
  • getPublicData 允许所有用户调用

常见问题

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

安全规则支持以下规则值:truefalse"auth != null""auth.loginType != 'ANONYMOUS' && auth != null",可以基于登录状态和是否匿名登录进行权限控制。

不支持基于用户角色、用户组、特定用户 ID 等更复杂的权限控制。如需更精细的权限控制,可以在云函数内部进行验证。

如何排查权限错误?

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

  1. 检查安全规则配置
  2. 确认用户登录状态
    • 使用客户端 SDK 检查用户是否已登录
    • 对于需要 "auth != null" 的函数,确保调用前已完成登录
  3. 查看错误详情