身份
身份(Identity)是 Chameleon 平台的权限管理核心概念,身份是绑定在用户账号上的一个字段,用于定义用户在系统中的权限范围。在管理后台,我们可以对系统身份进行管理。
概述
身份模块是平台权限体系的核心,通过身份的定义和配置,实现精细化的权限控制。一个用户账号可以绑定多个身份,拥有所有身份的权限总和。
身份模块的核心价值
- 灵活权限配置:为不同岗位定义不同的身份和权限
- 精细权限控制:功能、数据、字段三级权限
- 身份组合:用户可拥有多个身份,权限叠加
- 权限审计:完整的权限配置记录
组织架构
身份模块基于组织架构进行权限管理。Chameleon 平台支持多层级组织架构:
组织架构的详细配置和管理请参阅 组织体系。
身份管理
默认身份
系统初始化时,已经添加了默认身份。系统中的所有账号,都具有默认身份的权限,因此可以把一些通用的权限授权给默认身份。
身份属性
| 属性 | 说明 |
|---|---|
| 名称 | 身份名称 |
| 编码 | 身份编码 |
| 描述 | 身份说明 |
| 权限 | 身份权限配置 |
系统身份
| 身份 | 说明 | 权限范围 |
|---|---|---|
| 系统管理员 | 拥有所有权限 | 系统全部功能 |
| 开发者 | 管理元数据配置 | 实体、表单、视图列表配置 |
| 业务管理员 | 管理业务数据 | 业务数据管理 |
自定义身份
根据业务需求创建自定义身份,灵活配置权限:
- 进入 系统管理 > 身份管理
- 点击 新建身份
- 配置身份基本信息
- 设置身份权限
- 保存身份
权限体系
Chameleon 平台提供多级权限控制体系:
菜单权限
可以为身份配置有权限查看的菜单,控制菜单的显示和隐藏。
页面权限
可以对当前身份的用户可以访问的页面进行权限控制。
| 权限类型 | 说明 |
|---|---|
| 可访问 | 用户可以访问该页面 |
| 不可访问 | 用户无法访问该页面 |
操作/接口/功能权限
对当前身份的用户可以访问的接口、功能按钮以及对象数据操作进行权限控制。
系统权限分为以下几种类型:
| 权限类型 | 说明 |
|---|---|
| 页面 | 用户是否有访问该页面的权限 |
| 数据操作 | 用户是否有执行该实体的新增/编辑/删除数据的权限。如新增一条数据,在执行新增动作前会校验是否有新增操 作的权限 |
| 接口 | 用户是否有请求某个接口 API 的权限 |
| 功能按钮 | 页面中的每个功能按钮都可以进行授权 |
字段权限
控制字段的读写权限:
| 权限 | 说明 |
|---|---|
| 可编辑 | 字段可查看和编辑 |
| 只读 | 字段可查看但不可编辑 |
| 隐藏 | 字段不可见 |
数据权限(MOU)
身份提供配置数据权限的功能。数据权限提供了 MOU(管理单元)的数据过滤逻辑,MOU 指用户是否拥有对该条数据访问的权限。
数据所属组织
每条业务数据都提供了所属组织字段【Organization】,该字段会在数据写入时进行赋值,默认赋值为当前操作用户所在部门的 ID。
数据访问规则
用户所拥有权限的数据范围为用户所拥有的身份的数据权限勾选的组织与业务数据的所属组织字段匹配的数据。
示例:
身 份"入职管理员"拥有"财务部"和"开发部"的数据权限,那么拥有"入职管理员"身份的人可以访问【数据所属组织】字段等于"财务部"和"开发部"的数据,其他数据无权限访问,在查询时会进行 MOU 过滤。
默认可访问数据
用户默认可以访问的数据包括:
| 数据来源 | 说明 |
|---|---|
| 用户所在组织 | 用户直接所属的组织数据 |
| 下级组织数据 | 用户所在组织的所有下级组织数据 |
| 负责人组织数据 | 用户作为组织负责人的组织及下级组织数据 |
| 身份配置的 MOU 组织 | 用户拥有身份配置的 MOU 组织数据 |
计算公式:
默认可访问数据 = 用户所在组织 + 用户所在组织的所有下级组织 + 用户作为组织负责人的组织及下级组织 + 用户拥有身份配置的 MOU 组织
MOU 的应用与定制
MOU 开关
MOU 数据权限默认需要在对象设置中进行开启,未开启的对象不会应用任何数据权限过滤。
MOU 权限优先级
MOU 权限优先级从高到低:
| 优先级 | 设置方式 | 说明 |
|---|---|---|
| 1(最高) | 手动脚本设置 | 通过脚本组件手动设置 MOU 过滤规则 |
| 2 | MOU 数据权限组件设置 | 通过 MOU 数据权限组件自定义执行方式 |
| 3(最低) | 对象设置中直接配置 | 在对象设置中开启 MOU |
定制能力
- MOU 数据权限组件:帮助开发人员决定是否在当前业务中开启或关闭 MOU 数据权限功能,并且可以自定义 MOU 的执行方式
- 手动设置 MOU 过滤规则:如果需要在某个接口中扩展特殊的权限控制,可以通过脚本组件覆盖默认的权限
MOU 数据权限组件的优先级高于对象设置,手动设置的 MOU 过滤规则优先级高于 MOU 数据权限组件。
最佳实践
身份设计
- 根据岗位职责定义身份
- 遵循最小权限原则
- 定期审计身份权限
数据权限配置
- 合理配置身份的 MOU 数据权限
- 根据业务需要在对象级别开启 MOU
- 特殊场景使用脚本自定义 MOU 规则