通過 Chrome 企業策略控制 AI 代理在 Amazon Bedrock AgentCore 上的瀏覽行為
本文介紹瞭如何在 Amazon Bedrock AgentCore 中應用 Chrome 企業策略和自定義根證書,以限制 AI 代理的瀏覽範圍、禁用不安全功能,並支持內部服務連接。通過一個完整的演示示例,展示瞭如何配置 URL 允許/阻止列表、禁用密碼管理器、阻止下載等策略,並使用 Playwright 驗證策略執行效果。
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 代理瀏覽的安全風險,確保代理僅訪問已批准的資源。