跳转到主要内容
接通飞书后(如何连接智能体到飞书群组),默认情况下群里任何人都可以问数。如果你需要按部门、按身份控制谁能看到哪些数据,就要用到 AskTable 的「白名单 + 角色」机制。

权限模型概述

AskTable 把飞书用户和数据权限的关系拆成三层:
  • 人员(Person) —— AskTable 内部的用户档案,可以一人对应多个外部渠道身份(飞书、未来的钉钉等)
  • 渠道绑定(Channel Binding) —— 把飞书的 user_id 关联到一个 Person
  • 角色(Role) —— 一组策略的打包,决定能看哪些数据范围
  • 策略(Policy) —— 实际的访问规则,包括允许/拒绝、字段级、行级过滤
每个数据智能体上有一个 白名单 开关:
  • 关闭 —— 任何能进群的飞书用户都能问数(适合内部共享数据)
  • 开启 —— 必须先在白名单里,否则消息会被拒绝,同时自动进入「待审批」列表

1. 在飞书开放平台补开通讯录权限

要识别飞书用户身份(拿到 user_id、姓名、邮箱),必须先在飞书后台的 权限管理API 权限 加开下面 3 个权限。这是在 连接飞书 那两个基础权限之上额外要补的:
contact:* 权限属于「申请类」,需要企业管理员单独审批。审批通过前,飞书用户问数会一直被挡在白名单外,AskTable 也拿不到他们的姓名邮箱来建档。
开通后记得回到 版本管理与发布,重新提交一个新版本 并等管理员审批 —— 飞书的权限变更必须随版本发布才会生效。

2. 开启数据智能体的白名单

进入数据智能体详情页,在权限相关区域找到 白名单 开关。开关下方的提示文案会同步切换: 打开开关后,新的飞书用户首次问数会被拒绝,并在 AskTable 这边自动生成一条「待审批」记录。

3. 处理待审批申请

进入 数据访问控制人员,顶部有两个 Tab:
  • 已建档 —— 已经在 AskTable 中有档案的人员
  • 待审批 —— 飞书用户首次问数自动出现在这里
每条待审批记录展示: 操作有三个:
  • 建档/关联 —— 走下一步,把飞书身份和 AskTable 人员档案绑起来
  • 分配权限 —— 已建档但还没分配角色时用
  • 拒绝 —— 永久拒绝这个申请,该用户后续问数会一直被挡

4. 建档:新建人员或关联到已有人员

建档/关联 弹出对话框,先看顶部 飞书账号信息(姓名、user_id、邮箱、手机),然后选两种模式之一:
  • 新建人员档案 —— 创建一个全新的 Person,姓名/邮箱/手机会从飞书自动填好,可以再加备注
  • 关联到已有人员 —— 按姓名/邮箱/手机搜索已有 Person,选中后会自动加上飞书绑定
飞书的 user_id 是自动绑定的,不需要你手填。一个 Person 可以同时绑多个飞书 user_id(比如同一个人在多个企业里)。
建档 完成。这一步只是把「这个飞书用户」和「这个 AskTable 人员」对上号,还没有赋予任何数据权限。

5. 分配角色

建档完成后会接着弹出 为「xxx」分配「yyy 智能体」的权限 对话框,关键字段是 角色: 如果选中的角色定义了 必填变量(比如 dept_iduser_id),对话框会展开 角色变量 字段,你需要给这个人填上对应值。这些值会在用户问数时拼到 SQL 的 WHERE 里,实现行级过滤(RLS)。 举个例子:角色 部门数据 绑定了一条策略「orders 表只能看 dept_id = {{dept_id}} 的行」,那么:
  • 给「张三」分配此角色时,dept_idD001
  • 张三在飞书里问「上月销售额」,生成的 SQL 会自动带上 WHERE dept_id = 'D001'
  • 李四的 dept_idD002,问同一个问题看到的是完全不同的子集
授权 完成。这个人之后在飞书里问数就会按这个角色的规则放行。

6. 创建可复用的角色

如果是第一次配,需要先去 数据访问控制 → 角色 → 新建角色:
  1. 取名,比如「部门数据」「销售经理」「外部访客」
  2. 应用策略 区域 添加策略 —— 没有合适的策略就先去 数据访问控制 → 策略 建一个
  3. 保存
策略(Policy) 才是真正定义「能看哪些库/表/字段、能过滤哪些行」的地方,角色只是把若干策略打包。一个策略包含:
  • 权限方向 —— 允许 / 拒绝
  • 数据源 —— 适用于哪些数据源
  • 字段级规则 —— 按 schema / table / field 三层匹配模式控制可见字段
  • 行级过滤 —— 在指定字段上加 WHERE 条件,支持引用变量
完整策略和角色的使用方式不在本文范围,先建好你需要的角色,再回到第 5 步分配。

7. 常见场景示例

场景 A:全员只读全部数据

最简单的情况,不开白名单,任何人进群都能问。适合企业内部知识共享。

场景 B:按部门隔离

  • 开启白名单
  • 建一个「部门数据」角色,策略带行级过滤 dept_id = {{dept_id}}
  • 每次审批新人时,在「角色变量」里填好这个人的 dept_id

场景 C:外部访客只看部分数据

  • 开启白名单
  • 建一个「访客」角色,绑定一条「仅允许 public schema」的 allow 策略
  • 外部用户首次问数 → 进入待审批 → 你审批时分配「访客」角色
  • 内部员工分配其他更宽松的角色

8. 撤销权限

两种方式:
  • 保留人员,移除单个智能体的访问 —— 进入人员详情页 → 已授权的数据智能体 区域 → 找到对应智能体 → 点 移除
  • 彻底清除 —— 在人员详情页右下角的 危险操作 区域 删除人员。所有渠道绑定和已授权访问会一并清除,该用户在飞书里再问数会重新走「待审批」流程

9. 后续步骤