

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

# 用于 AgentCore 评估的静态加密
<a name="evaluations-encryption"></a>

**注意**  
本页介绍自定义评估器的客户管理密钥加密。有关数据集加密，请参阅[数据集加密](datasets-encryption.md)。

## 加密选项
<a name="evaluations-encryption-options"></a>

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

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

使用客户管理的密钥可以让你更好地控制加密过程，包括：
+ 创建和管理密钥，包括设置密钥策略
+ 按自己的时间表轮换密钥
+ 禁用或删除密钥以控制对加密数据的访问
+ 通过以下方式审核密钥使用情况 Amazon CloudTrail

有关更多信息，请参阅《密钥管理服务开发人员指南》[中的](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)客户管理* Amazon 密钥*。

## AgentCore 评估如何使用客户管理的 KMS 密钥
<a name="evaluations-encryption-how-it-works"></a>

当您在自定义评估器上指定客户管理的密钥时，该服务使用呼叫者的证书（通过[转发访问会话](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#fas)）来加密和解密评估者的指令和评级表。调用者必须对密钥拥有`kms:GenerateDataKey``kms:Decrypt`、和`kms:DescribeKey`权限。

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

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

## 配置客户管理的 KMS 密钥
<a name="evaluations-encryption-configuring"></a>

AgentCore 评估仅支持对称加密 KMS 密钥。KMS 密钥必须与评估者位于同一 Amazon 区域。有关创建对称 KMS 密钥的信息，请参阅密钥管理服务开发人员指南[中的](https://docs.amazonaws.cn/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)创建对称加密 KMS 密钥。* Amazon *

### 配置使用客户管理的 KMS 密钥的权限
<a name="evaluations-encryption-key-policy"></a>

以下关键政策提供了 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:ViaService``aws:bedrock-agentcore:evaluatorArn`加密上下文限制。用您的值替换{{111122223333}}{{MyEvaluationRole}}{{us-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 密钥创建评估器
<a name="evaluations-encryption-creating"></a>

要加密自定义评估器，请在调用[CreateEvaluator](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_CreateEvaluator.html)时指定`kmsKeyArn`参数。

**Example**  

```
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"
        }
      }
    }
  }'
```

```
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']}")
```

### 更改现有评估器的加密配置
<a name="evaluations-encryption-changing"></a>

您可以使用以下方法更改现有评估器的[UpdateEvaluator](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_UpdateEvaluator.html)加密配置：
+  **添加加密 **-在未创建的赋值器`kmsKeyArn`上指定。该服务使用新密钥对指令和评级表进行加密。
+  **旋转密钥 **-指定不同的密钥`kmsKeyArn`。该服务使用旧密钥解密数据，然后使用新密钥重新加密。调用者必须对两个密钥都有权限。如果旧密钥不可用（禁用、删除或缺少权限），更新将失败。

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

### 缩小对客户管理的 KMS 密钥的访问权限
<a name="evaluations-encryption-scoping"></a>

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

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

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

## 监控与 AgentCore 评估的互动 Amazon KMS
<a name="evaluations-encryption-monitoring"></a>

您可以使用 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[中的使用](https://docs.amazonaws.cn/kms/latest/developerguide/logging-using-cloudtrail.html)记录 Amazon KMS API 调用*。

## 密钥不可用时的行为
<a name="evaluations-encryption-key-unavailable"></a>

如果您禁用或删除客户管理的 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 权限的情况下检索评估器元数据（名称、级别、模型配置、状态）。当密钥不可用时，这对于监控和清点工作流程很有用。

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

**注意**  
有关数据集的客户管理密钥加密的信息，请参阅[数据集加密](datasets-encryption.md)。