View a markdown version of this page

Amazon Bedrock AgentCore コードインタープリタのルート認証機関を設定する - Amazon Bedrock AgentCore

Amazon Bedrock AgentCore コードインタープリタのルート認証機関を設定する

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

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

仕組み

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

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

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

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

  4. 有効な証明書はセッションの OS トラストストアにデプロイされるため、コード実行ランタイムやサンドボックス内のネットワーククライアントで使用できます。

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

注記

証明書設定は、セッションごとに 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 Code Interpreter でルート 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 証明書を信頼するコードインタープリタセッションを開始するには、StartCodeInterpreterSessionリクエストに certificatesパラメータを含めます。

AWS CLI
  1. aws bedrock-agentcore start-code-interpreter-session \ --code-interpreter-identifier "aws.codeinterpreter.v1" \ --name "ci-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_code_interpreter_session( codeInterpreterIdentifier="aws.codeinterpreter.v1", name="ci-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": "ci-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-code-interpreter-session \ --code-interpreter-identifier "aws.codeinterpreter.v1" \ --name "ci-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_code_interpreter_session( codeInterpreterIdentifier="aws.codeinterpreter.v1", name="ci-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_code_interpreter( name="corporate-code-interpreter", description="Code interpreter with corporate CA trust", certificates=[ { "location": { "secretsManager": { "secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:corporate-root-ca" } } } ] ) ci_id = response['codeInterpreterIdentifier'] print(f"Code Interpreter ID: {ci_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 のみが証明書の場所としてサポートされています

トラブルシューティング

次の表は、Amazon Bedrock AgentCore Code Interpreter のルート CA 証明書を設定する際の一般的なエラーとその解決策を示しています。

エラー 原因 解像度

Secrets Manager に証明書シークレットが見つかりません

シークレット ARN が存在しないか、シークレットが削除されました。

シークレット ARN が正しく、シークレットが指定されたリージョンに存在することを確認します。

Secrets Manager の証明書シークレットへのアクセスが拒否されました

呼び出し元にはシークレットに対するsecretsmanager:GetSecretValueアクセス許可がありません。

指定されたシークレット ARN の IAM ポリシーにアクセスsecretsmanager:GetSecretValue許可を追加します。

証明書の内容が有効な PEM/X.509 形式ではありません

シークレット値が有効な PEM エンコード X.509 証明書ではありません。

シークレットに、 で始まり-----BEGIN CERTIFICATE-----、 で終わる、正しくフォーマットされた PEM 証明書が含まれていることを確認します-----END CERTIFICATE-----

証明書の有効期限が切れています

証明書notAfterの日付が過去の日付です。

期限切れの証明書を AWS Secrets Manager の有効な証明書に置き換えて、再試行してください。

証明書はまだ有効ではありません

証明書の日付は将来のnotBefore日付です。

証明書の有効期間が始まるまで待つか、現在有効な証明書を使用します。

証明書の数が最大許容数を超えています

セッションレベルまたはツールレベルで 10 を超える証明書が提供されました。

証明書の数をセッションごとに 10 以下、ツールごとに 10 以下に減らします。

証明書の場所は必須です

証明書エントリが場所なしで提供された。

配列内の各証明書に、有効な を含むsecretsManagerエントリlocationを含む が含まれていることを確認しますsecretArn

証明書設定が有効になっていない

証明書機能はアカウントで有効になっていません。

AWS サポートに連絡して、アカウントの証明書機能を有効にします。