跳到正文
Ankole

主体与权限组

Ankole 把人员、Agent 和系统服务统一表示为主体(Principal)。权限组把多个主体放在一起管理,授权规则则决定一个主体或权限组可以操作哪些资源。

企业员工和组织架构通常由身份源提供商(IdP)自动同步。你不需要逐个创建员工,也不需要在 Ankole 里重复维护部门成员。

身份源如何同步组织架构

在身份源提供商中启用通讯录同步后,Ankole 会把外部目录转换为两类数据:

  • 员工会成为“人员”主体;姓名、头像等资料会随目录同步更新;
  • 部门、用户组等组织单元会成为目录权限组,成员关系也会一起同步。

如果外部目录包含上下级部门,员工加入子部门后,也会成为其上级部门组的成员。因此,把权限授予一个上级部门,就能覆盖其下属部门中的员工。

保存身份源提供商后,Ankole 会启动首次完整同步。之后默认每六小时进行一次完整同步;支持增量同步的身份源还会接收人员和组织变更,不必等待下一次完整同步。

需要立即刷新时,打开 Console → 身份源提供商,选择对应的 Provider,再选择“执行完整同步”。同步完成后,到 访问控制 → 主体访问控制 → 权限组 检查结果。

目录组的来源仍是外部身份系统。请在企业通讯录中修改部门和成员,不要尝试在 Ankole 中手工维护这些组。

如果同步结果缺少人员或部门,先检查外部应用的通讯录权限和可用范围,再重新执行完整同步。接口权限已经开通,并不代表应用能读取整个组织。

首次连接身份源的方法见快速开始

查看主体

打开 Console → 访问控制 → 主体。列表会显示主体的名称、UID、类型和状态:

  • 人员来自身份源提供商同步的企业通讯录;
  • Agent在创建 Agent 时自动出现;
  • 系统由 Ankole 自身创建,用于执行内部服务工作。

选择一个主体,可以查看它所属的权限组和直接授权。排查权限时,应同时检查两处:主体可能没有直接授权,但通过权限组获得了权限。

选择合适的权限组

权限组的来源和成员维护方式不同:

权限组 适合什么情况 谁维护成员
目录组 企业通讯录中已经存在的部门或用户组 身份源提供商自动同步
IM 群组 权限需要跟随聊天群成员 聊天渠道同步
静态组 Ankole 内部临时组队,或成员较少且变化不频繁 管理员手工维护
动态组 可以根据主体属性稳定判断成员 Ankole 按 CEL 表达式实时计算

目录组和 IM 群组会自动出现在权限组列表中,在 Console 中只能查看。静态组和动态组由管理员在 Ankole 中创建。

企业组织架构已经能表达目标团队时,优先直接使用目录组。这样,员工转岗或离职后,权限会随下一次增量或完整目录同步自动调整。

创建静态组

  1. 打开 Console → 访问控制 → 权限组,选择“新增组”。
  2. 填写稳定的小写英文名称、显示名称和说明。
  3. 类型选择“静态”,然后保存。
  4. 打开新建的组,在“成员”区域选择“添加成员”。

成员加入后,会立即获得该组的全部授权;移除后,也会失去这些授权。

创建动态组

动态组不保存成员名单,也不接受手工添加成员。Ankole 会在需要判断权限时,用一条 CEL 表达式检查主体是否属于该组。

创建权限组时选择“动态”,然后在“成员条件”中填写 CEL 表达式。表达式必须返回 truefalse,并通过 principal 读取当前主体。

动态组目前可以使用这些字段:

字段 含义 常见值
principal.uid 主体的稳定 UID research-agent
principal.type 主体类型 humanagentsystem
principal.status 主体状态 activedisabled
principal.displayName 显示名称,可能为空 张三
principal.avatarURL 头像地址,可能为空 Provider 返回的 URL

例如,匹配所有已启用的人员:

principal.type == "human" && principal.status == "active"

匹配 UID 以 research- 开头的 Agent:

principal.type == "agent" && principal.uid.startsWith("research-")

输入表达式时,Console 会自动预览所有匹配的已启用主体。确认人数和名单符合预期后再保存,避免把权限授予过多主体。

保存后,组名称、类型和成员条件都不能修改。如果规则需要变化,请创建一个新组,确认成员预览后迁移授权,再删除旧组。

CEL 当前不能读取员工的邮箱、职位或所属部门。按部门授权时,应直接使用身份源同步的目录组,不要用显示名称猜测组织关系。

添加授权

打开一个权限组或主体,在“权限授权”区域选择“新增授权”,然后填写:

  • 资源模式:权限作用于哪些资源;
  • 动作:允许执行的操作,例如 readupdate
  • 条件:可选的高级限制;留空表示不增加额外条件;
  • 描述:说明为什么需要这项权限。

优先把授权授予权限组。只有某个主体需要例外权限时,才使用直接授权。修改或删除授权会立即影响它的所有者及相关组成员。

按组织架构授权

假设研究部门中的所有员工都需要查看某个 Agent:

  1. 确认身份源已经同步出研究部门及其成员。
  2. 打开对应的目录权限组。
  3. 在该组中新增一条针对目标 Agent 的 read 授权。
  4. 用该部门的一位员工登录,确认他能打开目标 Agent,但不能访问未授权的资源。

以后在企业通讯录中调整研究部门成员即可。Ankole 完成下一次同步后,会更新组成员;挂在组上的授权不需要重复修改。

不要只看 Console 中是否保存成功。用实际成员账号验证一次,才能确认资源范围、动作和成员来源都符合预期。

权限概念和授权规则的完整说明见主体与授权管理