1. HENGSHI SENSE 数据权限解决方案

1.1. 引言

1.1.1. 编写目的

本方案主要讲述HENGSHI SENSE的数据权限方案,即在HENGSHI SENSE系统中,通过同步企业内部的人员属性和组织架构等信息,实现企业内部的每一个用户对于业务数据的读取权限。

本方案的的预期读者为:HENGSHI SENSE的设计和开发人员、HENGSHI SENSE的企业客户开发人员

1.1.2. 背景

满足客户可根据业务系统数据权限对数据进行过滤.

1.1.3. 术语表

序号 术语 解释
1 权限 用户对于资源的职权范围
2 功能权限 用户在HENGSHI SENSE系统上的操作权限
3 数据权限 用户在HENGSHI SENSE系统上查看每一个报表时计算所基于的数据集合
4 用户属性 用户的自定义信息部分(用户属性/画像,用于筛选⽤用户群体,过滤数据),一般由企业客户同步到HENGSHI SENSE,详见3.1
5 组织架构 企业的内部的组织结构信息,一般为树形结构,每个用户属于其中的某一个或多个节点(目前在HENGSHI SENSE只支持一个)

1.2. 概览

1.2.1. 数据权限规则

= 授权用户群体 + 数据过滤器

授权用户群体的指定

  • 通过指定具体用户
  • 通过指定具体组
  • 通过用户自定义属性指定

数据过滤器的生成

  • 在过滤器器中指定常量量过滤
  • 在过滤器器中使用用户自定义属性过滤,例如:
    • table1.区域 = $USER.区域
    • table1.入职年年限 <= yeardiff($USER.入职时间,now())

基于组织架构的数据权限规则

  1. 业务数据表中含有组织架构相关的字段,比如部门ID
  2. 用户自定义属性中有组织架构相关的属性,比如所属部门ID

1.2.2. 数据权限控制的作用对象

  • 数据连接中的表
  • 已发布应⽤用中的数据集

1.2.3. 流程设计

流程设计原则:

  • 降低系统间耦合
  • 避免重复操作
  • 只使用结果,避免实现逻辑拷贝,一方逻辑修改导致另一方也需同步修改

流程:

img

流程说明:

  • 用户登录时,传递该用户拥有哪些权限,具体数据如,部门id集合,组织id集合或者不能访问的id集合.
  • hengshi将会将这些权限保存到用户的属性中.
  • 在[数据连接]->[选择数据表]->[权限控制]中进行设置,指定该表中的组织id或部门id字段,与用户属性中的权限属性进行匹配过滤.

例1:

表A有公司C,及子公司CC1,CC2,及公司D,E.表A代表组织id字段为org_id,用户U的可访问组织id集合为C及CC1,CC2的id,那么根据权限过滤后,用户U可见的数据仅为C,CC1,CC2的数据.

1.3. 数据结构

1.3.1. 用户属性

基本信息部分

参数 说明 注释
login_name 用户名 唯一/必需
name 显示名 必需
mail Email 唯一
启用/禁用标志 必需(保留,未启用)
mobile 手机号 唯一
备注 可为空(保留,未启用)
group_ids 所属用户组ID列表
role_ids 所属角色ID列表
{XXX} 其它自定义属性 仅支持数字,字符串,数组(元素为数字,字符串)

属性建议字段

参数 说明 注释
dept_ids 所属部门ID列表 可以自定义名称
org_ids 所属组织ID列表 可以自定义名称
permit_dept_ids 用户有权限访问的部门ID列表 可以自定义名称
permit_org_ids 用户有权限访问的组织ID列表 可以自定义名称
inhibit_dept_ids 用户禁止访问的部门ID列表 可以自定义名称
inhibit_org_ids 用户禁止访问的组织ID列表 可以自定义名称

示例:

{
  "login_name":"zhangjunjie",
  "email_verified":false,
  "nickname":"张俊杰",
  "name":"张俊杰",
  "mobile":"13383338333",
  "preferred_username":"zhangjunjie",
  "given_name":"俊杰",
  "family_name":"张",
  "mail":"zhangjunjie@hengshi.com",
  "dept_ids":[
    "1",
    "2"
  ],
  "org_ids":[
    "1"
  ],
  "permit_dept_ids":[
    "1",
    "2",
    "3"
  ],//该用户可以访问部门标识(id,编号,名称)为1,2,3的数据
  "permit_org_ids":[
  ],
  "inhibit_dept_ids":[
  ],
  "inhibit_org_ids":[
    "5",
    "6"
  ],//该用户不可以访问组织标识(id,编号,名称)为5,6的数据
"role_ids":[
    1,
    2
  ],
  "group_ids":[
      1,
      2
    ]
}

1.4. 同步接口

1.4.1. API

OAuth登录接口

返回值:

{
  "login_name":"zhangjunjie",
  "email_verified":false,
  "nickname":"张俊杰",
  "name":"张俊杰",
  "mobile":"13383338333",
  "preferred_username":"zhangjunjie",
  "given_name":"俊杰",
  "family_name":"张",
  "mail":"zhangjunjie@hengshi.com",
  "dept_ids":[
    "1",
    "2"
  ],
  "org_ids":[
   "1"
  ],
  "permit_dept_ids":[
    "1",
    "2",
    "3"
  ],//该用户可以访问部门标识(id,编号,名称)为1,2,3的数据
  "permit_org_ids":[
  ],
  "inhibit_dept_ids":[
  ],
  "inhibit_org_ids":[
    "5",
    "6"
  ],//该用户不可以访问组织标识(id,编号,名称)为5,6的数据
"role_ids":[
    1,
    2
  ],
  "group_ids":[
      1,
      2
    ]
}

钉钉

可以自定义用户的属性,如下所示:

img

CAS/SAML2登录接口

CAS/SAML2暂无法传递权限信息,由同步接口进行同步.

results matching ""

    No results matching ""

    HENGSHI SENSE 嵌入式数据分析 使用场景