Skip to Content
Organizations角色及权限范围

角色及权限范围

OpenFactory存储组织、单位和团队中的独立角色 水平。角色名称描述了一个范围;这不是一个普遍的许可 自动应用于每个 API 或产品功能。

范围模型

organization membership: owner | admin | member └── unit membership: unit_admin | base_creator | base_approver | member └── team membership: team_lead | variant_creator | variant_deployer | variant_user

组织成员资格是外部边界。用户必须是组织 管理员可以将他们添加到其单位或团队之一之前。 每个级别的会员资格都经过独立检查;不要推断一个单位或团队 来自另一个上下文中显示的组织角色的角色。

组织角色

当前的组织管理 API 强制执行这些权限:

运营业主管理员会员
查看组织、成员、组、单位和团队是的是的是的
编辑组织名称或描述是的是的没有
创建、编辑或删除群组并管理群组成员是的是的没有
邀请或删除普通会员是的是的没有
更改普通成员/管理员角色是的是的没有
邀请或提升业主是的没有没有
更改或删除现有所有者是的没有没有
创建或删除单位是的是的没有
删除组织是的没有没有
离开组织是的,除非唯一的所有者是的是的

一个组织可以有多个所有者。 API 防止唯一所有者 直到存在其他所有者或组织被删除为止。那里 此 API 中没有单独的“转让所有权”操作;一个所有者改变了另一个所有者 成员的角色为 owner,然后可以按预期更改或删除先前的所有者。

单位角色

组织所有者和管理员可以管理每个单位。在一个单位内, 当前的组织管理 API 授予 unit_admin 以下功能 行政运作:

  • 编辑单位;
  • 添加、删除和更改单位成员角色;
  • 创建、编辑和删除该单元中的团队;
  • 添加和管理该单位的团队成员。

只有组织所有者或管理员才能删除单位本身。

base_creatorbase_approver 和单元 member 是存储的角色标签 基础映像工作流程策略。组织 CRUD 路由本身并不 证明其他地方的每个创建、批准或部署操作都会强制执行这些操作 标签。验证特定构建或批准的授权行为 工作流程,然后再依赖它作为控件。

团队角色

组织所有者/管理员和上级单位的 unit_admin 可以管理团队 会员资格。 team_lead 可以:

  • 编辑团队的名称或描述;
  • 添加和删除团队成员;
  • 改变团队成员的角色。

team_lead 无法通过当前组织 API 删除团队; 该操作是为组织所有者/管理员或家长保留的 unit_admin

variant_creatorvariant_deployervariant_user 表示预期的 变体工作流程职责。它们不应被视为证明每个 变体端点强制执行完整的创建/编辑/部署矩阵。测试准确 已部署版本中的工作流程和拒绝路径。

组不同

组是组织级别的共享集合,而不是另一个角色层次结构。 所有者和管理员创建群组并管理群组成员资格;所有组织 成员可以列出群组及其成员。团体成员身份并不意味着 用户转变为组织管理员、单位管理员或团队领导。

安全地改变角色

  1. 确认目标组织、单位或团队。
  2. 记录用户当前在所有三个范围的有效会员资格。
  3. 应用一项角色变更。
  4. 使用该用户自己的操作测试允许的操作和拒绝的操作 会议。
  5. 检查缓存的 UI 状态和现有会话是否反映了更改。
  6. 如果您的策略需要的话,请在角色标签之外保留审核记录。

在没有拒绝路径测试的情况下更改标签并不足以证明 强制执行最小特权。

常见的边缘情况

  • 管理员无法将任何人提升为所有者或更改现有所有者的角色。
  • 用户无法添加到某个单位或团队,除非他们属于该单位或团队 组织。
  • 单位和团队成员可以自行撤离;组织成员资格仍然存在 除非单独移除。
  • 删除组织成员资格时应检查陈旧的单位、团队、 版本中的分组、共享和会话效果。
  • UI 徽章颜色用于展示,而不是安全控制。永远依靠 服务器端授权和拒绝路径测试。