用户与身份体系
Aras Innovator 的权限体系建立在 User(用户) 与 Identity(身份) 两层模型之上。User 负责登录凭证管理,Identity 负责承载权限策略。两者配合实现了灵活的访问控制、表单个性化、工作流分配等核心能力。
用户(User)
每一个需要登录 Innovator 的人员都需要创建对应的 User 记录,其核心字段如下:
| 字段 | 说明 |
|---|---|
| Login Name | 登录名,系统内必须唯一,区分大小写 |
| Password | 密码,数据库中存储的是 MD5 加密后的值 |
| Logon Enabled | 启用开关。员工离职时建议取消勾选而非直接删除,以保留历史操作记录 |
| Default Vault | 默认保险库,用户签入文件时使用 |
| Starting Page | 登录后默认展示的页面,用户可在界面中手动覆盖此设置 |
| Manager | 该用户的上级,仅用于信息展示,不直接关联功能逻辑 |
不要直接删除已活跃过的 User
Aras 会保留每个用户的创建/修改历史记录以及工作流完成记录。直接删除可能导致这些记录失去归属。正确的做法是取消 Logon Enabled。
创建新 User 时,系统会自动在后台生成一个 Alias Identity(别名身份),这个身份在后续权限分配中会用到。
身份(Identity)
Identity 是 Innovator 权限模型的核心,用来表达"谁能看到什么、能做什么"。Identity 可以代表一个人、一个部门、一个角色,甚至是一个团队。
Alias Identity(别名身份)
每个 User 都有一个一对一的 Alias Identity,Is Alias 属性被设为 true。这个身份通常不包含其他成员,纯粹代表个人本身。
Group Identity(组身份)
组身份用来表达组织架构(如 Engineering、Manufacturing)或角色(如 Administrators、All Employees)。成员通过 Identity 的 Member 关系标签页添加,支持多层嵌套:
All Employees
├── Engineering
│ ├── Peter Smith (Alias)
│ └── Susan Harris (Alias)
└── Manufacturing
└── John Young (Alias)组身份的权限采用累积继承:一个用户同时属于多个组身份时,其有效权限是所有组身份权限的并集。
系统内置身份
| 身份 | 说明 |
|---|---|
| World | 所有用户都属于此身份,无法移除,用于定义全局基础权限 |
| Administrators | 系统管理员组,拥有大部分管理权限 |
| Creator | 动态身份,代表创建当前记录的用户,对应 created_by_id 字段 |
| Owner | 动态身份,对应 owned_by_id 字段,可在表单上由用户选择 |
| Manager | 动态身份,对应 managed_by_id 字段 |
| root(Super User) | 超级用户,绕过所有权限限制,仅用于特殊维护场景,日常操作不应使用 |
权限分配的最佳实践
尽量基于 Group Identity(而非 Alias Identity)来配置权限。当人员变动时,只需要调整组成员关系,而不需要逐一修改权限配置。
身份体系与权限、工作流的关系
Identity 贯穿了 Innovator 的多个核心机制:
| 机制 | Identity 的作用 |
|---|---|
| ItemType 权限 | 每个 ItemType 通过 Permissions 关系标签页,指定各 Identity 对该类数据的 Get / Update / Delete 等权限 |
| TOC 访问控制 | TOC Editor 中每个按钮的 Access 字段控制该菜单项对哪个 Identity 可见 |
| Can Add | 直接在 ItemType 上设置哪些 Identity 有权创建该 ItemType 的新记录 |
| 工作流分配 | Workflow Activity 的 Assignment 关系指定由哪些 Identity 来执行审批或任务 |
| Lifecycle 促进 | Lifecycle Transition 的 Role 字段指定哪些 Identity 有权执行状态推进 |
Team(团队)
Team 是对 Identity 的进一步封装,用于实现更细粒度的动态权限控制。
一个 Team 包含若干成员,每个成员被分配一个 Team Role(如 Team Manager、Team Member、Team Guest)。在 Permission 中使用 Team Role 来赋权,最终的权限执行者由 Item 上 team_id 字段的运行时取值动态决定。
典型场景:同一类数据的不同项目,由不同的人负责审批。通过 Team,可以在不创建多套权限规则的前提下实现差异化访问控制。
| Team Role | 典型权限 |
|---|---|
| Team Manager | 可编辑、可删除、可推进 Lifecycle |
| Team Member | 可编辑、可查看,不可删除 |
| Team Guest | 只读 |
| Team(未分配角色) | 遵循默认权限配置 |
使用 Team 需要表单支持
要让用户在运行时选择 Team,需要将 team_id 属性对应的字段(Item 类型)放到 ItemType 的 Form 上。
密码策略
Aras 支持在 Identity 层级配置密码策略。当策略应用到某个 Group Identity(如 All Employees)时,会级联应用到其所有成员。
| 策略字段 | 说明 |
|---|---|
| Maximum Password Age | 密码最长有效期(天),到期后强制修改 |
| Password History Length | 密码历史记录数量,防止用户重复使用最近几次的密码 |
系统变量(通过 Administration > Variables 管理):
| 变量名 | 说明 |
|---|---|
User_pwd_symbols_min_number | 密码最少字符数,-1 表示不限制 |
User_pwd_digits_min_number | 密码中最少数字个数 |
AccountLockoutThreshold_triesNum | 连续登录失败次数上限,超过则锁定账户 |
AccountLockoutDuration_minutes | 账户锁定持续时间(分钟) |
锁定策略需要两个变量同时配置
AccountLockoutThreshold_triesNum 和 AccountLockoutDuration_minutes 必须同时设置才能生效,否则锁定逻辑不会触发。
