当前位置: 首页 > ds >正文

衡石科技:HENGSHI SENSE 数据权限解决方案

编写目的​

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

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

背景​

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

术语表​

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

概览​

数据权限规则​

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

授权用户群体的指定​
  • 通过指定具体用户
  • 通过指定具体组
  • 通过用户自定义属性指定
数据过滤器的生成​
  • 在过滤器器中指定常量量过滤
  • 在过滤器器中使用用户自定义属性过滤,例如:
  • table1.区域 = $USER.区域
  • table1.入职年年限 <= yeardiff($USER.入职时间,now())
基于组织架构的数据权限规则​
  1. 业务数据表中含有组织架构相关的字段,比如部门 ID
  2. 用户自定义属性中有组织架构相关的属性,比如所属部门 ID

数据权限控制的作用对象​

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

流程设计​

流程设计原则:

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

流程:

img

流程说明:​

  • 同步属性: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的数据

数据结构​

用户属性​

基本信息部分​

用户属性,其中 config 字段是表示用户属性的 JSON 对象

同步接口​

API​

通过 api 调用同步用户属性,参考用户属性

SSO 登录认证时同步​

  1. 登录时,通过 sso server 传递用户属性,没有映射的字段会自动保存成用户属性,如:sso server 传递了3个字段,loginName,email,position,其中 loginName,email 映射到了用户的 loginName,email,position 没有任何映射,则会将 position 字段保存为用户属性。 除用户名密码认证方式以外,其他认证方式处理逻辑一致。
  2. 映射关系在认证方式页面配置,映射的含义及说明。 以 oauth 为例说明:
示例 OAuth 登录传递用户属性​

Oauth Server 返回值:

json

{"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. 登录认证协议众多,以上的示例为 json 格式的,其他协议如 ldap,sso(cas,saml 等)或者第三方授权(钉钉,企业微信,飞书等),都会根据协议传递的属性,将没有映射的字段信息保存成用户属性。
  2. 对于传递用户属性不灵活的或者无法定制的,可以使用 API 的方式同步。
http://www.xdnf.cn/news/2565.html

相关文章:

  • Shadertoy着色器移植到Three.js经验总结
  • 【Linux系统】详解Linux权限
  • AI工作流自动化与智能应用开发平台
  • WEB服务器的部署及优化
  • 线上JVM调优与全栈性能优化 - Java架构师面试实战
  • DataStreamAPI实践原理——快速上手
  • 学习笔记—双指针算法—移动零
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: NSString类型与CFStringRef类型字符串相互转换.
  • 通过数据增强打造抗噪音多模态大模型
  • MySQL 大数据量分页查询优化指南
  • Git 撤回合并提交
  • WPF之XAML基础
  • AlexNet网络搭建
  • OneNet云平台
  • java16
  • Java快速上手之实验五
  • 若依脱敏功能升级:接口返回想脱就脱,想不脱就不脱(实现灵活可控制的数据脱敏)
  • 手撕——贪吃蛇小游戏(下)
  • 【quantity】1 创建 crates.io 账号并上传 Rust 库
  • 数据库查询艺术:从单表操作到多表联查的全面指南
  • Rollup、Webpack、Esbuild 和 Vite 前端打包工具
  • Redis01-基础-入门
  • 华为仓颉编程语言的实际用法与使用领域详解
  • OpenCV实验室工具的使用
  • 【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程
  • C/C++死锁和活锁
  • k8s学习记录(五):Pod亲和性详解
  • 解决两个技术问题后小有感触-QZ Tray使用经验小总结
  • 分布式GPU上计算长向量模的方法
  • 数据一致性问题剖析与实践(四)——竞态条件竞争导致的一致性问题