ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

国产Agent合规落地实战:数据安全、信创适配与等保测评

国产Agent合规落地实战:数据安全、信创适配与等保测评

1. 从“能跑通”到“敢上线”:国产Agent落地的真实分水岭

过去大半年,我经手和旁听了不下十个企业级Agent项目的立项与评审,一个很明显的感受是:技术Demo和合规上线之间,隔着一道比想象中深得多的沟。很多团队用开源框架加一个大模型API,两三天就能搭出一个能对话、能查资料、能调工具的Agent原型,演示效果相当漂亮。但一旦进入真实业务环境,尤其是金融、政务、能源、制造这些对数据流向极度敏感的行业,问题就全冒出来了——数据出不出内网、模型权重能不能审计、日志留存够不够六个月、加密算法符不符合国密要求、部署环境是不是在信创目录里。

这些不是“锦上添花”的加分项,而是决定项目能不能过评审、能不能拿到预算、能不能通过等保测评的硬门槛。我见过一个挺可惜的案例:某团队花两个月做了一个智能工单分派Agent,准确率做到92%,结果在安全评审阶段被一票否决,原因是Agent调用外部模型API时,工单里的客户信息会离开企业内网,而他们的数据安全管理办法里明确写了“客户身份信息不得出域”。整个项目推倒重来,换成本地化模型加信创环境部署,又多花了三个月。

所以这篇内容我想聊的,不是“怎么搭一个Agent”这种入门话题,而是国产Agent产品从合规到实战的完整落地路径。核心围绕三条线展开:数据安全怎么设计才经得起查、信创环境怎么适配才不踩坑、Agent架构怎么在受限条件下依然保持可用性。适合正在做企业级Agent选型的技术负责人、需要过等保测评的架构师,以及想把Agent真正推到生产环境的开发同学。如果你还在纠结Agent和LLM的区别、DeepSeek属于哪一类这种基础问题,建议先补一下基础概念再回来看,这篇的密度会比较高。

2. 先把概念理清楚:Agent、LLM、AI模型到底谁是谁

2.1 三层结构:模型是发动机,LLM是其中一种,Agent是整车

很多刚接触的朋友会把这三个词混着用,面试的时候也经常被问到“Agent和LLM有什么区别”。我用一个类比来说清楚:AI模型是最宽泛的概念,任何能完成特定智能任务的数学模型都算,图像识别模型、推荐模型、语音合成模型都是。LLM(大语言模型)是AI模型的一个子集,专门处理自然语言,比如DeepSeek、通义千问、文心一言这些,它们本质上是“下一个词预测器”,输入文本输出文本。而Agent是在LLM基础上加了一套“感知-规划-执行-记忆”的循环机制,让它能调用工具、拆解任务、根据反馈调整行为。

打个比方:LLM是一台性能很好的发动机,但发动机本身不会开车。Agent是把发动机装进车里,再加上方向盘、导航、传感器和行车电脑,让它能自己从A点开到B点。所以常说的DeepSeek,准确讲是一个LLM,它可以作为Agent的“大脑”来用,但DeepSeek本身不是Agent。这个区分在合规场景下特别重要,因为数据安全评审时,评审专家会分别问“模型部署在哪里”和“Agent的调度逻辑在哪里执行”,这两个问题的答案可能完全不同。

2.2 Agent的组成结构:为什么合规视角下每一层都是风险点

一个典型的Agent由这几部分组成:规划模块(把大任务拆成小步骤)、工具调用模块(调API、查数据库、执行代码)、记忆模块(短期对话上下文加长期向量库)、执行循环(根据结果决定下一步)。从合规角度看,每一层都有对应的风险:

Agent组件功能合规风险点常见管控手段
规划模块任务拆解与推理推理过程可能泄露业务逻辑本地化部署推理链,日志脱敏
工具调用连接外部系统调用外部API导致数据出域白名单管控,内网网关代理
记忆模块存储上下文与知识向量库中残留敏感信息加密存储,定期清理,访问审计
执行循环多轮迭代循环次数失控导致资源耗尽设置最大迭代次数与超时

我在实际项目里踩过的一个坑是:Agent的记忆模块用了默认配置的向量数据库,没有开启加密,结果安全扫描时直接被标为高危。后来改成国密SM4加密存储,并且加了字段级访问控制,才通过复审。这个细节在开源框架的文档里通常不会强调,但企业环境里是必查项。

