Amazon Bedrock AgentCore で Chrome エンタープライズ ポリシーを使用して AI エージェントのブラウジングを制御する
この記事では、Chrome エンタープライズ ポリシーとカスタムルート証明書を Amazon Bedrock AgentCore に適用して、AI エージェントのブラウジング範囲を制限し、安全でない機能を無効にし、内部サービスへの接続をサポートする方法を説明します。完全なデモを通じて、URL 許可/ブロックリストの構成、パスワードマネージャーの無効化、ダウンロードのブロックなどのポリシーを設定し、Playwright を使用してポリシー適用を検証します。
AI エージェントが無制限に Web にアクセスできると、重大なセキュリティリスクが生じます。Chrome エンタープライズ ポリシーでブラウザの動作を制御しないと、エージェントが許可されていないドメインに移動したり、ブラウザのパスワードマネージャーに資格情報を保存したり、承認されたワークフローの外でファイルをダウンロードしたりする可能性があります。プライベート証明機関(CA)を使用する内部サービスを利用している組織は、さらに別の障壁に直面します。HTTPS 接続はすべて証明書検証エラーで失敗します。
Amazon Bedrock AgentCore Browser は、Chrome エンタープライズ ポリシーとカスタムルート CA 証明書をサポートするようになりました。これにより、組織はエージェントのブラウザ動作と接続をきめ細かく制御できます。Chrome ポリシーを使用すると、URL フィルタリング、ダウンロード制限、パスワードマネージャー制御など、450 以上のブラウザ設定を、使い慣れた Chrome エンタープライズ JSON 構成で構成できます。カスタムルート証明書のサポートにより、エージェントは組織の証明機関を信頼することで、内部サービスに接続し、企業の SSL インターセプトプロキシと連携できるようになります。利用可能な設定の完全なリファレンスについては、Chrome Enterprise ポリシーリストを参照してください。
この記事では、Chrome エンタープライズ ポリシーを構成してブラウザエージェントを特定の Web サイトに制限し、セッション録画を通じてポリシーの適用を観察し、公開テストサイトを使用してカスタムルート CA 証明書をデモンストレーションします。このウォークスルーでは、エンタープライズブラウザの制限下で動作しながら Amazon Bedrock AgentCore のドキュメントを調査する実用的なソリューションを生成します。
AI エージェントにブラウザポリシーを適用する理由
Chrome エンタープライズ ポリシーは、AI ブラウザエージェントに適用される場合、3 つの組織ニーズに対応します。
第一に、エージェントのスコープを承認されたドメインに制限できます。URL 許可リストとブロックリストにより、エージェントの移動先が制限されます。特定のポータルで請求書を処理するエージェントは、ソーシャルメディアや検索エンジンにアクセスする必要はありません。ポリシーは、エージェントのプロンプトや推論とは独立して、ブラウザレベルでこれらの境界を強制します。
第二に、リスクの高いブラウザ機能を無効にできます。Chrome ポリシーを使用すると、パスワードマネージャーをオフにしたり、ファイルのダウンロードをブロックしたり、自動入力を無効にしたり、その他数十のブラウザ機能を制御したりできます。機密システムと対話するデータ入力エージェントの場合、これらの制御により、意図しないデータ保存や流出のリスクが軽減されます。
第三に、ポリシー管理をエージェント開発から分離できます。管理ポリシーは、コントロールプレーン API を介してブラウザレベルで構成され、そのブラウザから作成されたすべてのセッションに適用されます。これにより、セキュリティチームが承認されたブラウザ構成を定義し、開発チームがアプリケーションコードにポリシー決定を埋め込むことなくエージェントロジックに集中できるようになります。
Chrome ポリシーとルート CA 証明書の適用方法
この統合には、2 層のポリシー適用とオプションの証明書信頼構成があります。
管理ポリシーはブラウザレベルで動作します。コントロールプレーン 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 以降
- Amazon Bedrock AgentCore へのアクセスが有効になっている AWS アカウント
- 構成された AWS 認証情報(aws sts get-caller-identity で確認可能)
- Amazon Bedrock AgentCore が利用可能な AWS リージョン(AgentCore ドキュメントのサポートされている AWS リージョンを参照)
- エージェントを駆動する AI モデルへのアクセス。この記事では Amazon Bedrock 経由の Anthropic Claude を使用します。AgentCore はモデルに依存しないため、他のモデルプロバイダーやエージェントフレームワークに置き換えることができます。
注意:ノートブックは、S3 バケット、IAM 実行ロール、AgentCore Browser、AgentCore Code Interpreter を含む必要な AWS リソースを自動的に作成します。この自動プロビジョニングはデモンストレーション目的です。本番環境では、セキュリティチームがレビューした最小権限の 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 を実行します。
ウォークスルー
ノートブックは 2 つの部分に分かれています。パート 1 では、Chrome エンタープライズポリシーを作成し、カスタム AgentCore Browser に適用し、Playwright を使用して許可された URL の読み込みが成功し、ブロックされた URL が拒否されることを確認します。パート 2 では、AgentCore Code Interpreter でのカスタムルート CA 証明書をデモンストレーションします。
Chrome エンタープライズポリシーの定義
最初のセルは、ブラウザを AWS ドキュメントのみに制限し、エージェントが不要な機能を無効にする Chrome エンタープライズポリシーを定義します。ポリシー 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 は、Playwright やその他の CDP ベースの自動化ツールで使用するブラウザの場合は 0(または省略)に設定する必要があります。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 を使用して 2 つの URL に移動します。最初の URL(docs.aws.amazon.com)はポリシーで許可されているため、ページは正常に読み込まれます。2 番目の URL(www.wikipedia.org)はポリシーでブロックされているため、Chrome はエラーページを表示します。
テストでは、デフォルトの load イベントの代わりに wait_until="domcontentloaded" を使用します。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 エージェントのブラウジングにおけるセキュリティリスクを大幅に削減し、エージェントが承認されたリソースのみにアクセスできるようにすることができます。