View a markdown version of this page

批量评估加密 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

批量评估加密

当您在批量评估中指定时,该服务使用带有 KMS () SSE-KMS 的 S3 服务器端加密来加密存储在 S3 中的所有输出对象。kmsKeyArn这包括数据源配置、会话元数据和评估结果。

在创建时通过指定StartBatchEvaluation。kmsKeyArn

工作原理

批量评估加密使用 S3 SSE-KMS。当该服务在 S3 中写入或读取批量评估输出时,S3 会代表该服务调用 KMS 来加密或解密数据。服务主体 (bedrock-agentcore.amazonaws.com) 必须在密钥策略中拥有 KMS 权限。

在 API 时,该服务使用试运行检查(转发访问会话)来验证调用者是否具有 KMS 权限。这样可以立即捕获权限问题,而不是在批量评估工作流程中异步失败。

该服务还验证其是否可以使用自己的凭据执行kms:GenerateDataKey,以确保密钥策略向服务主体授予写入加密输出所需的权限。

AgentCore 评估仅支持对称加密 KMS 密钥。KMS 密钥必须与批量评估位于同一 AWS 区域。

配置使用客户管理的 KMS 密钥的权限

以下密钥策略提供了批量评估加密所需的最低权限。该策略包含三条语句:

  • AllowCallerAccess— 允许 IAM 用户或角色通过验证密钥DescribeKey。

  • AllowCallerCryptoOps— 允许 IAM 用户或角色加密和解密,范围受加密上下文限制。

  • AllowServicePrincipalAccess— 允许 AgentCore 服务主体加密和解密 S3 中的批量评估数据,范围以源账户和源 ARN 为范围。

{ "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— 授予 IAM 角色在批量评估创建时进行密钥验证的kms:DescribeKey权限。111122223333替换为您的账户 ID 以及MyBatchEvaluationRole开始批量评估的 IAM 角色或用户。

  • AllowCallerCryptoOps— 授予受aws:bedrock-agentcore:batchEvaluationArn加密上下文kms:Decrypt限制的 IAM 角色kms:GenerateDataKey和权限。将111122223333MyBatchEvaluationRole、和us-east-1替换为您的值。要允许访问您账户中的所有批量评估,请使用通配符和StringLike:arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*。

  • AllowServicePrincipalAccess— 授予 AgentCore 服务主体kms:GenerateDataKey和kms:Decrypt权限以加密和解密 S3 中的批量评估数据。按来源账户和来源 ARN (aws:SourceArn) 设定范围,以防止混乱的副手攻击。将us-east-1和111122223333替换为您的地区和账户 ID。

缩小对客户管理的 KMS 密钥的访问权限

您可以使用加密上下文来缩小对客户管理密钥的访问范围。 AgentCore 评估包括所有 KMS 操作中的以下加密上下文:

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

您可以在密钥策略条件中使用此加密上下文将 KMS 操作限制为特定的批量评估,如上面示例密钥策略中的AllowCallerCryptoOps语句所示。请注意,AllowServicePrincipalAccessaws:SourceArn用于范围界定而不是加密上下文。

使用客户管理的 KMS 密钥开始批量评估

调用时指定kmsKeyArn参数StartBatchEvaluation:

例
AgentCore CLI

使用 AgentCore CLI,使用--kms-key选项指定单个 KMS 密钥 ARN 来加密批量评估结果。 AgentCore CLI 使用该--kms-key标志,它不同于 AWS CLI 的--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— 将加密的批量评估输出(数据源配置、会话元数据、评估结果)写入时。该encryptionContext字段包含aws:bedrock-agentcore:batchEvaluationArn。

  • Decrypt— 读取 S3 的加密批量评估输出时。

  • DescribeKey— 在批量评估创建时验证密钥时。

有关监控 KMS 使用情况的更多信息,请参阅密 AWS 钥管理服务开发人员指南 AWS CloudTrail中的使用记录 AWS KMS API 调用。

密钥不可用时的行为

如果您禁用或删除批量评估使用的客户管理的 KMS 密钥:

  • StartBatchEvaluation— 使用进行验证时失败ValidationException。

  • GetBatchEvaluation— 返回元数据(名称、状态、时间戳),但该服务无法读取存储在加密 S3 对象中的评估结果。

  • ListBatchEvaluations— 之所以成功,是因为清单仅返回元数据,不需要 KMS 操作。

  • StopBatchEvaluation— 成功是因为停止不需要解密数据。

  • DeleteBatchEvaluation— 成功是因为删除 S3 对象不需要 KMS 解密。

要恢复访问权限,请重新启用密钥或更新密钥策略以授予所需的权限。

上述批量评估生命周期操作映射到 AgentCore CLI 命令。stop和archive命令通过-i, --id <id>选项定位作业。该view batch-evaluation命令将 ID 作为位置参数:

  • StartBatchEvaluation—agentcore run batch-evaluation --kms-key <arn>(使用-r/--runtime和-e/--evaluator)

  • GetBatchEvaluation — agentcore view batch-evaluation <id>

  • ListBatchEvaluations:agentcore view batch-evaluation 或 agentcore batch-evaluations history

  • StopBatchEvaluation — agentcore stop batch-evaluation -i <id>

  • DeleteBatchEvaluation — agentcore archive batch-evaluation -i <id>