View a markdown version of this page

バッチ評価の暗号化 - Amazon Bedrock AgentCore

バッチ評価の暗号化

バッチ評価kmsKeyArnで を指定すると、サービスは KMS による S3 サーバー側の暗号化 (SSE-KMS) を使用して S3 に保存されているすべての出力アーティファクトを暗号化します。これには、データソース設定、セッションメタデータ、評価結果が含まれます。

kmsKeyArn は、 を介して作成時に指定されますStartBatchEvaluation

仕組み

バッチ評価暗号化は S3 SSE-KMS を使用します。サービスが S3 でバッチ評価出力を書き込みまたは読み取ると、S3 はサービスに代わって KMS を呼び出してデータを暗号化または復号します。サービスプリンシパル (bedrock-agentcore.amazonaws.com) には、キーポリシーで KMS アクセス許可が必要です。

API 時に、サービスは、ドライランチェック (転送アクセスセッション) を使用して発信者に KMS アクセス許可があることを検証します。これにより、バッチ評価ワークフロー中に非同期で失敗するのではなく、アクセス許可の問題がすぐに検出されます。

また、サービスが独自の認証情報kms:GenerateDataKeyを使用して を実行できることを検証し、キーポリシーが暗号化された出力を書き込むために必要なアクセス許可をサービスプリンシパルに付与することを確認します。

AgentCore Evaluations は、対称暗号化 KMS キーのみをサポートします。KMS キーは、バッチ評価と同じ AWS リージョンにある必要があります。

カスタマーマネージド KMS キーを使用するためのアクセス許可の設定

次のキーポリシーは、バッチ評価の暗号化に必要な最小限のアクセス許可を提供します。このポリシーには以下の 3 つのステートメントがあります。

  • AllowCallerAccess – IAM ユーザーまたはロールが 経由でキーを検証できるようにしますDescribeKey

  • AllowCallerCryptoOps – IAM ユーザーまたはロールが暗号化コンテキストの範囲に応じて暗号化および復号できるようにします。

  • AllowServicePrincipalAccess – AgentCore サービスプリンシパルが、ソースアカウントとソース ARN の範囲にある S3 のバッチ評価データを暗号化および復号できるようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyBatchEvaluationRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowCallerCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyBatchEvaluationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore:batchEvaluationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*" } } }, { "Sid": "AllowServicePrincipalAccess", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*" } } } ] }

ポリシーには、次のステートメントが含まれています。

  • AllowCallerAccess – バッチ評価の作成時にキー検証のアクセスkms:DescribeKey許可を IAM ロールに付与します。111122223333 をアカウント ID に置き換え、MyBatchEvaluationRole をバッチ評価を開始する IAM ロールまたはユーザーに置き換えます。

  • AllowCallerCryptoOpsaws:bedrock-agentcore:batchEvaluationArn暗号化コンテキストによってスコープされた IAM ロールkms:GenerateDataKeykms:Decryptアクセス許可を付与します。111122223333MyBatchEvaluationRole、us-east-1 を値に置き換えます。アカウント内のすべてのバッチ評価へのアクセスを許可するには、 StringLikeでワイルドカードを使用しますarn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*

  • AllowServicePrincipalAccess – S3 のバッチ評価データを暗号化および復号するための AgentCore サービスプリンシパルkms:GenerateDataKeykms:Decryptアクセス許可を付与します。混乱した代理攻撃を防ぐために、ソースアカウントとソース ARN (aws:SourceArn) によってスコープされます。us-east-1111122223333 をリージョンとアカウント ID に置き換えます。

カスタマーマネージド KMS キーへのアクセスのスコープダウン

暗号化コンテキストを使用して、カスタマーマネージドキーへのアクセスの範囲を絞り込むことができます。AgentCore Evaluations には、すべての KMS オペレーションに次の暗号化コンテキストが含まれています。

{ "aws:bedrock-agentcore:batchEvaluationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/batch-evaluation-id" }

この暗号化コンテキストをキーポリシー条件で使用して、上記のキーポリシーの例の AllowCallerCryptoOpsステートメントに示すように、KMS オペレーションを特定のバッチ評価に制限できます。は、暗号化コンテキストではなくスコープaws:SourceArnAllowServicePrincipalAccessを使用することに注意してください。

