AI News HubLIVE
站内改写4 分钟阅读

通过 Chrome 企业策略控制 AI 代理在 Amazon Bedrock AgentCore 上的浏览行为

本文介绍了如何在 Amazon Bedrock AgentCore 中应用 Chrome 企业策略和自定义根证书,以限制 AI 代理的浏览范围、禁用不安全功能,并支持内部服务连接。通过一个完整的演示示例,展示了如何配置 URL 允许/阻止列表、禁用密码管理器、阻止下载等策略,并使用 Playwright 验证策略执行效果。

来源AWS Machine Learning Blog作者: Sundar Raghavan

AI 代理如果具有不受限制的网页访问权限,会带来严重的安全风险。没有 Chrome 企业策略来控制浏览器行为,代理可能会导航到未经授权的域名、在浏览器的密码管理器中存储凭证,或者在批准的流程之外下载文件。对于使用私有证书颁发机构(CA)的内部服务,每一个 HTTPS 连接都会因为证书验证错误而失败,这构成了额外的障碍。

Amazon Bedrock AgentCore Browser 现在支持 Chrome 企业策略和自定义根 CA 证书,让组织能够对代理的浏览器行为和连接进行精细控制。通过 Chrome 策略,您可以配置超过 450 种浏览器设置,包括 URL 过滤、下载限制和密码管理器控制,这些设置通过熟悉的 Chrome 企业 JSON 配置文件应用。自定义根证书支持让您的代理能够连接到内部服务,并与企业 SSL 拦截代理一起工作,方法是信任您组织的证书颁发机构。所有可用设置的完整参考,请参阅 Chrome Enterprise 策略列表。

本文中,您将配置 Chrome 企业策略来限制浏览器代理只能访问特定网站,通过会话记录观察策略执行效果,并使用公共测试网站演示自定义根 CA 证书。这个演示将产生一个可工作的解决方案,可以在企业浏览器限制下研究 Amazon Bedrock AgentCore 文档。

为何为 AI 代理强制执行浏览器策略

Chrome 企业策略在应用于 AI 浏览器代理时解决了三个组织需求。

首先,您可以将代理范围限制在已批准的域名。URL 允许列表和阻止列表限制了代理的导航范围。一个专门处理特定门户发票的代理不需要访问社交媒体或搜索引擎。策略在浏览器级别强制执行这些边界,独立于代理的提示或推理。

其次,您可以禁用有风险的浏览器功能。通过 Chrome 策略,您可以关闭密码管理器、阻止文件下载、禁用自动填充以及控制其他数十种浏览器功能。对于与敏感系统交互的数据输入代理,这些控制减少了意外数据存储或泄露的风险。

第三,您可以将策略管理与代理开发分离。托管策略在浏览器级别通过控制平面 API 配置,并应用于该浏览器创建的每个会话。这允许您的安全团队定义批准的浏览器配置,而开发团队专注于代理逻辑,无需将策略决策嵌入到应用程序代码中。

Chrome 策略和根 CA 证书的应用方式

该集成具有两层策略执行和一个可选的证书信任配置。

托管策略在浏览器级别运行。您在通过控制平面 API 创建浏览器时,提供存储在 Amazon Simple Storage Service(Amazon S3)中的 Chrome 企业策略 JSON 文件。这些策略由服务存储,并在从该浏览器创建的每个会话上强制执行。托管策略映射到 Chrome 的 /etc/chromium/policies/managed/ 目录。它们不能被会话级别的设置覆盖。

推荐策略在会话级别运行。您可以在通过数据平面 API 启动浏览器会话时,可选地提供额外的策略 JSON 文件。这些映射到 Chrome 的 /etc/chromium/policies/recommended/ 目录,并作为用户偏好。如果托管策略和推荐策略在同一设置上冲突,则托管策略优先。这是 Chrome 的默认行为。

您可以使用自定义根 CA 证书,将组织的根 CA 证书存储在 AWS Secrets Manager 中,并在创建浏览器或 AgentCore Code Interpreter 时引用它。服务将该证书导入证书信任存储,因此连接到内部服务和 SSL 拦截代理时不会禁用证书验证。

解决方案架构

下图展示了 Chrome 策略 JSON 文件和根 CA 证书如何从您的环境,通过 Amazon Bedrock AgentCore 控制平面和数据平面,最终传递到隔离的浏览器会话中。

图 1:策略执行数据流从您的环境通过 Amazon Bedrock AgentCore 到隔离的浏览器会话。

在您的环境中,您将 Chrome 策略 JSON 文件存储在 Amazon S3,并将可选的根 CA 证书存储在 AWS Secrets Manager。

控制平面在调用 CreateBrowser 时从您的 S3 存储桶获取策略 JSON(箭头 1),并可选地从 AWS Secrets Manager 获取根 CA 证书(箭头 2,虚线表示可选)。

您的应用程序调用 CreateBrowser API(箭头 3),然后调用 StartBrowserSession API(箭头 4)。

控制平面将浏览器配置元数据传递给数据平面(箭头 5)。

数据平面将托管策略、推荐策略和根 CA 证书部署到隔离的浏览器会话(箭头 6)。Chrome 在启动时读取合并的配置,并在整个会话中强制执行策略。

前提条件

