View a markdown version of this page

用于 AgentCore 评估的静态加密 - Amazon Bedrock AgentCore

用于 AgentCore 评估的静态加密

注意

本页介绍适用于自定义评估者的客户托管密钥加密。有关数据集加密的信息,请参阅数据集加密

加密选项

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

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

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

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

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

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

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

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

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

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

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

注意

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

配置客户托管的 KMS 密钥

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

配置使用客户托管 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以及您的 AWS 区域。

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

  • AllowServicePrincipalDecrypt— 授予 AgentCore 服务主体在在线评估执行期间解密评估者数据的kms:Decrypt权限。按来源账户和来源 ARN aws:SourceArn () 划分范围,以防止混淆副手攻击。111122223333用您的地区us-east-1和账户 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 评估与之互动 AWS KMS

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

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

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

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

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

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

密钥不可用时的行为

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

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

  • GetEvaluator 仅使用 METADATA_ON LY — 成功是因为不需要 KMS 操作。

  • 评估(按需)- CMK-encrypted 评估者失败,因为服务无法解密指令。

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

  • CreateOnlineEvaluationConfig / UpdateOnlineEvaluationConfig— 失败,因为该服务无法通过kms:DescribeKeykms:Decrypt试运行验证呼叫者的访问权限。

  • 在线评估执行-失败,因为该服务无法解密评估员的评分指令。

  • DeleteEvaluator— 成功,因为删除不需要解密赋值器数据。

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

提示

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

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

注意

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