View a markdown version of this page

用于 AgentCore 评估的静态加密 - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

用于 AgentCore 评估的静态加密

注意

本页介绍自定义评估器的客户管理密钥加密。有关数据集加密,请参阅数据集加密。

加密选项

默认情况下,Amazon Bedrock AgentCore Evaluations 使用 Amazon 自有密钥对所有静态数据进行加密,不收取额外费用。您无法查看、管理或审计此密钥的使用。

您可以选择使用客户管理的密钥加密敏感的评估器数据。当您在自定义评估器上指定客户管理的 Amazon KMS 密钥时,该服务使用加密 SDK 中的信封加密对评估者的指令和评级标准进行加密。 Amazon 所有其他评估器元数据(名称、级别、模型配置、状态)仍使用 Amazon 自有密钥进行加密。

使用客户管理的密钥可以让你更好地控制加密过程,包括:

  • 创建和管理密钥,包括设置密钥策略

  • 按自己的时间表轮换密钥

  • 禁用或删除密钥以控制对加密数据的访问

  • 通过以下方式审核密钥使用情况 Amazon CloudTrail

有关更多信息,请参阅《密钥管理服务开发人员指南》中的客户管理 Amazon 密钥。

AgentCore 评估如何使用客户管理的 KMS 密钥

当您在自定义评估器上指定客户管理的密钥时,该服务使用呼叫者的证书(通过转发访问会话)来加密和解密评估者的指令和评级表。调用者必须对密钥拥有kms:GenerateDataKeykms:Decrypt、和kms:DescribeKey权限。

对于在线评估,该服务使用自己的服务主体 () 异步解密评估器指令。bedrock-agentcore.amazonaws.com服务主体必须在密钥策略中kms:Decrypt获得许可。

注意

AgentCore 评估不使用 KMS 授权或缓存数据密钥。在线评估配置不接受kmsKeyArn参数——它们继承其引用的评估器的 CMK 加密。

配置客户管理的 KMS 密钥

AgentCore 评估仅支持对称加密 KMS 密钥。KMS 密钥必须与评估者位于同一 Amazon 区域。有关创建对称 KMS 密钥的信息,请参阅密钥管理服务开发人员指南中的创建对称加密 KMS 密钥。 Amazon

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

以下关键政策提供了 AgentCore 评估所需的最低权限。该策略包含三条语句:

  • AllowCallerAccess— 允许 IAM 用户或角色通过验证密钥DescribeKey,范围为。kms:ViaService

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

  • AllowServicePrincipalDecrypt— 允许 AgentCore 服务主体在在线评估期间解密,范围以来源账户和来源 ARN 为限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyEvaluationRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com" } } }, { "Sid": "AllowCallerCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyEvaluationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:bedrock-agentcore:evaluatorArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:evaluator/my-evaluator-id" } } }, { "Sid": "AllowServicePrincipalDecrypt", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:evaluator/my-evaluator-id" } } } ] }

该政策包含以下声明:

  • AllowCallerAccess— 授予 IAM 角色kms:DescribeKey权限,范围限于通过该 AgentCore 服务提出的请求 (kms:ViaService)。111122223333替换为您的账户 ID、MyEvaluationRole管理评估员的 IAM 角色或用户,us-east-1以及您的 Amazon 区域。

  • AllowCallerCryptoOps— 授予 IAM 角色kms:GenerateDataKey和kms:Decrypt权限,范围受kms:ViaServiceaws:bedrock-agentcore:evaluatorArn加密上下文限制。用您的值替换111122223333MyEvaluationRoleus-east-1、、和my-evaluator-id。要允许您账户中的所有评估者进行访问,请使用通配StringLike符和:。arn:aws:bedrock-agentcore:us-east-1:111122223333:evaluator/ 请注意,使用通配符时,必须将条件运算符从更改为StringLike,因为StringEquals将条件运算符StringEquals视为文字字符。

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

使用客户管理的 KMS 密钥创建评估器

要加密自定义评估器,请在调用CreateEvaluator时指定kmsKeyArn参数。

