观远 BI

如何使用api配置行列权限

创建于 2022-11-01 / 最近更新于 2022-11-04 / 1620
字体: [默认] [大] [更大]

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 全量信息。


2 人点赞过