安全规则
安全规则 是 CloudBase 云存储的 文件级权限控制 功能,通过自定义表达式精确控制每个文件的读写权限。
配置入口
在 云开发平台/云存储 ,点击「权限设置」,选择「自定义安全规则」即可配置安全规则。
⚠️ 注意:
- 云开发控制台和服务端始终有所有文件读写权限,安全规则仅对客户端(小程序端、Web 等)发起的请求有效
- 修改安全规则后,权限生效需要 1-3 分钟,请耐心等待
- 发布前务必评估规则的安全性,避免
public规则导致数据泄露
基本语法
{
"read": "表达式", // 读取权限控制表达式
"write": "表达式" // 写入权限控制表达式
}
常用模板
- 公开读取,创建者可写
- 仅创建者可读写
- 公开读取,仅管理员可写
- 仅管理员可读写
- 仅登录用户可访问
{
"read": true,
"write": "resource.openid == auth.openid || resource.openid == auth.uid"
}
{
"read": "resource.openid == auth.openid || resource.openid == auth.uid",
"write": "resource.openid == auth.openid || resource.openid == auth.uid"
}
{
"read": true,
"write": false
}
{
"read": false,
"write": false
}
💡 注意:此配置下所有客户端请求均被拒绝,仅管理员可通过云开发控制台或服务端 SDK 访问。
{
"read": "auth != null",
"write": "auth != null && auth.loginType != 'ANONYMOUS'"
}
表达式语法
内置变量
| 变量名 | 说明 | 示例 |
|---|---|---|
| auth | 用户登录信息 | auth.openid、auth.uid |
| resource | 文件资源信息 | resource.openid |
auth 对象属性
| 属性 | 说明 | 类型 | 示例值 |
|---|---|---|---|
| uid | 用户唯一标识(Web 端) | string | "abc123" |
| openid | 用户唯一标识(小程序端) | string | "oABC123" |
| loginType | 登录方式 | string | "WECHAT" |
LoginType 枚举值
| 枚举值 | 登录方式 |
|---|---|
| WECHAT_PUBLIC | 微信公众号 |
| WECHAT_OPEN | 微信开放平台 |
| ANONYMOUS | 匿名登录 |
| 邮箱登录 | |
| CUSTOM | 自定义登录 |
resource 对象属性
| 属性 | 说明 | 类型 | 示例值 |
|---|---|---|---|
| openid | 文件创建者唯一标识 | string | "oABC123" |
| path | 文件在云存储中的相对路径(不包含桶名),格式为 path/filename.jpg | string | photos/photo.jpg |
运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| == | 等于 | auth.uid == resource.openid |
| != | 不等于 | auth.loginType != 'ANONYMOUS' |
| > | 大于 | now \> resource.metadata.expireTime |
| < | 小于 | now \< resource.metadata.publishTime |
| >= | 大于等于 | auth.vipLevel \>= 3 |
| <= | 小于等于 | resource.size \<= 10485760 |
| && | 逻辑与 | auth != null && auth.loginType == 'WECHAT' |
| || | 逻辑或 | auth.uid == resource.openid || auth.isAdmin |
操作类型
| 操作 | 说明 | 默认值 |
|---|---|---|
| read | 读取文件(下载、获取 URL) | false |
| write | 写入文件(上传、删除) | false |