2.3 企业级Agent和消费级Agent的本质差异

消费级Agent追求的是“能力强、响应快、体验好”,企业级Agent追求的是“可控、可审计、可解释”。这三个词听起来虚,但落到具体设计上差别巨大。比如消费级Agent可以自由调用互联网上的各种API,企业级Agent的工具调用必须走白名单,每个工具都要有对应的审批记录和调用日志。再比如消费级Agent的记忆可以无限增长,企业级Agent的记忆必须设置TTL(生存时间)和容量上限,防止敏感信息长期驻留。

我参与过一个政务咨询Agent的项目,他们的要求是:任何一次对话结束后,Agent的短期记忆必须在24小时内自动清除,长期记忆中的个人信息字段必须脱敏后才能入库。这个要求直接影响了架构选型——我们最终没有用框架自带的记忆模块,而是自己实现了一套带脱敏管道的记忆层。所以选型的时候,不要只看框架的功能列表,要拿着合规要求逐条对照。

3. 数据安全不是加个加密就完事:等保2.0视角下的Agent安全设计

3.1 等保2.0里和Agent直接相关的几个控制点

等保2.0的三级要求里,有几个条款和Agent系统直接相关,但很多团队做测评准备时容易漏掉。我整理了一下实际评审中被问得最多的几个点:

环境管理方面,评审会关注Agent运行环境的物理安全、网络分区、访问控制。具体到Agent,就是它的推理服务部署在哪个安全域、和业务系统的网络连通策略是什么、有没有做微隔离。我见过一个项目把Agent服务和大模型推理服务放在同一个子网里,没有做任何隔离,评审时被要求整改,因为一旦Agent被攻破,攻击者可以直接访问模型权重。

资产管理方面,Agent涉及的资产比传统系统多——除了服务器、数据库,还有模型文件、向量库、提示词模板、工具配置。这些都需要纳入资产清单,明确责任人和安全等级。提示词模板尤其容易被忽略,但它其实包含了业务逻辑和可能的敏感信息,应该像代码一样做版本管理和访问控制。

设备维护管理方面,Agent的更新迭代频率通常比传统系统高,每次更新提示词、调整工具配置、更换模型版本,都需要有变更记录和回滚方案。评审专家会问:“你怎么保证更新后的Agent行为没有退化?怎么防止恶意提示词注入?”这些问题需要在设计阶段就有答案。

3.2 数据出域管控:Agent最容易翻车的地方

Agent和普通应用最大的区别是它会“主动”调用外部资源。一个配置不当的Agent可能在用户不知情的情况下,把内部数据发送到外部API。我在排查一个客户问题时发现,他们的Agent在调用某个天气API时,把完整的用户对话上下文作为参数传了出去,而对话里包含了客户的订单信息。这个问题的根因是工具调用的参数没有做过滤,框架默认把整个上下文都传给了工具。

管控数据出域,我的经验是三层防护:第一层是网络层,Agent服务所在的安全域只允许访问白名单内的地址,其他一律拒绝,这个用防火墙策略或服务网格都能实现。第二层是应用层,在工具调用模块加一个参数过滤器,只传递工具真正需要的字段,并且对字段做敏感信息检测。第三层是审计层,所有出域请求都记录完整日志,包括请求时间、目标地址、传输字段、数据量,日志保存至少六个月。

提示:等保测评时,评审专家会实际查看出域日志,如果日志里只有“调用了某API”而没有具体传输内容,通常会被要求补充。建议在日志中记录字段名和脱敏后的值,既满足审计要求又不泄露敏感数据。

3.3 国密算法在Agent系统中的落地位置

国密算法不是“用了就行”,而是要用在对的位置。Agent系统里需要加密的地方主要有四处:传输加密用SM2或SM4,存储加密用SM4,身份认证用SM2签名,完整性校验用SM3。我见过一些项目为了省事,全部用SM4一把梭,结果身份认证环节被评审指出“签名验签应该用非对称算法”。

具体到实操,传输层可以用支持国密套件的网关或负载均衡器,比如在Nginx上编译国密模块,或者用支持国密的应用网关。存储层如果用的是MySQL或PostgreSQL,可以开启国密加密插件,或者在上层应用做字段级加密。向量数据库的加密支持参差不齐,选型时要重点确认,我目前接触过的方案里,Milvus可以通过外挂加密卷实现,但字段级加密需要自己开发。

