
# 权限管理概述
权限管理功能是系统安全的重要基础保障，作为数字化变革和数据管理优秀实践开发的创新型工业软件开发与运营平台，工业数字模型驱动引擎-数据建模引擎（xDM Foundation，简称xDM-F）提供了基于数据对象和操作的授权/鉴权功能服务、上下文（文件夹）、群组/团队/团队角色/全局角色等多维度权限配置功能，帮助您构建完善安全的权限系统，保障数据安全。
 #### 参与者
参与者一般指的是在系统之外与系统交互的某人或某角色，在xDM-F中，参与者指的是对服务编排、搜索服务定义、"权限管理"功能的数据模型与其数据实例等操作的某人或某角色。xDM-F当前提供如[表1]所示的参与者类型。
 表1参与者类型 
| 类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|
| 团队角色 | 指一个人在团队中某一职位上应该承担的责任，例如某业务团队的业务经理、业务组长、业务人员和业务代表。 - 一个团队可以引用多个团队角色，一个团队角色可以被多个团队引用。  - 只有被引用的团队角色才可以在团队中为该团队角色添加角色成员。                                                                                                                                                                    |
| 群组   | 指将用户按照子公司、部门、项目等维度划分为不同的群组，使群组下的全部用户获得相应的权限，方便统一权限管理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 全局角色 | 指用于管理xDM-F全局功能的操作权限或者某个子模块最高权限的角色，例如超级管理员、系统管理员、安全管理员、质量管理员、数据源管理员等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 虚拟角色 | xDM-F在团队角色中预置了所有人、拥有者和团队成员三种虚拟角色。 - 所有人：指应用下的所有用户，即"XDMUser"数据实体的所有数据实例。  - 拥有者：指数据实例的所有者，即创建某个数据实例时指定的所有者。  - 团队成员：指某个团队下的某个用户。例如某医院的护士团队、急诊医生团队、外科医生团队等，每个团队中均存在临时员工。此时，您可以通过该虚拟角色动态授权/鉴权。   |
| 用户   | 指应用下的个体成员，即"XDMUser"数据实体创建的数据实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
#### 操作类型
不同的角色有不同的操作权限，对每个用户分配最小够用的操作权限，可以极大地防止各种越权操作，从而有效减少由于操作不当带来的故障和安全问题。
xDM-F的操作类型提供了应用内的具体操作，内置七种操作类型：创建、管理、修订、下载、查询、修改和删除。如果内置的操作类型满足不了您实际的业务场景，您也可以自定义添加。更多关于操作类型的操作请参见[操作类型](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0197.html)。
#### 授权
为了保证各类数据的安全性，满足用户自定义开发数据对象或功能授权的需求，xDM-F提供基于数据对象和操作的授权功能。您可以通过授权功能将参与者、服务编排/搜索服务定义/具有"权限管理"功能的数据模型及操作类型进行关联，并将这组关系配置到策略集，提升模型维护效率，方便用户维护系统权限、数据流转等操作。
根据授权维度的不同，xDM-F的授权分为静态授权和动态授权。
表2授权类型 
| 类型   | 说明                                                                                                                                                                                                                                    |
|:---|:---|
| 静态授权 | 即实体授权，是对服务编排/搜索服务定义/具有"权限管理"功能的数据模型的权限处理，基于数据模型维度所设置的权限，将影响至此数据模型所有的数据实例。 更多关于实体授权的操作请参见[授权](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0203.html)。                   |
| 动态授权 | 即实例授权，是对具有"权限管理"功能的数据实例的精细化权限处理，可以为参与者基于某一个确定的数据实例进行权限设置，常见于工作流审批等需要临时为参与者设置数据权限等场景。 更多关于实例授权的操作请参见[管理数据实例授权](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0028.html)。 |
   
 #### 权限规则