例
CLI
aws bedrock-agentcore-control create-evaluator \ --evaluator-name "MyEncryptedEvaluator" \ --level SESSION \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --evaluator-config '{ "llmAsAJudge": { "instructions": "Rate the session quality using {available_tools} and {context}", "ratingScale": { "categorical": [ {"label": "Good", "definition": "The agent performed well"}, {"label": "Bad", "definition": "The agent performed poorly"} ] }, "modelConfig": { "bedrockEvaluatorModelConfig": { "modelId": "us.anthropic.claude-sonnet-4-20250514-v1:0" } } } }'
Python (Boto3)
import boto3 client = boto3.client('bedrock-agentcore-control') response = client.create_evaluator( evaluatorName='MyEncryptedEvaluator', level='SESSION', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', evaluatorConfig={ 'llmAsAJudge': { 'instructions': 'Rate the session quality using {available_tools} and {context}', 'ratingScale': { 'categorical': [ {'label': 'Good', 'definition': 'The agent performed well'}, {'label': 'Bad', 'definition': 'The agent performed poorly'} ] }, 'modelConfig': { 'bedrockEvaluatorModelConfig': { 'modelId': 'us.anthropic.claude-sonnet-4-20250514-v1:0' } } } } ) print(f"Evaluator ID: {response['evaluatorId']}")

更改现有评估器的加密配置

您可以使用以下方法更改现有评估器的UpdateEvaluator加密配置:

  • 添加加密 -在未创建的赋值器kmsKeyArn上指定。该服务使用新密钥对指令和评级表进行加密。

  • 旋转密钥 -指定不同的密钥kmsKeyArn。该服务使用旧密钥解密数据,然后使用新密钥重新加密。调用者必须对两个密钥都有权限。如果旧密钥不可用(禁用、删除或缺少权限),更新将失败。

注意

一旦添加了客户管理的密钥加密,就无法将其从评估器中删除。

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

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

{ "aws:bedrock-agentcore:evaluatorArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:evaluator/evaluator-id" }

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

监控与 AgentCore 评估的互动 Amazon KMS

您可以使用 Amazon CloudTrail 来跟踪 AgentCore 评估代表您提出的 KMS API 请求。以下 CloudTrail 事件名称出现在您的日志中:

  • GenerateDataKey— 使用客户管理的密钥创建或更新评估器时。

  • Decrypt— 检索评估者数据时、按需评估期间或在线评估执行期间。

  • DescribeKey— 在创建评估器、更新或在线评估配置创建时验证密钥时。

在 CloudTrail 日志条目中,该requestParameters.encryptionContext字段aws:bedrock-agentcore:evaluatorArn包含评估者的 ARN。对于服务负责人在在线评估期间提出的请求,该userIdentity.invokedBy字段将显示bedrock-agentcore.amazonaws.com。

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

密钥不可用时的行为

如果您禁用或删除客户管理的 KMS 密钥,或者密钥策略不再授予所需的权限:

  • GetEvaluator 使用 ALL_DATA — 由于服务无法解密指令和评级量表而失败。

  • GetEvaluator 使用 METADATA_ONL Y — 成功是因为不需要 KMS 操作。

  • 评估(按需)-由于服务无法解密指令, CMK-encrypted 评估者无法进行评估。

  • UpdateEvaluator (密钥轮换)-失败,因为在使用新密钥重新加密之前,该服务无法使用不可用的密钥解密现有数据。

  • CreateOnlineEvaluationConfig / UpdateOnlineEvaluationConfig— 由于该服务无法通过kms:DescribeKey和试运行验证呼叫者访问权限而失kms:Decrypt败。

  • 在线评估执行 -由于服务无法解密评估器指令以进行评分而失败。

  • DeleteEvaluator— 成功是因为删除不需要解密评估器数据。

  • DeleteOnlineEvaluationConfig— 成功是因为删除不需要 KMS 访问权限。

提示

使用 includedData=METADATA_ONLY on 可在 GetEvaluator 不需要 KMS 权限的情况下检索评估器元数据(名称、级别、模型配置、状态)。当密钥不可用时,这对于监控和清点工作流程很有用。

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

注意

有关数据集的客户管理密钥加密的信息,请参阅数据集加密。