# 云存储安全规则

云存储支持通过安全规则控制前端访问云存储的权限,需特别注意:

  1. 安全规则仅对前端(小程序端)访问生效,管理端(云函数、云控制台)始终拥有所有读写权限。
  2. 这里的限制是接口层面的,不是控制通过云存储获取的文件 HTTP URL 的访问权限。

以下是一个对小程序端 ”所有用户可读、仅文件创建者可写“ 的安全规则示例:

{
  "read": true,
  "write": "resource.openid == auth.uid"
}

# 概览

存储安全规则用于确定哪些人对云存储桶中存储的文件拥有读取和写入权限,也可用于文件中包含的元数据校验。规则通过 json 来描述,允许在满足条件时允许 readwrite 操作,示例配置如下:

{
  "read": boolean | condition expression string,
}

json 配置的 key,是用户的操作类型value 是一个表达式。当表达式执行结果的值是 true 的时候,用户的操作允许执行;否则,用户的操作则不被允许。

操作类型 说明 默认值
read 读取文件,例如:download false
write 上传/覆盖文件,删除文件 false

规则验证所依据的上下文通过 authresource 对象获得,其提供可验证身份的上下文信息(auth.uid)和对象所有权(resource.openid)等信息。

{
  "read": "auth.uid == resource.openid",
  "write": "auth != null"
}

如需详细了解 Storage 安全规则,请参阅规则说明部分。

# 示例规则

注意:发布之前,请务必评估你的规则,确保它们可以为你的应用提供所需的最高级别的安全性。如果发布应用时设置的是 public 规则,可能会导致你存储的数据遭到意外访问或未经授权的访问。若设置的是 default 规则,可能导致你的数据无法被管理员外的用户访问。

存储安全规则以存储桶为控制边界,默认规则下不允许任何非管理端的资源访问,未实现基础的权限控制,可以根据需求设置如下的安全规则:

# 所有用户可读,仅所有者写

{
  "read": true,
  "write": "resource.openid == auth.openid"
}

# 仅所有者可读写

{
  "read": "resource.openid == auth.openid"
  "write": "resource.openid == auth.openid"
}

# 所有用户可读,仅所有者可写

{
  "read": true,
  "write": false
}

# 仅所有者可读写

{
  "read": false,
  "write": false
}