这里有个实操心得:国密改造不要等到项目后期才做,因为很多开源组件默认用的是国际算法,后期替换涉及大量兼容性测试。最好在技术选型阶段就把“是否支持国密”作为硬性筛选条件,能省掉后面很多返工。

4. 信创环境适配:从目录查询到离线部署的完整链路

4.1 信创目录怎么查、怎么用

信创目录是选型的第一道门槛。很多朋友问“信创目录在哪里查”,目前没有统一的公开查询入口,通常是通过各省的信创适配中心或集成商获取。目录会定期更新,2026年的版本相比之前又扩充了不少品类。查询的时候要注意几个维度:产品品类(CPU、操作系统、数据库、中间件、整机等)、厂商、型号、适配认证状态。

我建议的做法是:先确定你的Agent系统需要哪些基础软件——操作系统、数据库、推理框架、向量库、Web服务器,然后拿着这个清单去目录里逐项匹配。如果某个组件不在目录里,要么找替代品,要么走适配认证流程。适配认证通常需要联系厂商提交测试,周期从几周到几个月不等,项目排期时要把这个时间算进去。

有个容易忽略的点:信创目录里的产品版本更新往往滞后于社区版本。比如某个国产操作系统在目录里认证的是某个LTS版本,但社区已经出了新版本,新版本可能还没完成适配认证。这种情况下,建议锁定目录里的认证版本,不要贸然升级,否则可能影响整体验收。

4.2 离线安装的坑:以telnet为例

信创环境很多是内网隔离的,不能直接访问外网源,离线安装是常态。我拿telnet举个例子,这个看似简单的工具在信创环境里安装经常出问题。首先,不同国产操作系统的包管理器和依赖关系不一样,有的用yum,有的用apt,有的用自研的包管理工具。其次,离线包的依赖链可能很深,缺一个依赖就装不上。

我的标准操作流程是:在一台能联网的同版本环境上,用包管理器的下载功能把telnet及其所有依赖下载到本地目录,然后打包传到目标机器,用本地源的方式安装。具体命令因系统而异,以常见的国产系统为例:

# 在联网机器上下载telnet及依赖(以yum系为例) yumdownloader --resolve --destdir=/tmp/telnet-pkg telnet # 打包传输到目标机器后,创建本地源 createrepo /tmp/telnet-pkg # 配置本地源并安装 yum --disablerepo=* --enablerepo=local install telnet

如果目标系统是apt系,用apt-get download加dpkg -i的方式。这里的关键是依赖完整性检查,装完后用ldd检查二进制文件的动态库依赖是否都满足,缺库的话运行时会报错。

4.3 Agent组件在信创环境下的兼容性实测

我把常见的Agent组件在信创环境下的兼容情况整理了一下,基于我实际测试和同行反馈:

组件类型常见选择信创兼容性注意事项
推理框架vLLM、TGI部分支持需要国产GPU或CPU适配版本
向量库Milvus、Qdrant较好确认CPU架构支持
Web框架Spring Boot、FastAPI好依赖JDK或Python版本匹配
数据库MySQL、PostgreSQL好用国产数据库需改驱动
模型DeepSeek、通义需确认权重格式和推理引擎匹配

实测下来,Python生态的组件在信创环境里适配相对顺利,因为国产操作系统对Python的支持比较成熟。Java生态的组件要注意JDK版本,有些国产JDK对高版本Spring Boot的支持有差异。最麻烦的是涉及GPU加速的组件,如果用的是国产GPU,推理框架可能需要用厂商提供的定制版本,性能和社区版本有差距,这个要在容量规划时考虑进去。

5. Agent核心模块的实战搭建:在受限环境里保持可用

5.1 规划模块:提示词工程在合规约束下的调整

规划模块是Agent的“大脑”,负责把用户请求拆解成可执行的步骤。在合规环境下,提示词设计要额外考虑几点:不能诱导模型输出敏感信息、不能包含未脱敏的业务数据、要有明确的边界声明。我通常会在系统提示词里加一段“安全约束”,明确告诉模型哪些操作不允许做,比如“不得尝试访问未授权的系统”“不得在回复中复现完整的身份证号或手机号”。

但光靠提示词约束是不够的,因为模型可能被绕过。所以规划模块的输出要经过一层规则校验,检查生成的步骤是否在允许的工具列表内、参数是否符合格式要求。这层校验用简单的规则引擎就能实现,成本低但效果好。我做过对比测试,加了规则校验后,违规工具调用的拦截率从70%提升到99%以上。

