跳到主要内容
版本:6.6.0

如何使用api配置行列权限

1. 获取 dataset 上的 Security Filter 信息

GET /api/data-source/{dsId}/security-filter

Parameters

NameLocation类型含义是否必填备注
dsIdPathString数据集id
tokenHeaderString登录用的TokenToken需要通过登录接口获取

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

NameLocation类型含义是否必填备注
tokenHeaderString登录用的TokenToken需要通过登录接口获取
dsIdPathString数据集id
levelBodyString级别row:行权限;column:列权限;applyToOwner:应用到管理员和Owner
enableBodyBoolean是否开启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

NameLocation类型含义是否必填备注
tokenHeaderString登录的token
dsIdPathString数据集id
ruleIdBodyString规则id
userAndGroupsBodyJSON用户和用户组
ruleTypeBodyString规则类型COLUMN:列级ADVANCED:行级FREEFORM:自定义
commentBodyString备注
forbiddenColumnsBodyJSON不可见字段如添加列权限,必填
advancedBodyJSON行权限规则如添加行权限,必填
freeformBodyString自定义规则如添加自定义权限,必填

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

NameLocation类型含义是否必填备注
tokenHeaderString登录的token
dsIdPathString数据集id
ruleIdPathString权限规则id
userAndGroupsBodyJSON用户和用户组
ruleTypeBodyString规则类型COLUMN:列级ADVANCED:行级FREEFORM:自定义
commentBodyString备注
forbiddenColumnsBodyJSON不可见字段如修改列权限,必填
advancedBodyJSON行权限规则如修改行权限,必填
freeformBodyString自定义规则如修改自定义权限,必填

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

NameLocation类型含义是否必填备注
tokenHeaderString登录的token
dsIdPathString数据集id
ruleIdPathString权限规则id

Response

返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。

4. 修改 dataset 上的 列上的 默认规则

POST api/data-source/{dsId}/security-filter/rules/row-level-default-rule

Parameters

NameLocation类型含义是否必填备注
dsIdPathString数据集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 全量信息。