カスタマーマネージド KMS キーを使用したバッチ評価の開始

を呼び出すときに kmsKeyArnパラメータを指定しますStartBatchEvaluation

AgentCore CLI

AgentCore CLI では、 --kms-keyオプションを使用して、バッチ評価結果を暗号化するための単一の KMS キー ARN を指定します。AgentCore CLI は --kms-keyフラグを使用します。これは CLI AWS の --kms-key-arnフラグおよび boto3 kmsKeyArnパラメータとは異なります。

agentcore run batch-evaluation \ -r MyAgent \ -e Builtin.Correctness \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
AWS CLI
aws bedrock-agentcore start-batch-evaluation \ --batch-evaluation-name "MyEncryptedBatchEval" \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --evaluators '[{"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness"}]' \ --data-source-config '{ "cloudwatchLogs": { "logGroupNames": ["/aws/bedrock-agentcore/sessions/my-agent"], "serviceNames": ["my-agent.DEFAULT"], "filterConfig": { "timeRange": { "startTime": "2025-01-01T00:00:00Z", "endTime": "2025-01-02T00:00:00Z" } } } }'
Python (Boto3)
import boto3 client = boto3.client('bedrock-agentcore') response = client.start_batch_evaluation( batchEvaluationName='MyEncryptedBatchEval', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', evaluators=[{'evaluatorArn': 'arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness'}], dataSourceConfig={ 'cloudwatchLogs': { 'logGroupNames': ['/aws/bedrock-agentcore/sessions/my-agent'], 'serviceNames': ['my-agent.DEFAULT'], 'filterConfig': { 'timeRange': { 'startTime': '2025-01-01T00:00:00Z', 'endTime': '2025-01-02T00:00:00Z' } } } } ) print(f"Batch Evaluation ID: {response['batchEvaluationId']}")

バッチ評価の KMS 使用状況のモニタリング

バッチ評価 KMS オペレーションには、次の CloudTrail イベント名が表示されます。

  • GenerateDataKey — 暗号化されたバッチ評価出力を S3 (データソース設定、セッションメタデータ、評価結果) に書き込む場合。encryptionContext フィールドには が含まれますaws:bedrock-agentcore:batchEvaluationArn

  • Decrypt — 暗号化されたバッチ評価出力を S3 から読み取る場合。

  • DescribeKey — バッチ評価の作成時にキーを検証する場合。

KMS 使用状況のモニタリングの詳細については、 AWS 「 Key Management Service デベロッパーガイドAWS 」の AWS CloudTrail を使用した KMS API コールのログ記録」を参照してください。

キーが使用できなくなったときの動作

バッチ評価で使用されるカスタマーマネージド KMS キーを無効化または削除する場合:

  • StartBatchEvaluation — での検証時に失敗しますValidationException

  • GetBatchEvaluation — メタデータ (名前、ステータス、タイムスタンプ) を返しますが、暗号化された S3 オブジェクトに保存されている評価結果はサービスで読み取ることができません。

  • ListBatchEvaluations — リストはメタデータのみを返し、KMS オペレーションを必要としないため成功します。

  • StopBatchEvaluation — データの復号化を必要としないため、停止は成功します。

  • DeleteBatchEvaluation — S3 オブジェクトの削除に KMS 復号を必要としないため成功します。

アクセスを復元するには、キーを再度有効にするか、キーポリシーを更新して必要なアクセス許可を付与します。

上記のバッチ評価ライフサイクルオペレーションは、AgentCore CLI コマンドにマッピングされます。stop および archive コマンドは、 -i, --id <id>オプションを使用してジョブをターゲットにします。view batch-evaluation コマンドは ID を位置引数として受け取ります。

  • StartBatchEvaluationagentcore run batch-evaluation --kms-key <arn> ( -r/--runtimeと を使用-e/--evaluator)

  • GetBatchEvaluationagentcore view batch-evaluation <id>

  • ListBatchEvaluationsagentcore view batch-evaluationまたは agentcore batch-evaluations history

  • StopBatchEvaluationagentcore stop batch-evaluation -i <id>

  • DeleteBatchEvaluationagentcore archive batch-evaluation -i <id>