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,详见同步接口 |
5 | 组织架构 | 企业的内部的组织结构信息,一般为树形结构,每个用户属于其中的某一个或多个节点 |
1.2. 概览
1.2.1. 数据权限规则
= 授权用户群体 + 数据过滤器
授权用户群体的指定
- 通过指定具体用户
- 通过指定具体组
- 通过用户自定义属性指定
数据过滤器的生成
- 在过滤器器中指定常量量过滤
- 在过滤器器中使用用户自定义属性过滤,例如:
- table1.区域 = $USER.区域
- table1.入职年年限 <= yeardiff($USER.入职时间,now())
基于组织架构的数据权限规则
- 业务数据表中含有组织架构相关的字段,比如部门ID
- 用户自定义属性中有组织架构相关的属性,比如所属部门ID
1.2.2. 数据权限控制的作用对象
- 数据连接中的表
- 已发布应用中的数据集
1.2.3. 流程设计
流程设计原则:
- 降低系统间耦合
- 避免重复操作
- 只使用结果,避免实现逻辑拷贝,一方逻辑修改导致另一方也需同步修改
流程:
1.2.4. 流程说明:
- 同步属性:API调用/用户登录时,由 sso server 传递该用户拥有哪些权限,如,部门id集合,组织id集合或者不能访问的id集合。传递的具体数据没有限制,根据业务需要由 sso server 中决定传递哪些数据。hengshi将 sso server 中传递的这些属性保存到用户的属性中。
- 声明属性:在系统中声明用户属性,参考用户属性声明
- 使用属性:在[数据连接]->[选择数据表]->[权限控制]中进行设置,指定该表中的组织id或部门id字段,与用户属性中的权限属性进行匹配过滤。
例1:
- 用户U登录同步用户属性org_id_set(值为C及CC1,CC2的id集合),org_id_set=["C","CC1,"CC2"]。
- 在系统中声明用户属性org_id_set。
- 表A有公司C,及子公司CC1,CC2,及公司D,E。设置表A的权限过滤org_id 在用户属性org_id_set中(表A.org_id in $USER.org_id_set)
那么根据权限过滤后,用户U可见的数据仅为C,CC1,CC2的数据
1.3. 数据结构
1.3.1. 用户属性
基本信息部分
用户属性,其中config字段是表示用户属性的JSON对象
1.4. 同步接口
1.4.1. API
通过api调用同步用户属性,参考用户属性
1.4.2. sso 登录认证时同步
- 登录时,通过sso server传递用户属性,没有映射的字段会自动保存成用户属性,如:sso server传递了3个字段,loginName,email,position,其中loginName,email映射到了用户的loginName,email,position没有任何映射,则会将position字段保存为用户属性。 除用户名密码认证方式以外,其他认证方式处理逻辑一致。
- 映射关系在认证方式页面配置,映射的含义及说明。
以oauth为例说明:
示例 oauth 登录传递用户属性
oauth server 返回值:
{
"login_name":"zhangsan",//用户名映射
"name":"zhangsan",//显示名映射
"email":"zhangsan@hengshi。com",//邮箱映射
"roles":[ //角色映射
"system admin",
"data admin"
],
"auths": [1,2,3],
"leaderId": 1,
"position": "manager"
}
其中没有映射的字段auths,leaderId,position自动保存到用户属性中,按照流程说明的步骤即可使用。
1.4.3. 注意
- 登录认证协议众多,以上的示例为json格式的,其他协议如ldap,sso(cas,saml等)或者第三方授权(钉钉,企业微信,飞书等),都会根据协议传递的属性,将没有映射的字段信息保存成用户属性。
- 对于传递用户属性不灵活的或者无法定制的,可以使用 API 的方式同步。
results matching ""
No results matching ""
衡石文档
- 产品功能一览
- 发布说明
- 新手上路
- 安装与启动
- 系统管理员手册
- 数据管理员手册
- 分析人员手册
- 数据查看员手册
- 数据服务
- 最佳实践
- 衡石分析平台 API 手册
- 附录