用于 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:GenerateDataKey和kms:Decrypt权限(限定范围)kms:ViaService和aws: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权限。按来源账户和来源 ARNaws:SourceArn() 划分范围,以防止混淆副手攻击。111122223333用您的地区us-east-1和账户 ID 替换和。
使用客户托管的 KMS 密钥创建评估器
要加密自定义赋值器,请在调用CreateEvaluator时指定kmsKeyArn参数。
例
更改现有评估器的加密配置
您可以使用以下方法更改现有赋值器的UpdateEvaluator加密配置:
-
添加加密-在没有加密的情况下创建的赋值器
kmsKeyArn上指定。该服务使用新密钥对指令和评级量表进行加密。 -
旋转密钥-指定不同的密钥
kmsKeyArn。该服务使用旧密钥解密数据,并使用新密钥对其进行重新加密。呼叫者必须拥有两个密钥的权限。如果旧密钥不可用(已禁用、已删除或缺少权限),则更新将失败。
注意
一旦添加了客户托管密钥加密,就无法将其从评估器中删除。
缩小对客户托管的 KMS 密钥的访问权限
您可以使用加密上下文来缩小对客户托管密钥的访问范围。 AgentCore 评估包括所有 KMS 操作中的以下加密上下文:
{ "aws:bedrock-agentcore:evaluatorArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:evaluator/evaluator-id" }
您可以在密钥策略条件中使用此加密上下文,将 KMS 操作仅限于特定的评估者,如上面示例密钥策略中的AllowCallerCryptoOps语句所示。请注意,AllowServicePrincipalDecrypt它aws: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:DescribeKey和kms:Decrypt试运行验证呼叫者的访问权限。 -
在线评估执行-失败,因为该服务无法解密评估员的评分指令。
-
DeleteEvaluator— 成功,因为删除不需要解密赋值器数据。
-
DeleteOnlineEvaluationConfig— 成功是因为删除不需要 KMS 访问权限。
提示
使用 includedData=METADATA_ONLY on 可在 GetEvaluator 不需要 KMS 权限的情况下检索评估者元数据(名称、级别、模型配置、状态)。当密钥不可用时,这对于监控和清点工作流程非常有用。
要恢复访问权限,请重新启用密钥或更新密钥策略以授予所需权限。
注意
有关数据集的客户托管密钥加密的信息,请参阅数据集加密。