小程序Serverless提供了一套简明易懂的JSON语法用来控制用户对资源的访问,类似于身份验证体系里的IAM或者网络权限中的ACL。您可以在控制台上通过修改默认权限规则来管理数据表的权限。

规则语法

一组权限规则通常由数据库集合和权限操作组成:

{
    "db": {
        "${collection}": {
            ".read": true, 
            ".write": false, 
            "*": false
        }, 
        "*": {
            ".read": true, 
            ".write": false, 
            "*": false
        }
    }
}     
  • JSON的第一层级key是数据库集合名称,代表进行权限管理的范围。
    说明 "*" 代表没有匹配到集合名的默认集合。
  • JSON 第二层级key代表操作类型:
    • .read :读操作
    • .write :写操作
    • * :所有操作
  • 操作取值支持:truefalse

匹配规则

当第一层级匹配到集合后:

  • 匹配当前集合中对应的操作类型。若当前集合中没有匹配到操作类型,会查找当前集合中 "*" 操作类型。
  • 没有匹配后继续查找第一层级 "*" 集合中对应的操作类型。若还是没有匹配的操作,继续查找第一层级中 "*" 集合中 "*" 操作类型。
  • 若上述所有规则都未匹配,拒绝请求。

当第一层级没有匹配到指定的集合:

  • 查找第一层级中 "*" 集合中对应的操作类型,没有匹配到操作类型,继续查找第一层级中 "*" 集合中的 "*" 操作类型。
  • 若上述所有规则都未匹配,拒绝请求。

修改权限规则

下表列举了常用的数据权限管理规则配置及其权限说明。关于如何修改数据库权限,请参见设置数据表权限

规则设置 说明

".read": true

".write": true

所有用户都对该数据表拥有全部读写权限。
说明 该权限规则会放开数据库操作权限,请谨慎设置。

规则示例

权限规则如下:
{
    "db": {
        "posts": {
            ".write": true, 
            ".read": true
        }, 
        "*": {
            "*": false
        }
    }
}
posts集合中插入如下一条数据:
{
   "title": "文章标题",
   "content": "文章内容"
}

插入数据后的数据库内容如下:

{
   "title": "文章标题",
   "content": "文章内容"
}

由于posts集合权限规则中定义 ".read" 操作类型为true,所以可以读取所有数据。

默认规则

对于新创建的服务,小程序Serverless会自动提供一个默认规则。默认没有任何读写权限,请先修改权限规则。

操作详情,请参见设置数据表权限

{
  "db": {
    "*": {
      "*": false
    }
  }
}