如何使用api配置行列权限
1. 获取 dataset 上的 Security Filter 信息
GET /api/data-source/{dsId}/security-filter
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
dsId | Path | String | 数据集id | 是 | |
token | Header | String | 登录用的Token | 是 | Token需要通过登录接口获取 |
Header 示例
{
"token": "guanyuan token"
}
Response
{
"column":{
"enabled":true,
"rules":[]
},
"row":{
"enabled":false,
"rules":[],
"defaultRule":{
"ruleType":"HIDDEN"
}
},
"applyToOwner":false
}
其中, ruleType 目前支持3种
-
COLUMN (这个是列级权限, 代表不能看的列)
-
ADVANCED (高级模式行级权限, 类似 Threshold 的公式)
-
FREEFORM (自定义模式行级权限, 完全自己写sql)
2. 获取打开/关闭 dataset 上的 行/列 Security Filter, 以及是否应用Security Filter 到 "Owner和管理员"
POST api/data-source/{dsId}/security-filter/enable
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
token | Header | String | 登录用的Token | 是 | Token需要通过登录接口获取 |
dsId | Path | String | 数据集id | 是 | |
level | Body | String | 级别 | 是 | row:行权限;column:列权限;applyToOwner:应用到管理员和Owner |
enable | Body | Boolean | 是否开启 | 是 | true:打开;false:关闭 |
POST Body 示例
{
"level": "column",
"enable": true
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3. dataset 上的 行/列 Security Filter Rule
3.1 新建 dataset 上的 行/列 Security Filter Rule
将已有的权限规则应用到数据集上
POST api/data-source/{dsId}/security-filter/rules
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
token | Header | String | 登录的token | 是 | |
dsId | Path | String | 数据集id | 是 | |
ruleId | Body | String | 规则id | 是 | |
userAndGroups | Body | JSON | 用户和用户组 | 是 | |
ruleType | Body | String | 规则类型 | 是 | COLUMN:列级ADVANCED:行级FREEFORM:自定义 |
comment | Body | String | 备注 | ||
forbiddenColumns | Body | JSON | 不可见字段 | 如添加列权限,必填 | |
advanced | Body | JSON | 行权限规则 | 如添加行权限,必填 | |
freeform | Body | String | 自定义规则 | 如添加自定义权限,必填 |
POST Body 示例
COLUMN列级权限
{
"ruleId": "b4a956d66bd57464f8f050f4",
"userAndGroups": [
{
"relId": "b1766b1ac99bf4679a1bd762",
"name": "testUser",
"relType": "USER"
}
],
"ruleType": "COLUMN",
"comment":"testUser cannot read columns",
"forbiddenColumns": [
{
"fdId": "j9259851e2ac14152bd8e41d", /* fdId可以通过预览数据集从network的preview中读取 */
"name": "city"
}
]
}
ADVANCED行级权限
{
"userAndGroups": [
{
"relId": "b1766b1ac99bf4679a1bd762",
"name": "testUser",
"relType": "USER"
}
],
"ruleType": "ADVANCED",
"comment":"testUser cannot read rows",
"advanced": [
{
"type": "condition",
"not": false,
"value": {
"name": "2009年",
"fdType": "DOUBLE",
"fdId": "ea853c91",
"metaType": "METRIC",
"seqNo": 2,
"filterType": "GE",
"filterValue": [
"50",
""
],
"advFilter": null
}
}
]
}
FREEFORM自定义权限
{
"userAndGroups": [
{
"relId": "b1766b1ac99bf4679a1bd762",
"name": "testUser",
"relType": "USER"
}
],
"ruleType": "FREEFORM",
"comment": "testUser canot read rows (freeform)",
"freeform": "[city] in 'hangzhou'"
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3.2 修改 dataset 上的 行/列 Security Filter Rule
POST api/data-source/{dsId}/security-filter/rules/{ruleId}
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
token | Header | String | 登录的token | 是 | |
dsId | Path | String | 数据集id | 是 | |
ruleId | Path | String | 权限规则id | 是 | |
userAndGroups | Body | JSON | 用户和用户组 | 是 | |
ruleType | Body | String | 规则类型 | 是 | COLUMN:列级ADVANCED:行级FREEFORM:自定义 |
comment | Body | String | 备注 | ||
forbiddenColumns | Body | JSON | 不可见字段 | 如修改列权限,必填 | |
advanced | Body | JSON | 行权限规则 | 如修改行权限,必填 | |
freeform | Body | String | 自定义规则 | 如修改自定义权限,必填 |
POST Body 示例(FREEFORM)
{
"userAndGroups": [
{
"relId": "b1766b1ac99bf4679a1bd762",
"name": "testUser",
"relType": "USER"
},
{
"relId": "b1766b1ac99bf4679a1bd111",
"name": "User2",
"relType": "USER"
}
],
"ruleType": "FREEFORM",
"comment": "users canot read rows (freeform)",
"freeform": "[city] in 'hangzhou'"
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3.3 删除 dataset 上的 行/列 Security Filter Rule
DELETE api/data-source/{dsId}/security-filter/rules/{ruleId}
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
token | Header | String | 登录的token | 是 | |
dsId | Path | String | 数据集id | 是 | |
ruleId | Path | String | 权限规则id | 是 |
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
4. 修改 dataset 上的 列上的 默认规则
POST api/data-source/{dsId}/security-filter/rules/row-level-default-rule
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
dsId | Path | String | 数据集id | 是 |
POST Body 示例(FREEFORM)
{
"ruleType": "FREEFORM",
"comment": "default rule based on city",
"freeform": "[city] in 'hangzhou'"
}
这里, 支持的几种ruleType是:
-
HIDDEN (默认规则, 其它用户是不可见的)
-
VISIBLE (其它用户全部可见, 这个比较危险, 需要边上有提示!)
-
ADVANCED (高级模式列配置, 需要读取额外的字段 advanced),
-
FREEFORM (自定义SQL模式, 需要读取额外的字段 freeform)
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。