隐式信任的终结:为 LlamaIndex 代理引入加密身份
Source: Dev.to
在生产环境——尤其是金融、医疗或企业数据领域——让 LLM 盲目接受来自其他代理的上下文是一种安全漏洞。 “隐式信任”(即代理 A 因为与代理 B 共享运行时而假设其友好)已经不再足够。
今天我们宣布 Agent Mesh 集成 (llama-index-agent-agentmesh)。这是一项对代理栈的根本加固,将“实验性群体”转向受治理、基于身份的网格。
核心转变:身份 vs. 凭证
大多数代理框架将身份视为静态字符串。我们采用不同的方式,将 你是谁 与 你的行动权利 分离。
- 持久身份 –
CMVKIdentity充当代理的永久、加密“灵魂”。它不会改变。 - 短暂凭证 – 底层 Agent Mesh 核心管理生命周期。虽然身份是静态的,但用于签署请求的凭证默认有严格的 15 分钟 TTL(生存时间)。
这意味着即使代理的密钥在理论上被泄露,也会在几分钟内失效。系统会自动进行零停机时间的轮换——这曾是高端微服务的专属功能,现在也可用于 AI 代理。
协议:先验证,再信任
该集成使用 TrustedAgentWorker 和 TrustGatedQueryEngine 强制执行 “先验证,再信任” 工作流。
- 握手 – 在任何数据交换之前,代理会进行加密握手。
TrustHandshake协议会根据AgentRegistry(我们可信 DID 的“黄页”)验证对等方的签名。 - 赞助者责任 – 每一次操作都通过委托链追溯到
sponsor_email。你可能还不知道是哪位用户触发了代理,但你始终会知道是谁部署了它以及谁对其行为负责。
工作原理
代码保持简洁,但安全姿态严格改变。下面是将标准查询引擎包装在信任层中的示例:
from llama_index.agent.agentmesh import (
CMVKIdentity,
TrustedAgentWorker,
TrustGatedQueryEngine,
)
# 1. Generate a verifiable identity
# The integration handles the persistent identity;
# the mesh core manages the 15‑min credential rotation.
identity = CMVKIdentity.generate('research-agent', capabilities=['search'])
# 2. Create an agent that requires this identity
worker = TrustedAgentWorker.from_tools(
tools=[search_tool],
llm=llm,
identity=identity,
)
# 3. Gate your data access
# The engine will now REJECT queries from agents without
# valid, unexpired credentials.
trusted_engine = TrustGatedQueryEngine(
query_engine=base_engine,
identity=identity,
)
接下来:通往 OBO 的道路
虽然此版本解决了代理间的信任和赞助者责任,但我们已经在展望未来。当前架构保障了管道安全,下一步的前沿是 On‑Behalf‑Of (OBO) 流程——将最终用户的上下文通过网格传递,以实现细粒度、按用户的访问控制。
目前,此集成确保你的代理不再是暗中运行的匿名脚本。它们是可验证、可追责的服务,已准备好投入生产。
查看 Pull Request #20644 中的代码。