Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
erosXXX
uni-app
提交
c127b2f6
U
uni-app
项目概览
erosXXX
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c127b2f6
编写于
2月 26, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: policy-tcb
上级
680b3002
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
200 addition
and
101 deletion
+200
-101
docs/uniCloud/policy-tcb-bak.md
docs/uniCloud/policy-tcb-bak.md
+153
-0
docs/uniCloud/policy-tcb.md
docs/uniCloud/policy-tcb.md
+47
-101
未找到文件。
docs/uniCloud/policy-tcb-bak.md
0 → 100644
浏览文件 @
c127b2f6
## 简介
为了保护用户的数据安全,云开发提供更灵活、可扩展、更细粒度的安全规则能力,开发者可以在云后台或者小程序开发工具上自定义安全规则,限制
**客户端**
对数据库的访问权限。本文档主要介绍如何配置安全规则以及表达式的相关说明。
安全规则本身不收费,但是安全规则额外的数据访问会统计到计费中。
**注意**
-
`get`
函数会产生额外的数据访问。
-
指定文档ID查询的所有写操作会产生一次数据访问。
-
权限控制仅针对客户端
## 安全规则示例
**规则示例**
```
//云数据库
{
"read": "auth.uid==doc._openid",
"write": "doc.name=='zzz'"
}
//云存储
{
"read": true,
"write": "resource.openid == auth.uid"
}
```
以上 json 配置中解释如下:
-
key:指用户的操作类型。
-
value:指一个表达式。
## 操作类型
-
[
云数据库操作类型
](
#云数据库操作类型
)
-
[
云存储操作类型
](
#云存储操作类型
)
## 表达式
表达式是伪代码的语句,配置的时候不能过长。
### 变量
**全局变量**
|变量名 |类型 |说明 |
|:-: |:-: |:-: |
|auth |object |用户登录信息,字段说明参见下文 |
|now |number |当前时间 |
|doc |any |文档数据或查询条件 |
**auth**
|字段名 |类型 |说明 |
|:-: |:-: |:-: |
|loginType|string |登录方式,取值为ANONYMOUS(匿名登录)、CUSTOM(自定义登录) |
|uid |string |用户唯一 ID(对应数据库文档的doc._openid、云存储的resource.openid),见下面示例|
```
//云数据库
{
"read": "auth.uid == doc._openid", //仅创建者可读
"write": "auth.uid == doc._openid", //仅创建者可写
"create": false //不允许客户端创建记录
}
//云存储
{
"read": "resource.openid == auth.uid", //仅创建者可读
"write": "resource.openid == auth.uid" //仅创建者可写
}
```
### 运算符
|运算符 |说明 |示例 |示例解释(集合查询) |
|:-: |:-: |:-: |:-: |
|== |等于 |auth.uid == 'zzz' |用户的 uid 为 zzz |
|!= |不等于 |auth.uid != 'zzz' |用户的 uid 不为 zzz |
|> |大于 |doc.age>10 |查询条件的 age 属性大于10 |
|>= |大于等于 |doc.age>=10 |查询条件的 age 属性大于等于10 |
|
<
|
小于
|
doc.age
>
10 |查询条件的 age 属性小于10 |
|
<
=
|
小于等于
|
doc.age
>
=10 |查询条件的 age 属性小于等于10 |
|in |存在于集合中 |auth.uid in ['zzz','aaa'] |用户的 uid 是['zzz','aaa']中的一个 |
|!(xx in [])|不存在于集合中,使用 in 的方式描述 !(a in [1,2,3]) |!(auth.uid in ['zzz','aaa']) |用户的 uid 不是['zzz','aaa']中的任何一个 |
|&& |与 |auth.uid == 'zzz' && doc.age>10 |用户的 uid 为 zzz 并且查询条件的 age 属性大于10 |
|
||
|或者 |auth.uid == 'zzz'
||
doc.age>10 |用户的 uid 为 zzz 或者查询条件的 age 属性大于10 |
|. |对象元素访问符 |auth.uid |用户的 uid |
|[] |数组访问符属性 |get('database.collection_a.user')[auth.uid] == 'zzz' |collection_a集合中id为user的文档,key 为用户 uid 的属性值为 zzz|
**注意**
-
比较运算符的右值必须为数值。
<!-- ### 函数
#### get
目前仅支持
`get`
函数,唯一的参数必须为
`database.集合名称.文档id`
。通过访问其它文档的数据来判断用户操作是否符合安全规则。
**使用示例**
```
{
"read":"get('xxxx')[auth.uid] in [1,2,3]",
"delete":"get('xxxx')[auth.uid] == 1 && doc.user in ['ersed','sfsdf'] "
}
```
**注意**
-
一个表达式最多可以有3个get函数。
-
最多可以访问2个不同的文档。
-
不允许嵌套调用,例如:get("xxxx").prop[get("xxxxx").zzzz]; -->
<!-- ## 云数据库
### 配置说明
开发者可以在uniCloud控制台设置数据库权限
**目前不支持在客户端操作数据库,推荐直接使用以下配置:**
![](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-tcb-db-policy.png
)
-->
<!-- ### 云数据库操作类型
|操作类型 |说明 |默认值 |
|:-: |:-: |:-: |
|read |读文档 |false |
|write |写文档,可以细分为 create、update、delete|false |
|create |新建文档 |无 |
|update |更新文档 |无 |
|delete |删除文档 |无 | -->
## 云存储
### 配置说明
开发者可以在uniCloud控制台设置云存储权限。如下图所示,点击
`编辑`
按钮,使用默认的四条规则,点击
`切换到安全规则`
可以自行配置JSON格式的权限规则。
![](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-tcb-storage-policy.png
)
### 云存储操作类型
|操作类型 |说明 |默认值 |
|:-: |:-: |:-: |
|read |读取文件,例如:getTempFileURL |- |
|write |上传/覆盖文件,删除文件 |- |
\ No newline at end of file
docs/uniCloud/policy-tcb.md
浏览文件 @
c127b2f6
## 简介
为了保护用户的数据安全,云开发提供更灵活、可扩展、更细粒度的安全规则能力,开发者可以在云后台或者小程序开发工具上自定义安全规则,限制
**客户端**
对数据库的访问权限。本文档主要介绍如何配置安全规则以及表达式的相关说明。
安全规则本身不收费,但是安全规则额外的数据访问会统计到计费中。
为了保护用户的数据安全,uniCloud提供更灵活、可扩展、更细粒度的安全规则能力,开发者可以在uniCloud web控制台上自定义安全规则,限制
**客户端**
对云存储的访问权限。本文档主要介绍如何配置安全规则以及表达式的相关说明。
**注意**
-
`get`
函数会产生额外的数据访问。
-
指定文档ID查询的所有写操作会产生一次数据访问。
-
权限控制仅针对客户端
## 安全规则示例
...
...
@@ -15,15 +11,15 @@
**规则示例**
```
//云数据库
// 云存储
// 所有人可读,仅创建者可写
{
"read":
"auth.uid==doc._openid"
,
"write": "
doc.name=='zzz'
"
"read":
true
,
"write": "
resource.openid == auth.uid
"
}
//云存储
// 非匿名用户可读,仅创建者可写
{
"read":
true
,
"read":
"auth.loginType != 'ANONYMOUS'"
,
"write": "resource.openid == auth.uid"
}
```
...
...
@@ -33,10 +29,18 @@
-
key:指用户的操作类型。
-
value:指一个表达式。
## 操作类型
## 配置说明
开发者可以在uniCloud控制台设置云存储权限。如下图所示,点击
`编辑`
按钮,使用默认的四条规则,点击
`切换到安全规则`
可以自行配置JSON格式的权限规则。
![](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-tcb-storage-policy.png
)
## 云存储操作类型
-
[
云数据库操作类型
](
#云数据库操作类型
)
-
[
云存储操作类型
](
#云存储操作类型
)
|操作类型 |说明 |默认值 |
|:-: |:-: |:-: |
|read |读取文件,例如:getTempFileURL |- |
|write |上传/覆盖文件,删除文件 |- |
## 表达式
...
...
@@ -49,24 +53,24 @@
|变量名 |类型 |说明 |
|:-: |:-: |:-: |
|auth |object |用户登录信息,字段说明参见下文 |
|now |number |当前时间 |
|doc |any |文档数据或查询条件 |
|now |number |当前时间的时间戳 |
|resource |object |云存储资源 |
|doc |any |数据库文档资源(目前不开放数据库权限配置) |
**auth**
|字段名 |类型 |说明 |
|:-: |:-: |:-: |
|loginType|string |登录方式,取值为ANONYMOUS(匿名登录)、CUSTOM(自定义登录)
|
|uid |string |用户唯一 ID(对应
数据库文档的doc._openid、云存储的resource.openid),见下面示例
|
|loginType|string |登录方式,取值为ANONYMOUS(匿名登录)、CUSTOM(自定义登录)|
|uid |string |用户唯一 ID(对应
云存储的resource.openid),见下面示例
|
```
//云数据库
{
"read": "auth.uid == doc._openid", //仅创建者可读
"write": "auth.uid == doc._openid", //仅创建者可写
"create": false //不允许客户端创建记录
}
**resource**
|字段名 |类型 |说明 |
|:-: |:-: |:-: |
|openid |string |资源创建者的用户唯一ID |
```
//云存储
{
"read": "resource.openid == auth.uid", //仅创建者可读
...
...
@@ -85,69 +89,11 @@
|
<
|
小于
|
doc.age
>
10 |查询条件的 age 属性小于10 |
|
<
=
|
小于等于
|
doc.age
>
=10 |查询条件的 age 属性小于等于10 |
|in |存在于集合中 |auth.uid in ['zzz','aaa'] |用户的 uid 是['zzz','aaa']中的一个 |
|!(xx in [])
|不存在于集合中,使用 in 的方式描述 !(a in [1,2,3]) |!(auth.uid in ['zzz','aaa']) |用户的 uid 不是['zzz','aaa']中的任何一个
|
|&&
|与 |auth.uid == 'zzz' && doc.age>10 |用户的 uid 为 zzz 并且查询条件的 age 属性大于10
|
|
||
|或者
|auth.uid == 'zzz'
||
doc.age>10 |用户的 uid 为 zzz 或者查询条件的 age 属性大于10
|
|!(xx in [])
|不存在于集合中,使用 in 的方式描述 !(a in [1,2,3]) |!(auth.uid in ['zzz','aaa']) |用户的 uid 不是['zzz','aaa']中的任何一个
|
|&&
|与 |auth.uid == 'zzz' && resource.openid == 'xxx' |用户的 uid 为 zzz 并且资源的创建者id为 xxx
|
|
||
|或者
|auth.uid == 'zzz'
||
auth.uid == 'xxx' |用户的 uid 为 zzz 或者用户的 uid 为 xxx
|
|. |对象元素访问符 |auth.uid |用户的 uid |
|[] |数组访问符属性 |get('database.collection_a.user')[auth.uid] == 'zzz' |collection_a集合中id为user的文档,key 为用户 uid 的属性值为 zzz|
**注意**
-
比较运算符的右值必须为数值。
<!-- ### 函数
#### get
目前仅支持
`get`
函数,唯一的参数必须为
`database.集合名称.文档id`
。通过访问其它文档的数据来判断用户操作是否符合安全规则。
**使用示例**
```
{
"read":"get('xxxx')[auth.uid] in [1,2,3]",
"delete":"get('xxxx')[auth.uid] == 1 && doc.user in ['ersed','sfsdf'] "
}
```
**注意**
-
一个表达式最多可以有3个get函数。
-
最多可以访问2个不同的文档。
-
不允许嵌套调用,例如:get("xxxx").prop[get("xxxxx").zzzz]; -->
## 云数据库
### 配置说明
开发者可以在uniCloud控制台设置数据库权限
**目前不支持在客户端操作数据库,推荐直接使用以下配置:**
![](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-tcb-db-policy.png
)
<!-- ### 云数据库操作类型
|操作类型 |说明 |默认值 |
|:-: |:-: |:-: |
|read |读文档 |false |
|write |写文档,可以细分为 create、update、delete|false |
|create |新建文档 |无 |
|update |更新文档 |无 |
|delete |删除文档 |无 | -->
## 云存储
### 配置说明
开发者可以在uniCloud控制台设置云存储权限。如下图所示,点击
`编辑`
按钮,使用默认的四条规则,点击
`切换到安全规则`
可以自行配置JSON格式的权限规则。
![](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-tcb-storage-policy.png
)
### 云存储操作类型
|操作类型 |说明 |默认值 |
|:-: |:-: |:-: |
|read |读取文件,例如:download |- |
|write |上传/覆盖文件,删除文件 |- |
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录