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 格式和過期,並將憑證安裝到工作階段的作業系統信任存放區。這可讓程式碼解譯器建立內部資源的信任 HTTPS 連線。

運作方式

Amazon Bedrock AgentCore Code Interpreter 的根憑證授權機構運作方式如下:

  1. 您可以提供憑證位置清單,每個位置都指向 AWS Secrets Manager 中包含 PEM 編碼根 CA 憑證的秘密。

  2. Amazon Bedrock AgentCore 使用您的發起人憑證從 AWS Secrets Manager 擷取每個憑證。

  3. 每個憑證都會針對正確的 X.509 PEM 格式進行驗證,並加以檢查,以確保其尚未過期,也不會在有效性開始日期之前使用。

  4. 有效的憑證會部署到工作階段的作業系統信任存放區,可供程式碼執行時間和沙盒內的任何網路用戶端使用。

在工具層級設定的憑證 (透過 CreateCodeInterpreter ) 會與工作階段開始時提供的任何憑證合併。這可讓您在工具上設定整個組織的憑證,並視需要新增工作階段特定的憑證。

注意

憑證組態是每個工作階段的一次性操作。安裝憑證後,就無法在該工作階段期間修改憑證。

先決條件

在設定根 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 中

您必須先將它儲存為 AWS Secrets Manager 中的秘密,才能搭配 Amazon Bedrock AgentCore Code Interpreter 使用根 CA 憑證。秘密值必須是 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>" } } } ] }

使用多個憑證

您可以在單一程式碼解譯器工作階段中提供多個根 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 憑證

儲存

AWS Secrets Manager 秘密 (做為字串值,而非二進位)

Validity

憑證不得過期,且必須在其有效期間內 (介於 notBeforenotAfter日期之間)

每個工作階段的憑證上限

每個工作階段 10 個,每個工具 10 個。工作階段總計最多可以有 20 個憑證。

秘密 ARN 格式

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

位置類型

只有 AWS Secrets Manager 支援做為憑證位置

疑難排解

下表說明為 Amazon Bedrock AgentCore Code Interpreter 設定根 CA 憑證時的常見錯誤及其解決方法。

錯誤 原因 Resolution

在 Secrets Manager 中找不到憑證秘密

秘密 ARN 不存在或秘密已刪除。

確認秘密 ARN 正確,且秘密存在於指定的區域中。

Secrets Manager 中對憑證秘密的存取遭拒

發起人沒有秘密的secretsmanager:GetSecretValue許可。

secretsmanager:GetSecretValue許可新增至指定秘密 ARN 的 IAM 政策。

憑證內容不是有效的 PEM/X.509 格式

秘密值不是有效的 PEM 編碼 X.509 憑證。

確保秘密包含格式正確的 PEM 憑證,開頭為 -----BEGIN CERTIFICATE-----,結尾為 -----END CERTIFICATE-----

憑證已過期

憑證notAfter的日期是過去的日期。

將過期的憑證取代為 AWS Secrets Manager 中的有效憑證,然後重試。

憑證尚未有效

憑證notBefore的日期是未來的日期。

等到憑證的有效期開始,或使用目前有效的憑證。

憑證數量超過允許的上限

在工作階段層級或工具層級提供超過 10 個憑證。

將憑證數量減少為每個工作階段 10 個或更少,每個工具 10 個或更少。

憑證位置為必填

在沒有位置的情況下提供憑證項目。

確保陣列中的每個憑證都包含一個 location,其中包含一個包含有效 secretsManager的項目secretArn

未啟用憑證組態

您的帳戶未啟用憑證功能。

請聯絡 AWS Support 以啟用您帳戶的憑證功能。