5.2 工具调用:白名单机制与参数过滤的实现

工具调用是Agent和外部系统交互的通道,也是安全风险最集中的地方。我的实现方案是白名单加参数模板:每个允许调用的工具都要注册,注册时定义好参数模板,包括参数名、类型、是否必填、是否敏感。Agent生成调用请求后,先匹配白名单,再按模板过滤参数,敏感字段做脱敏或拒绝。

# 工具注册与参数过滤的简化示例 TOOL_WHITELIST = { "query_order": { "params": { "order_id": {"type": "string", "required": True, "sensitive": False}, "user_phone": {"type": "string", "required": False, "sensitive": True} }, "allowed": True } } def filter_params(tool_name, raw_params): if tool_name not in TOOL_WHITELIST: raise PermissionError(f"工具 {tool_name} 不在白名单内") template = TOOL_WHITELIST[tool_name]["params"] filtered = {} for key, spec in template.items(): if key in raw_params: if spec["sensitive"]: filtered[key] = mask_sensitive(raw_params[key]) else: filtered[key] = raw_params[key] elif spec["required"]: raise ValueError(f"缺少必填参数 {key}") return filtered

这段代码的核心逻辑是:只传递模板里定义的参数,敏感参数脱敏后再传,未注册的工具直接拒绝。实际部署时,白名单配置应该放在配置中心或数据库里,支持动态更新,避免每次调整都要改代码重新发布。

5.3 记忆模块:向量库的加密存储与生命周期管理

记忆模块的合规要点是加密存储、访问控制、生命周期管理。加密存储前面提过,用SM4对向量和元数据加密。访问控制要做到字段级,不同角色的Agent或用户只能访问自己有权限的记忆片段。生命周期管理包括设置TTL、定期清理、归档策略。

我踩过的一个坑是:向量库的索引文件在删除数据后不会立即释放空间,敏感信息可能残留在磁盘上。解决方案是开启向量库的“安全删除”模式,或者在删除后执行一次压缩操作。另外,备份文件也要纳入管理,很多团队只关注在线数据的安全,忘了备份文件里同样有敏感信息。

注意:等保测评会检查数据删除的彻底性,建议在删除敏感记忆后,用工具验证磁盘上是否还有残留。向量库的删除机制要提前确认,不同产品的行为差异很大。

5.4 执行循环:超时、限流与异常兜底

执行循环是Agent“自己决定下一步”的地方,也是最容易失控的地方。没有约束的Agent可能陷入无限循环,或者被恶意输入诱导执行大量操作。我的做法是设置三重限制:最大迭代次数(通常5到10次)、单次执行超时(30秒到2分钟)、总执行超时(5到10分钟)。超过任一限制就强制终止,返回兜底回复。

异常兜底也很重要。Agent调用工具失败、模型返回格式错误、网络超时这些情况都要有对应的处理逻辑。我的经验是兜底逻辑要简单可靠,不要用另一个Agent来处理异常,那样会引入新的不确定性。直接返回预设的提示信息,引导用户换一种方式提问,或者转人工处理。

6. 多智能体协作与自动化运维场景下的安全边界

6.1 多Agent协作时的数据隔离

多智能体场景下,Agent之间会传递消息和上下文,这带来了新的安全挑战。如果两个Agent分属不同安全等级,它们之间的通信必须做数据过滤。比如一个处理公开信息的Agent和一个处理内部数据的Agent协作时,内部Agent不能把敏感数据直接传给公开Agent。

我的实现方式是在Agent通信层加一个消息代理,所有跨Agent的消息都经过代理,代理根据预设的规则做字段级过滤和脱敏。这个代理同时承担审计职责,记录所有跨Agent通信的内容。这样即使某个Agent被攻破,攻击者也无法通过它获取其他Agent的敏感数据。

6.2 Agent与PLC编程等工业场景的结合注意事项

工业场景对Agent的要求更特殊。我参与过一个和PLC编程结合的Agent项目,Agent需要根据自然语言描述生成PLC控制逻辑。这个场景下,Agent的输出不能直接下发到PLC,必须经过人工确认或形式化验证。因为PLC控制逻辑的错误可能导致物理设备损坏甚至安全事故。