在开始之前,请确保您具备以下条件:

  • Python 3.10 或更高版本
  • 一个 AWS 账户,并已启用 Amazon Bedrock AgentCore 访问权限
  • 已配置 AWS 凭证,可以使用 aws sts get-caller-identity 验证
  • 一个 Amazon Bedrock AgentCore 可用的 AWS 区域(请参阅 AgentCore 文档中的支持区域)
  • 访问驱动代理的 AI 模型。本文使用通过 Amazon Bedrock 的 Anthropic Claude。AgentCore 是模型无关的,可以替换其他模型提供程序和代理框架。

笔记:笔记本会自动创建所需的 AWS 资源,包括 S3 存储桶、IAM 执行角色、AgentCore Browser 和 AgentCore Code Interpreter。此自动配置仅用于演示目的。生产部署应使用预先存在的资源,并由安全团队审查最小权限 IAM 策略。

重要提示:使用来自 AWS IAM Identity Center 或 AWS Security Token Service(AWS STS)的临时凭证。不要使用长期访问密钥。配置 IAM 权限时遵循最小权限原则。

设置环境

完整的演示代码在示例仓库中以 Jupyter 笔记本形式提供。克隆它并按顺序运行单元格。

git clone https://github.com/awslabs/amazon-bedrock-agentcore-samples.git
cd amazon-bedrock-agentcore-samples/01-tutorials/05-AgentCore-tools/02-Agent-Core-browser-tool/13-browser-chrome-policies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export AWS_REGION=us-west-2

然后运行 jupyter notebook browser-chrome-policies.ipynb。

演示

笔记本分为两部分。第一部分创建 Chrome 企业策略,将其应用于自定义 AgentCore Browser,并使用 Playwright 验证允许的 URL 加载成功,阻止的 URL 被拒绝。第二部分演示了 AgentCore Code Interpreter 中的自定义根 CA 证书。

定义 Chrome 企业策略

第一个单元格定义了一个 Chrome 企业策略,将浏览器限制为仅访问 AWS 文档,并禁用代理不需要的功能。策略 JSON 使用标准的 Chrome 企业策略设置。

policy = {
    "URLBlocklist": ["*"],
    "URLAllowlist": [
        "docs.aws.amazon.com",
        ".aws.amazon.com",
        ".amazonaws.com",
    ],
    "PasswordManagerEnabled": False,
    "DownloadRestrictions": 3,
    "DeveloperToolsAvailability": 0,
    "BookmarkBarEnabled": False,
    "AutofillAddressEnabled": False,
    "AutofillCreditCardEnabled": False,
}

注意:DeveloperToolsAvailability 必须设置为 0(或省略),以便浏览器与 Playwright 或基于 CDP 的自动化工具一起使用。设置为 2 会禁用 CDP,导致无提示的超时。

使用托管策略创建浏览器

接下来的单元格创建一个自定义浏览器,该浏览器对每个会话强制执行策略。关键 API 调用使用 enterprise_policies 参数,并将 type 设置为 MANAGED。会话记录也已启用。

from bedrock_agentcore.tools import BrowserClient
client = BrowserClient(REGION)
response = client.create_browser(
    name="docs_research_browser",
    execution_role_arn=EXECUTION_ROLE_ARN,
    network_configuration={"networkMode": "PUBLIC"},
    enterprise_policies=[
        {
            "location": {
                "s3": {
                    "bucket": BUCKET_NAME,
                    "prefix": POLICY_KEY,
                }
            },
            "type": "MANAGED",
        }
    ],
    recording={
        "enabled": True,
        "s3Location": {
            "bucket": BUCKET_NAME,
            "prefix": "policy-demo",
        },
    },
)

然后笔记本轮询 get_browser() 直到状态从 CREATING 变为 READY。

使用 Playwright 演示 Chrome 策略执行

笔记本启动一个浏览器会话,并使用 Playwright 导航到两个 URL。第一个 URL(docs.aws.amazon.com)被策略允许,因此页面加载成功。第二个 URL(www.wikipedia.org)被策略阻止,因此 Chrome 显示错误页面。

测试使用 wait_until="domcontentloaded" 而不是默认的 load 事件。AWS 文档页面有持续的背景网络活动,这有助于防止 Playwright 的 networkidle 和默认加载状态无法解析。同样,文本提取使用 page.evaluate() 直接在浏览器上下文中运行 JavaScript,以避免在具有持续 DOM 突变的页面上出现 Playwright 选择器引擎超时。

运行此单元格后,您应该看到如下输出:

TEST 1: Navigate to docs.aws.amazon.com (ALLOWED)
Page title: Overview - Amazon Bedrock AgentCore
Page text preview: Amazon Bedrock AgentCore ...
Result: PAGE LOADED SUCCESSFULLY

TEST 2: Navigate to www.wikipedia.org (BLOCKED)
Page title:
Result: CHROME POLICY BLOCKED THIS URL

这是 Chrome 策略的核心价值。限制发生在浏览器级别,独立于代理的推理或提示指令。

您还可以在 Amazon Bedrock AgentCore 控制台中观看浏览器实时会话,并回放录制内容以验证策略执行。

总结

通过 Amazon Bedrock AgentCore 的 Chrome 企业策略集成,组织可以大幅降低 AI 代理浏览的安全风险,确保代理仅访问已批准的资源。