View a markdown version of this page

Amazon Bedrock AgentCore ブラウザのルート認証機関を設定する - Amazon Bedrock AgentCore

Amazon Bedrock AgentCore ブラウザのルート認証機関を設定する

デフォルトでは、Amazon Bedrock AgentCore Browser セッションは公開されている認証機関のみを信頼します。エージェントがプライベート CA によって署名された証明書を使用する TLS インターセプトプロキシの背後にある内部サービス、企業ウェブサイト、またはリソースにアクセスする必要がある場合は、セッションの開始時にカスタムルート CA 証明書を提供する必要があります。

Amazon Bedrock AgentCore は、発信者認証情報を使用して AWS Secrets Manager から PEM エンコードされた証明書コンテンツを取得し、X.509 の形式と有効期限を検証し、セッションの OS トラストストアに証明書をインストールします。これにより、ブラウザは内部リソースへの信頼された HTTPS 接続を確立できます。

仕組み

Amazon Bedrock AgentCore Browser のルート認証機関は、次のように機能します。

  1. PEM エンコードされたルート CA 証明書を含む AWS Secrets Manager のシークレットを指す証明書の場所のリストを指定します。

  2. Amazon Bedrock AgentCore は、発信者認証情報を使用して AWS Secrets Manager から各証明書を取得します。

  3. 各証明書は正しい X.509 PEM 形式で検証され、有効期限が切れておらず、有効開始日より前に使用されていないことを確認します。

  4. 有効な証明書はセッションの OS トラストストアにデプロイされ、ブラウザとサンドボックス内のネットワーククライアントで使用できます。

ツールレベル ( 経由) CreateBrowser で設定された証明書は、セッションの開始時に提供された証明書と組み合わせられます。これにより、 ツールで組織全体の証明書を設定し、必要に応じてセッション固有の証明書を追加できます。

注記

証明書設定は、セッションごとに 1 回限りのオペレーションです。証明書をインストールすると、そのセッションの期間中は変更できません。

前提条件

ルート CA 証明書を設定する前に、以下があることを確認してください。

  • 一般的な前提条件を完了しました

  • AWS Secrets Manager にシークレットとして保存されているルート CA 証明書。各シークレットには、有効な PEM エンコードされた X.509 証明書が含まれている必要があります

  • AWS Secrets Manager から証明書シークレットを読み取るための IAM アクセス許可。IAM ポリシーに次のアクセス許可を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerCertificateAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:<Region>:<account-id>:secret:<secret-name>" } ] }

AWS Secrets Manager に証明書を保存する

Amazon Bedrock AgentCore Browser でルート CA 証明書を使用する前に、 AWS Secrets Manager にシークレットとして保存する必要があります。シークレット値は、PEM エンコードされた証明書コンテンツである必要があります。

AWS CLI
  1. aws secretsmanager create-secret \ --name "my-corporate-root-ca" \ --description "Corporate root CA certificate for AgentCore sessions" \ --secret-string file://my-root-ca.pem \ --region <region>
Boto3
  1. import boto3 client = boto3.client('secretsmanager', region_name='<region>') # Read the PEM certificate file with open('my-root-ca.pem', 'r') as f: cert_content = f.read() response = client.create_secret( Name='my-corporate-root-ca', Description='Corporate root CA certificate for AgentCore sessions', SecretString=cert_content ) print(f"Secret ARN: {response['ARN']}")

出力のシークレット ARN を書き留めます。この ARN は、証明書設定でセッションを開始するときに使用します。

重要

シークレットには、有効な PEM エンコードされた X.509 証明書が含まれている必要があります。証明書の有効期限が切れていてはならず、有効期間内である必要があります。Amazon Bedrock AgentCore は、証明書をインストールする前に証明書の形式と有効期限を検証します。

カスタム証明書を使用してブラウザセッションを開始する

カスタムルート CA 証明書を信頼するブラウザセッションを開始するには、StartBrowserSessionリクエストに certificatesパラメータを含めます。

AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "session-with-custom-ca" \ --certificates '[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>" } } } ]'
Boto3
  1. import boto3 client = boto3.client('bedrock-agentcore', region_name='<region>') response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="session-with-custom-ca", certificates=[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>" } } } ] ) print(f"Session ID: {response['sessionId']}") print(f"Status: {response['status']}")
API
  1. { "name": "session-with-custom-ca", "certificates": [ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>" } } } ] }

複数の証明書の使用

1 つのブラウザセッションで複数のルート CA 証明書を指定できます。これは、環境が異なる内部サービスまたは環境の個別の CAs など、複数の内部認証機関に対する信頼を必要とする場合に便利です。

AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "session-with-multiple-cas" \ --certificates '[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:corporate-root-ca" } } }, { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:proxy-ca" } } } ]'
Boto3
  1. response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="session-with-multiple-cas", certificates=[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:corporate-root-ca" } } }, { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:proxy-ca" } } } ] )

ツールレベルで証明書を設定する

カスタムブラウザを作成するときに、ツールレベルで証明書を設定できます。ツールレベルで設定された証明書は、セッションの開始時に提供された証明書に加えて、そのツールで開始されたすべてのセッションに自動的に適用されます。

これは、すべてのブラウザセッションで信頼する必要がある組織全体の証明書に役立ちます。

Boto3
  1. response = client.create_browser( name="corporate-browser", description="Browser with corporate CA trust", certificates=[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:corporate-root-ca" } } } ] ) browser_id = response['browserIdentifier'] print(f"Browser ID: {browser_id}")

証明書が設定されたブラウザでセッションを開始すると、ツールレベルの証明書はセッションレベルの証明書と結合されます。ツールレベルの証明書が最初に適用され、その後にセッションレベルの証明書が続きます。

証明書の要件と制限

証明書は、次の要件を満たしている必要があります。

要件 詳細

形式

PEM エンコードされた X.509 証明書

Storage

AWS Secrets Manager シークレット (バイナリではなく文字列値として)

Validity

証明書の有効期限が切れていてはならず、有効期間内 ( notBefore から notAfter の日付の間) である必要があります。

セッションあたりの最大証明書数

セッションあたり 10、ツールあたり 10。セッションには、合計で最大 20 個の証明書を含めることができます。

シークレット ARN 形式

arn:aws:secretsmanager:region:account-id:secret:secret-name

ロケーションタイプ

AWS Secrets Manager のみが証明書の場所としてサポートされています