我们的做法是:Agent生成的逻辑先在一个仿真环境里跑一遍,验证通过后再由工程师确认,最后才下发。Agent在这个流程里扮演的是“辅助生成”角色,而不是“自动执行”角色。这个边界在工业场景里必须划清楚,否则合规和安全都过不了。

6.3 自动化运维Agent的权限收敛

用Agent做自动化运维(比如Jenkins流水线管理、服务器巡检)时,权限收敛是关键。Agent不应该拥有超级管理员权限,而应该用一个专用的服务账号,只授予完成特定任务所需的最小权限。比如巡检Agent只需要读权限,部署Agent只需要特定应用的部署权限。

我见过一个反面案例:运维Agent用了管理员账号,结果Agent被提示词注入攻击后,攻击者通过Agent删除了生产数据库。这个教训很深刻,Agent的权限必须比人类操作员更严格,而不是更宽松,因为Agent的行为更难预测和追溯。

7. 上线前的合规自查清单与踩坑复盘

7.1 一份可以直接用的自查清单

在项目上线前,我通常会带着团队过一遍这份清单,每项都要有明确的证据或文档支撑:

  • 数据流向图:画出Agent涉及的所有数据流,标注每个节点的安全域和加密方式
  • 出域清单:列出所有可能出域的数据字段和对应的管控措施
  • 加密算法清单:列出所有加密点及使用的算法,确认符合国密要求
  • 资产清单:包括模型、向量库、提示词、工具配置,每项有责任人和安全等级
  • 日志审计方案:确认日志覆盖所有关键操作,保存期限满足要求
  • 权限矩阵:Agent服务账号的权限列表,确认最小权限原则
  • 变更管理流程:Agent更新、模型更换、提示词调整的审批和回滚流程
  • 应急预案:Agent异常行为的发现、隔离、恢复流程

这份清单不是走形式,每一项在等保测评时都可能被要求提供证明材料。建议在项目早期就建立这些文档,而不是等到测评前突击补。

7.2 几个真实踩坑的复盘

坑一:模型版本升级导致合规失效。有个项目在测评通过后,团队为了提升效果把模型从认证版本升级到了新版本,结果新版本的输出过滤机制有变化,导致一次测试中输出了未脱敏的手机号。后来我们规定,任何模型版本变更都要重新跑一遍安全测试用例,通过后才能上线。

坑二:向量库备份文件泄露。一个团队的向量库做了加密,但备份脚本把数据导出成了明文CSV,备份文件放在了一个权限过宽的共享目录里。安全扫描时被发现,整改花了两周。教训是备份链路也要纳入加密和权限管控,不能只管在线数据。

坑三:工具调用的超时设置不合理。一个Agent调用外部接口时没有设超时,结果接口响应慢导致Agent线程池被占满,整个服务不可用。后来我们给所有工具调用加了超时和熔断机制,单个工具故障不会影响整体。

坑四:提示词模板硬编码在代码里。提示词变更需要重新发布,而且没有版本记录,出了问题无法追溯。后来我们把提示词抽到配置中心,每次变更都有审批和记录,回滚也方便。

7.3 给正在做选型和落地的团队几条实在建议

第一,合规要前置,不要后补。在技术选型阶段就把数据安全、信创适配、等保要求作为筛选条件,能避免后期大量返工。我见过太多团队先做功能再补合规,结果架构要大改。

第二,留出适配和测评的时间。信创适配认证、等保测评、安全测试这些环节的时间往往被低估。我的经验是,这部分时间至少占项目总周期的30%,如果是首次做信创项目,比例还要更高。

第三,建立安全测试用例库。把每次发现的问题和对应的测试用例积累下来,形成回归测试集。Agent系统迭代快,没有回归测试很容易引入新问题。

第四,不要追求一步到位。先做一个最小合规版本上线,跑通流程后再逐步优化效果。很多团队想一次做到完美,结果项目周期拉得太长,反而失去了业务窗口。

第五,和测评机构保持沟通。不同地区的测评机构对条款的理解可能有差异,提前沟通能避免方向性错误。我通常会建议客户在方案设计阶段就请测评机构做一次预评估,成本不高但价值很大。

最后分享一个我在实际项目中体会很深的点:Agent的合规能力本身可以成为产品竞争力。在信创和数据安全要求越来越高的背景下,一个能过等保三级、支持国密、适配信创目录的Agent产品,比一个功能更强但合规有瑕疵的产品更容易拿到企业订单。所以不要把合规当成负担,它其实是企业级市场的入场券。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进