跳转至

企业级 A2A

Agent2Agent (A2A) 协议在设计时就将企业需求作为核心考虑。A2A 不是发明新的专有安全标准和运营标准,而是旨在与现有企业基础设施和广泛采用的最佳实践无缝集成。A2A 将远程 Agent 视为标准的、基于 HTTP 的企业应用程序。通过这种方式,组织可以充分利用其在安全、监控、治理和身份管理等领域已有的投资和专业知识。

A2A 的一个关键原则是 Agent 通常是"不透明的(隔离的)"——它们不会相互共享内部内存、工具或直接资源访问。这种不透明性自然符合标准的客户端/服务器安全范式。

1. 传输层安全(TLS)

确保传输中数据的机密性和完整性是基本要求。

  • HTTPS 强制要求:在生产环境中,所有 A2A 通信必须通过 HTTPS 进行。
  • 现代 TLS 标准:实现应该使用现代 TLS 版本(建议使用 TLS 1.2 或更高版本)和强大的行业标准密码套件,以保护数据免受窃听和篡改。
  • 服务器身份验证:A2A 客户端应该在 TLS 握手期间通过验证其 TLS 证书与受信任的证书颁发机构(CA)来验证 A2A 服务器的身份。这可以防止中间人攻击。

2. 认证

A2A 将认证委托给标准 Web 机制,主要依赖 HTTP 头部。认证要求由 A2A Server 在其 Agent Card 中声明。

  • 无负载身份信息:A2A 协议负载(JSON-RPC 消息)不携带用户或客户端身份信息。身份在传输/HTTP 层建立。
  • Agent Card 声明:A2A Server 的 AgentCard 在其authentication对象中指定所需的认证schemes(例如,"Bearer"、"OAuth2"、"ApiKey"、"Basic")。这些方案名称通常与 OpenAPI 规范中定义的认证方案保持一致。
  • 带外凭证获取:A2A 客户端负责通过 A2A 协议本身之外的过程获取必要的凭证材料(例如,OAuth 2.0 令牌、API 密钥、JWT)。这可能涉及 OAuth 流程(授权码、客户端凭证)、安全密钥分发等。
  • HTTP 头部传输:凭证必须按照所选认证方案的要求在标准 HTTP 头部中传输(例如,Authorization: Bearer <token>、X-API-Key: <key_value>)。
  • 服务器端验证:A2A Server 必须基于 HTTP 头部中提供的凭证及其声明的要求对每个传入请求进行认证。

    • 如果认证失败或缺失,服务器应该使用标准 HTTP 状态码(如 401 Unauthorized403 Forbidden)进行响应。
    • 401 Unauthorized 响应应该包含WWW-Authenticate头部,指示所需的方案,指导客户端如何正确认证。
  • 任务内认证(次要凭证):如果 Agent 在任务执行过程中需要为不同系统提供额外的凭证(例如,代表用户访问特定工具),A2A 建议:

    • a、A2A Server 将 A2A 任务转换到需要输入的状态。
    • b、TaskStatus.message(通常使用 DataPart)应该提供有关次要系统所需认证的详细信息,可能使用类似 AuthenticationInfo 的结构。
    • c、A2A 客户端然后为次要系统非直接的方式获取这些新凭证。这些凭证可能会返回给 A2A Server(如果它正在代理请求)或由客户端直接用于与次要系统交互。

3. 授权

一旦客户端通过认证,A2A Server 就负责对请求进行授权。授权逻辑取决于 Agent 的实现、其处理的数据以及适用的企业策略。

  • 细粒度控制:授权应该基于已认证的身份(可能代表最终用户、客户端应用程序或两者)来应用。
  • 基于技能的授权:可以基于 Agent Card 中声明的每个技能来控制访问。例如,特定的 OAuth 范围可能允许已认证的客户端调用某些技能,但不能调用其他技能。
  • 数据和操作级授权:与后端系统、数据库或工具交互的 Agent 必须在通过这些底层资源执行敏感操作或访问敏感数据之前实施适当的授权。Agent 充当守门人的角色。
  • 最小权限原则:仅授予客户端或用户通过 A2A 接口执行其预期操作所需的必要权限。

4. 数据隐私和机密性

  • 敏感性意识:实现者必须敏锐地意识到 A2A 交互中 Message 和 Artifact 部分交换的数据的敏感性。
  • 合规性:确保符合相关的数据隐私法规(例如,根据领域和数据的不同,可能需要符合 GDPR、CCPA、HIPAA 等)。
  • 数据最小化:避免在 A2A 交换中包含或请求不必要的敏感信息。
  • 安全处理:根据企业数据安全策略和监管要求,保护传输中的数据(通过强制要求的 TLS)和静态数据(如果由 Agent 持久化存储的话)。

5. 追踪、可观察性和监控

A2A 对 HTTP 的依赖使其能够直接与标准的企业追踪、日志记录和监控工具集成。

  • 分布式追踪:

    • A2A 客户端和服务器应该参与分布式追踪系统(例如,OpenTelemetry、Jaeger、Zipkin)。
    • 追踪上下文(追踪 ID、跨度 ID)应该通过标准 HTTP 头部传播(例如,W3C 追踪上下文头部,如 traceparenttracestate)。
    • 这使请求在流经多个 Agent 和底层服务时能够实现端到端的可见性,这对于调试和性能分析非常宝贵。
  • 全面日志记录:在客户端和服务器端实现详细的日志记录。日志应该包含相关标识符,如 taskIdsessionId、关联 ID 和追踪上下文,以促进故障排除和审计。

  • 指标监控:A2A 服务器应该暴露关键操作指标(例如,请求率、错误率、任务处理延迟、资源利用率),以实现性能监控、告警和容量规划。这些可以与 Prometheus 或 Google Cloud Monitoring 等系统集成。

  • 审计:维护重要事件的审计跟踪,如任务创建、关键状态变更和 Agent 执行的操作,特别是涉及敏感数据访问、修改或非常影响操作的事件。

6. API 管理和治理

对于在外部暴露、跨越组织边界或甚至在大型企业内部使用的 A2A Server,强烈建议与 API 管理解决方案集成。这可以提供:

  • 集中式策略执行:一致地应用安全策略(认证、授权)、速率限制和配额。
  • 流量管理:负载均衡、路由和中间件。
  • 分析和报告:深入了解 Agent 的使用情况、性能和趋势。
  • 开发者门户:促进发现支持 A2A 的 Agent,提供文档(包括 Agent Card),并简化客户端开发者的入门流程。

通过遵循这些企业级实践,A2A 实现可以在复杂的组织环境中安全、可靠和可管理地部署,从而建立信任并实现可扩展的 Agent 间协作。