Skip to content

分类系统

数据分类系统是 Triggerfish 安全模型的基础。每一条进入、流经或离开系统的数据都携带一个分类标签。这些标签决定数据可以流向哪里——更重要的是,不能流向哪里。

分类级别

Triggerfish 为所有部署使用统一的四级有序层次结构。

级别等级描述示例
RESTRICTED4(最高)需要最高保护的最敏感数据并购文件、董事会材料、个人身份信息、银行账户、医疗记录
CONFIDENTIAL3业务敏感或个人敏感信息CRM 数据、财务数据、人事记录、合同、税务记录
INTERNAL2不宜外部共享内部知识库、团队文档、个人笔记、联系人
PUBLIC1(最低)任何人都可以查看营销材料、公开文档、一般网络内容

禁止降级写入规则

Triggerfish 中最重要的安全不变量:

数据只能流向相同或更高分类级别的渠道或接收者。这是一条固定规则——不能被配置、覆盖或禁用。LLM 不能影响此决策。 :::

分类层次:PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED。数据只能向上流动。

这意味着:

  • 包含 CONFIDENTIAL 数据的响应不能发送到 PUBLIC 渠道
  • 被标记为 RESTRICTED 的会话不能输出到低于 RESTRICTED 的任何渠道
  • 没有管理员覆盖、没有企业逃逸通道、没有 LLM 变通方法

有效分类

渠道和接收者都携带分类级别。当数据即将离开系统时,目标的有效分类决定可以发送什么:

EFFECTIVE_CLASSIFICATION = min(channel_classification, recipient_classification)

有效分类是两者中_较低_的那个。这意味着具有高分类渠道但低分类接收者的情况仍被视为低分类。

渠道接收者有效分类能否接收 CONFIDENTIAL 数据?
INTERNALINTERNALINTERNAL否(CONFIDENTIAL > INTERNAL)
INTERNALEXTERNALPUBLIC
CONFIDENTIALINTERNALINTERNAL否(CONFIDENTIAL > INTERNAL)
CONFIDENTIALEXTERNALPUBLIC
RESTRICTEDINTERNALINTERNAL否(CONFIDENTIAL > INTERNAL)

渠道分类规则

每种渠道类型都有确定其分类级别的特定规则。

电子邮件

  • 域名匹配@company.com 的消息被分类为 INTERNAL
  • 管理员配置哪些域名为内部域名
  • 未知或外部域名默认为 EXTERNAL
  • 外部接收者将有效分类降低到 PUBLIC

Slack / Teams

  • 工作区成员身份:同一工作区/租户的成员为 INTERNAL
  • Slack Connect 外部用户被分类为 EXTERNAL
  • 访客用户被分类为 EXTERNAL
  • 分类来自平台 API,而非 LLM 解释

WhatsApp / Telegram / iMessage

  • 企业版:通过与 HR 目录同步匹配的电话号码确定内部与外部
  • 个人版:所有接收者默认为 EXTERNAL
  • 用户可以标记受信任的联系人,但这不改变分类计算——它改变的是接收者分类

WebChat

  • WebChat 访客始终被分类为 PUBLIC(访客永远不会被验证为所有者)
  • WebChat 用于面向公众的交互

CLI

  • CLI 渠道在本地运行,根据已认证用户进行分类
  • 直接终端访问通常为 INTERNAL 或更高

接收者分类来源

企业版

  • 目录同步(Okta、Azure AD、Google Workspace)自动填充接收者分类
  • 所有目录成员被分类为 INTERNAL
  • 外部访客和供应商被分类为 EXTERNAL
  • 管理员可以按联系人或按域名覆盖

个人版

  • 默认:所有接收者为 EXTERNAL
  • 用户通过流程内提示或配套应用重新分类受信任的联系人
  • 重新分类是显式的并有日志记录

渠道状态

每个渠道在承载数据之前都经过一个状态机:

渠道状态机:UNTRUSTED → CLASSIFIED 或 BLOCKED
状态能否接收数据?能否向智能体上下文发送数据?描述
UNTRUSTED新/未知渠道的默认状态。完全隔离。
CLASSIFIED是(在策略范围内)是(带分类标签)已审查并分配了分类级别。
BLOCKED被管理员或用户明确禁止。

安全 新渠道始终处于 UNTRUSTED 状态。它们不能从智能体接收任何数据,也不能向智能体上下文发送数据。渠道保持完全隔离,直到管理员(企业版)或用户(个人版)明确对其进行分类。 :::

分类如何与其他系统交互

分类不是一个独立功能——它驱动整个平台的决策:

系统分类如何被使用
会话 taint访问分类数据会将会话升级到该级别
策略 hookPRE_OUTPUT 将会话 taint 与目标分类进行比较
MCP GatewayMCP 服务器的响应携带分类标签,会影响会话 taint
数据溯源每条溯源记录包含分类级别和原因
通知通知内容受相同分类规则约束
智能体委托被调用智能体的分类上限必须满足调用者的 taint
Plugin 沙箱Plugin SDK 自动对所有发出的数据进行分类