给Agent做数据分类分级时怎么让规则真正生效

Agent 分类分级配置的核心不是把数据打上标签就结束,而是让每个 Agent 在发起读取或调用前,能明确知道自己被允许接触哪一级数据,以及越级时该拒绝还是走审批。
如果只做分类不做分级执行,标签就只是注释。

下面按数据级别定义、Agent 授权级别、越级处理逻辑三个层面,给出一份可以放进配置文件的写法,并说明如何验证配置真的生效。

先把数据级别和 Agent 级别分开定义

分类分级最常见的错误是把“数据有多敏感”和“Agent 能干什么”混在同一张表里。
建议拆成两个独立清单:

  • 数据级别:描述数据本身的敏感程度,例如 public、internal、confidential、restricted。
  • Agent 级别:描述 Agent 被授予的访问能力,例如 L1 只能读公开数据,L2 可读内部数据,L3 可读机密数据但需审批,L4 才允许接触受限数据。

这样拆分后,规则可以写成“级别为 L2 的 Agent 默认只能访问 internal 及以下数据”,而不是把判断散落在各个工具函数里。

一个可用的配置片段如下,放在 Agent 启动时加载的 YAML 文件中:

agent_policy:
  agent_id: support-bot-01
  agent_level: L2
  data_access:
    allowed_levels:
      - public
      - internal
    denied_levels:
      - confidential
      - restricted
  escalation:
    require_approval: true
    approval_channel: security-review

这份配置只做两件事:声明 Agent 级别,并明确允许和拒绝的数据级别。
审批通道用于越级时转人工,不在 Agent 内部自动放行。

在调用入口强制执行分级判断

配置文件写得再清楚,如果工具调用不读它,分级就不会生效。
执行点应该放在 Agent 调用数据工具的统一入口,而不是每个工具自己判断。

以 Python 为例,可以在工具分发层加一道检查:

DATA_LEVEL_ORDER = {"public": 0, "internal": 1, "confidential": 2, "restricted": 3}
AGENT_MAX_LEVEL = {"L1": 0, "L2": 1, "L3": 2, "L4": 3}

def check_access(agent_level: str, data_level: str) -> bool:
    return DATA_LEVEL_ORDER[data_level] <= AGENT_MAX_LEVEL[agent_level]

调用工具前,先根据资源元数据拿到 data_level,再和当前 Agent 的 agent_level 比较。
不满足条件时直接返回拒绝结果,并把拒绝原因记录到审计日志。

这里的关键是资源元数据必须可信。
如果数据级别由调用方自己传入,Agent 就可以把 confidential 谎报成 public。
级别应来自数据目录、数据库字段或统一的元数据服务,不能由请求参数决定。

越级请求不要静默降级

很多实现遇到越级请求时会悄悄返回空结果或低级别数据,看起来没有报错,实际上会让调用方误以为数据不存在。
更稳妥的做法是明确拒绝,并区分两种场景:

  • 完全越权:Agent 级别低于数据级别且没有审批通道,直接返回拒绝,不重试。
  • 可审批越级:配置中开启了审批,返回“待审批”状态,由人工确认后再放行,Agent 不自动轮询等待。

拒绝结果里建议只包含状态和原因码,不要把受限数据的字段名、表名或路径带出来,避免通过错误信息泄露结构。

上线前用三类用例验证配置

配置写完后,至少用下面三类用例检查一遍,确认分级真的在拦截:

  1. 同级访问:L2 Agent 读取 internal 数据,应成功返回。
  2. 越级访问:L2 Agent 读取 confidential 数据,应返回拒绝,且日志中有对应记录。
  3. 伪造级别:在请求参数中手动传入 data_level=public 尝试读取 confidential 资源,应仍然被拒绝,证明级别来自元数据而非请求参数。

验证时同时查看审计日志,确认每次拒绝都记录了 Agent ID、目标资源、请求级别和实际级别。
没有日志的分级配置很难在事后排查越权行为。

常见误区:分级不是给 Agent 贴标签

一个常见误解是给每个 Agent 分配一个级别后就认为配置完成。
实际上 Agent 可能同时调用多个工具,每个工具背后的数据级别不同,必须逐次判断。
另一个误区是把分级规则写进提示词让模型自己遵守,这只能作为辅助提醒,不能替代入口处的强制检查。

如果 Agent 会动态加载新工具,还要在工具注册时要求声明数据级别,未声明级别的工具默认按最高敏感级别处理,避免新工具绕过已有规则。

分类分级配置的价值在于把“能不能访问”变成可执行、可审计的判断。
先定级别,再在入口强制执行,最后用越级用例验证,三步做完,分级才算真正落地。

分享到:
上一篇
Agent权限三分配置:用文件、工具、网络三层限制住执行范围
下一篇
Agent回归测试怎么配置:固定用例、基线结果和失败判定
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意