使用 AWS WAF 保护 Amazon Bedrock AgentCore 运行时

这篇文章向您展示了解决此问题的两种架构模式。两者都使用面向互联网的 ALB 和 AWS WAF,并通过 VPC 接口终端节点将流量路由到 AgentCore 运行时。模式 1 在 ALB 和 VPC 终端节点之间放置一个 AWS Lambda 代理,让您可以完全控制请求转换。模式 2 直接从 ALB 定位 VPC 终端节点 ENI IP 地址,完全删除 Lambda 跃点。您还将了解如何使用资源策略关闭直接访问后门,以便流量仅流经 AWS WAF。这两种模式均已通过 SigV4 和 OAuth (Amazon Cognito JWT) 身份验证进行了端到端测试。

来源:亚马逊云科技 _机器学习

当您使用 Amazon Bedrock AgentCore 作为生产 API 终端节点部署生成式 AI 代理时,您可能希望通过 AWS WAF 实施 Web 应用程序防火墙策略、速率限制、针对常见 Web 威胁的防护或审核控制。

AWS WAF 与 Elastic Load Balancing 应用程序负载均衡器 (ALB)、Amazon CloudFront 分配和 Amazon API Gateway REST API 集成。 Amazon CloudFront 专为缓存和内容交付而设计。由于代理调用是实时且动态的,因此缓存不适用。 Amazon API Gateway 添加了自己的身份验证和请求转换层,这可能会因 AgentCore 中的内置 SigV4 和 OAuth 处理而产生双重身份验证问题。这使得面向互联网的 ALB 作为集成点:它透明地传递标头,支持 ​​VPC 内部路由,并直接附加到 AWS WAF WebACL。从那里,您可以通过 Bedrock AgentCore 数据平面服务的 VPC 接口终端节点将流量路由到 AgentCore。

这是挑战出现的地方。 ALB 需要运行状况检查来验证后端目标是否响应。但 AgentCore Runtime 需要对 API 调用(包括运行状况检查请求)进行身份验证、SigV4 或 OAuth。标准 ALB 运行状况检查会发送未经身份验证的请求,因此它们会立即失败。您需要一种方法,使运行状况检查无需凭据即可工作,同时仍将经过身份验证的生产流量传递到 AgentCore。

架构概述

这两种模式具有共同的基础。客户端应用程序向面向互联网的 ALB 发送经过身份验证的请求(SigV4 签名或 OAuth 承载令牌)。 AWS WAF 在 ALB 将请求转发到 HTTPS 端口 443 上的 VPC 终端节点 ENI 之前检查请求。AgentCore 验证身份验证并将请求路由到其内部端口 8080 上的运行时容器。模式之间的差异在于 ALB 和 VPC 终端节点之间的差异。

该架构有四个组件:

先决条件