权限规则是您自定义的属性访问控制规则，用于控制参与者对具有"权限管理"功能的数据模型的属性级操作，可以实现对应用数据更细粒化的访问控制和安全防护。
单条自定义的权限规则由如下信息构成：
- **属性** ：如果数据模型需要进行属性级的权限管理，必须选择属性。您可以在创建数据模型时配置权限操作，或者直接编辑已有的数据模型进行配置。更多操作请参见[创建数据实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0007.html)、[创建关系实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0259.html)、[修改数据实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0011.html)和[修改关系实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0015.html)。
- **运算符** ：用于属性的运算，不同类型的属性所支持的运算符不同。xDM-F支持的运算符如下：
  表3支持的运算符 
  | 运算符           | 说明                             | 支持属性类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|:---|
  | startsWith    | 以"属性"的"值"开头。                   | - 文本  - 参考对象                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | notStartsWith | 不以"属性"的"值"开头。                  | - 文本  - 参考对象                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | endsWith      | 以"属性"的"值"结尾。                   | 文本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | notEndsWith   | 不以"属性"的"值"结尾。                  | 文本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | like          | 如果"属性"匹配值，返回true，否则返回false。    | 文本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | notLike       | 如果"属性"不匹配"值"，返回true，否则返回false。 | 文本                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | in            | 如果"属性"在"值"中，返回true，否则返回false。  | - 文本  - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）  - 参考对象  - 日期  - 枚举  - 人员  - URL   |
  | ==            | "属性"等于"值"，返回true，否则返回false。    | - 文本  - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）  - 参考对象  - 日期  - 枚举  - 人员  - URL        |
  | !=            | "属性"不等于"值"，返回true，否则返回false。   | - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）  - 参考对象  - 日期  - 枚举  - 分类  - 人员  - URL                    |
  | \>            | "属性"大于"值"，返回true，否则返回false。    | - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | \>=           | "属性"大于等于"值"，返回true，否则返回false。  | - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | \<            | "属性"小于"值"，返回true，否则返回false。    | - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | \<=           | "属性"小于等于"值"，返回true，否则返回false。  | - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | isNull        | "属性"为NULL，返回true，否则返回false。    | - 文本  - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）  - 日期  - 枚举  - 分类  - 人员  - URL                 |
  | isNotNull     | "属性"不为NULL，返回true，否则返回false。   | - 文本  - 整型  - 长整型  - 浮点型  - 浮点型（自定义精度）  - 日期  - 枚举  - 分类  - 人员  - URL                            |
  | is            | 如果"属性"匹配"值"，返回true，否则返回false。  | 布尔值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     
  
- **值** ：设置该权限规则要匹配的属性值。配置示例如下：
  - 示例1："属性"为"creator"，"运算符"为"isNotNull"，表示当创建者不为空时，则符合该规则。
  
  - 示例2："属性"为"tenant.id"，"运算符"为"=="，"值"为"-1"，表示当租户ID等于"-1"时，则符合该规则。
   
- **显示值** ：根据"属性"选择的"id"，返回对应属性映射的实例值。您可以在创建数据模型时的"权限操作"进行设置，或者直接编辑已有的数据模型进行配置。更多操作请参见[创建数据实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0007.html)、[创建关系实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0259.html)、[修改数据实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0011.html)和[修改关系实体](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0015.html)。
 
#### 策略集
策略集是一个容器，是您创建的参与者、数据模型、权限规则和操作类型相互关联的权限策略集合。当应用进行鉴权时，系统将在您指定的策略集中寻找权限策略，来确定参与者是否具有相应权限。更多关于策略集的操作请参见[策略集](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0209.html)。
此外，文件夹具有策略集继承的功能，子文件夹的策略集可以继承父文件夹的策略集，也可以自定义。更多关于文件夹的操作请参见[文件夹](https://support.huaweicloud.com/usermanual-idme/idme_clientog_0044.html)。
#### 约束与限制
- 同一应用运行态同一逻辑租户下，最多可创建5000个团队角色、5000个群组和5000个全局角色。
- 长文本、文件和JSON类型的属性不支持设置权限规则。
- 显示值仅适用于"参考对象"类型的属性。
- xDM-F内置的"adhoc"和"function"策略集不允许编辑、删除或添加子策略集。
 
