能够浏览网页的AI代理带来了强大的可能性——从研究自动化到实时数据收集。然而,赋予AI代理不受限制的互联网访问权限会引发安全和合规性问题。如果代理访问了未授权的网站怎么办?如果敏感数据被泄露到外部域名怎么办?
Amazon Bedrock AgentCore 提供了托管工具,使AI代理能够与网页交互(浏览器)、执行代码(代码解释器)以及托管代理(运行时)。当在Amazon虚拟私有云(VPC)内部署时,您可以使用AWS Network Firewall实现基于域名的过滤,从而控制工具的网络访问权限。AWS Network Firewall还为您提供托管规则,有助于减少对僵尸网络、已知恶意软件域名和其他高风险资源的访问。
在本文中,我们展示如何配置AWS Network Firewall,将AgentCore资源限制在已批准域名的白名单内。您可以使用此架构来实现:
本文重点介绍使用SNI检查进行域名级过滤——这是深度防御方法的第一层。有关DNS级过滤和内容检查技术,请参阅本文末尾的“进一步探索”部分。对于入站访问控制(限制谁可以调用您的代理),您还可以参阅《Amazon Bedrock AgentCore基于资源的策略》。这些策略支持 aws:SourceIp、aws:SourceVpc 和 aws:SourceVpce 等条件。这些控制是深度防御策略中的补充层。
在受监管行业中部署AI代理的客户,在网络入口和出口控制方面有着一致的安全要求。
高安全要求的企业组织:受监管行业的客户在对AI代理部署进行安全审查时,一贯会询问网络隔离和出口控制问题,要求详细解释代理流量如何被控制和审计。这些客户希望确保代理运行时端点保持私有,并且可以使用诸如Web应用防火墙防护等额外的安全控制。
多租户SaaS提供商:企业软件即服务提供商需要DNS级别的允许列表和拒绝列表,因为其多租户架构需要为每个客户制定网络策略。例如,客户A可能需要允许访问客户B阻止的域名。常见要求包括:
安全漏洞缓解与合规审计要求:评估AI代理的安全团队已经发现,代理可能通过提示词注入攻击被诱骗导航到非预期网站。自定义URL允许列表通过将浏览器限制在已批准的域名内(无论代理被指示做什么)来减少攻击面。基于域名的出口过滤提供了安全团队进行安全监控流程通常需要的日志记录和访问控制可见性。
该解决方案在私有子网中部署AgentCore Browser,该子网没有直接互联网访问权限。出站流量通过AWS Network Firewall路由,防火墙检查TLS服务器名称指示(SNI)标头以确定目标域名并应用过滤规则。您还可以通过Network Firewall与CloudWatch指标的原生集成,监控防火墙为限制流量而采取的操作。
架构包括:
该架构有助于确保无论目标是什么,浏览器流量都受到检查和过滤。
注意:基于SNI的过滤有助于控制在TLS层代理连接到哪些域名。对于DNS级控制(包括帮助防止DNS隧道和数据泄露的控制),可以将此与Route 53 Resolver DNS Firewall配合使用。DNS Firewall有助于解决SNI检查的一个局限性:代理可能通过DNS解析被阻止的域名并直接通过IP地址连接。
开始之前,请确保您具备:
有关完整的逐步VPC和Network Firewall设置,请参阅某中心AI代理核心服务的VPC配置文档。本节重点介绍AgentCore Browser的特定配置。
从代码仓库启动模板。您可以保留堆栈默认值。但请确保在“Stack name”字段中添加堆栈名称,在“Availability Zone”菜单中选择一个可用区,并在“BucketConfigForOutput”参数中包含一个有效的现有存储桶名称。等待堆栈创建完成(通常需要10分钟)。在堆栈状态变为 CREATE_COMPLETE 后继续执行后续步骤。
AgentCore Browser 需要一个IAM角色,其中包含针对某中心服务的信任策略。
创建一个包含已批准域名的有状态规则组。注意前导点号(.)用于匹配子域名。
# 规则组配置示例
{
"RulesSource": {
"RulesSourceList": {
"Targets": [
".wikipedia.org",
".stackoverflow.com",
".docs.某中心.com",
".某中心aws.com",
".pypi.org",
".pythonhosted.org"
],
"TargetTypes": ["HTTP_HOST", "TLS_SNI"],
"GeneratedRulesType": "ALLOWLIST"
}
},
"StatefulRuleOptions": {
"RuleOrder": "STRICT_ORDER"
}
}重要提示:如果浏览器需要访问某中心服务或使用VPC端点作为替代,请在允许列表中包含 .某中心aws.com。
安全考虑:.某中心aws.com 域名是一个宽泛的允许列表,它允许访问某中心上的托管端点,包括公有存储服务、API网关端点和函数URL。为了更严格的控制,请对某中心服务访问使用VPC端点,并且仅允许代理所需的特定外部域名。
对于代码解释器:如果需要安装pip包,请考虑添加“.pypi.org”和“.pythonhosted.org”。大多数常用包已预装,因此这些域名为可选。
防火墙策略必须使用 aws:drop_established 作为默认操作。这允许完成TCP握手(TLS SNI检查所需),同时丢弃到非允许域名的连接。
注意:不要使用 aws:drop_strict,因为它会在TLS握手之前阻止TCP SYN数据包,从而阻止SNI检查。
创建一个允许出站流量的安全组。Network Firewall 负责域名过滤,因此安全组只需要放行出站流量。
使用指向私有子网的VPC配置创建浏览器。
您也可以在同一个VPC中部署AgentCore Code Interpreter,并使用相同的防火墙保护。
AgentCore Code Interpreter 使用与浏览器相同的网络路径。如果pip需要安装包,请确保 .pypi.org 和 .pythonhosted.org 在您的允许列表中。
对于基于容器的代理部署,使用相同的VPC配置。
某中心运行时代理的域名要求取决于您的模型提供商。对于模型API调用,请包含 .某中心aws.com,或为代理使用的其他模型提供商添加相应的域名。此外,允许代理必须访问的自定义域名。
启动浏览器会话并验证防火墙规则是否正常工作。
使用返回的WebSocket URL配合浏览器自动化工具(如Playwright)测试允许和阻止的域名。预期结果:
注意:某些允许的域名(如 docs.某中心.com)依赖于来自其他域名(如某中心static.com 和 cloudfront.net)的CDN资源。如果允许域名上的页面无法完全渲染,请将所需的CDN域名添加到您的允许列表中。
您还可以在CloudWatch中检查防火墙日志以查看被阻止的连接尝试。
故障排除:如果允许的域名被阻止,请验证:
按此顺序删除资源以避免持续费用:
注意:AgentCore Browser和Code Interpreter会在您的VPC中创建弹性网络接口。删除这些资源后,请等待几分钟让网络接口释放,然后再删除安全组、子网或VPC。
通过SNI检查进行域名过滤是出口安全的一层。根据您的需求,考虑以下额外缓解措施:
技术 | 作用 | 适用场景 |
|---|---|---|
DNS防火墙 | 按域名阻止或允许DNS查询,防止DNS隧道和数据泄露 | 需要DNS级过滤或防止基于DNS的数据泄露 |
TLS检查 + 数据防泄漏 | 解密HTTPS,检查请求/响应体,帮助阻止敏感数据模式 | 需要对代理生成流量进行数据丢失防护 |
集中式检查架构 | 将来自多个VPC的流量通过共享检查VPC路由 | 运行多个代理部署并希望集中策略执行 |
通过将某中心的AI代理核心工具与Network Firewall相结合,您可以赋予AI代理受控的网页访问权限,同时保持安全性和合规性。基于域名的过滤方法有助于精确定义代理可以访问哪些网站、阻止不需要的目标,并为审计目的记录连接尝试。此架构解决了企业客户提出的安全顾虑,为需要互联网访问权限进行研究、数据收集或API集成的企业提供了生产就绪的方法。FINISHED
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。