本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置包加密
当您在配置包kmsKeyArn上指定时,该服务使用信封加密对组件配置(系统提示、工具描述和其他配置内容)进行加密。所有其他捆绑包元数据(名称、描述、版本 ID、时间戳)仍使用 AWS 自有密钥进行加密。
工作原理
配置包加密使用带有呼叫者凭据的信封加密。当您使用创建或更新包时kmsKeyArn,该服务使用您的证书(通过转发访问会话)从 KMS 生成数据加密密钥 (DEK)。该服务使用该 DEK 在本地加密组件配置,然后将加密的 DEK AES-GCM 与捆绑包一起存储。当您检索捆绑包时,该服务使用您的证书解密 DEK 并解密组件。
调用者必须对密钥拥有kms:GenerateDataKeykms:Decryptkms:DescribeKey、和kms:ReEncrypt*权限。
AgentCore 优化仅支持对称加密 KMS 密钥。KMS 密钥必须与配置包位于同一 AWS 区域。
配置使用客户管理的 KMS 密钥的权限
以下密钥策略提供了配置包加密所需的最低权限。该策略包含两条语句:
-
AllowCallerAccess— 允许 IAM 用户或角色通过验证密钥
DescribeKey。 -
AllowCallerCryptoOps— 允许 IAM 用户或角色根据加密上下文生成数据密钥、解密和重新加密(用于密钥轮换)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowCallerCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*" } } } ] }
该政策包含以下声明:
-
AllowCallerAccess— 授予 IAM 角色在包创建或更新时进行密钥验证的
kms:DescribeKey权限。111122223333替换为您的账户 IDMyConfigBundleRole以及管理配置包的 IAM 角色或用户。 -
AllowCallerCryptoOps— 授予受
aws:bedrock-agentcore:configurationBundleArn加密上下文限制的 IAM 角色kms:GenerateDataKey和kms:ReEncrypt*权限。kms:Decrypt密钥轮换(更改现有捆绑包上的 KMS 密钥)需要该kms:ReEncrypt*权限。将111122223333MyConfigBundleRole、和us-east-1替换为您的值。要允许访问您账户中的所有配置包,请使用通配StringLike符和:。arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*
缩小对客户管理的 KMS 密钥的访问权限
您可以使用加密上下文来缩小对客户管理密钥的访问范围。 AgentCore 优化在所有 KMS 操作中包括以下加密上下文:
{ "aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/bundle-id" }
您可以在密钥策略条件下使用此加密上下文将 KMS 操作限制在特定的配置包中,如上面示例密钥策略中的AllowCallerCryptoOps语句所示。
使用客户管理的 KMS 密钥创建配置包
要加密配置包,请在调用时指定kmsKeyArn参数CreateConfigurationBundle。
例
更改现有捆绑包的加密配置
您可以使用以下方法更改现有捆绑包的加密配置 UpdateConfigurationBundle:
-
添加加密 -在没有加密的情况下创建的捆绑包
kmsKeyArn上指定。该服务生成新的 DEK 并对组件配置进行加密。 -
旋转密钥 -指定不同的密钥
kmsKeyArn。该服务使用将现有 DEK 从旧密钥重新打包到新密钥。kms:ReEncrypt调用者必须对两个密钥都有权限。如果旧密钥不可用(禁用、删除或缺少权限),更新将失败。
注意
一旦添加了客户管理的密钥加密,就无法将其从配置包中删除。
监控配置包的 KMS 使用情况
配置包 KMS 操作会显示以下 CloudTrail 事件名称:
-
GenerateDataKey— 使用客户管理的密钥创建捆绑包或向现有捆绑包添加加密时。该encryptionContext字段包含aws:bedrock-agentcore:configurationBundleArn。 -
Decrypt— 检索捆绑包内容 (GetConfigurationBundle、 GetConfigurationBundleVersion) 或更新加密包时。 -
ReEncrypt— 通过 UpdateConfigurationBundle. 在现有捆绑包上轮换 KMS 密钥时 -
DescribeKey— 在捆绑包创建或更新时验证密钥时。
密钥不可用时的行为
如果您禁用或删除配置包使用的客户管理的 KMS 密钥:
-
CreateConfigurationBundle— 使用进行验证时失败
ValidationException。 -
UpdateConfigurationBundle— 失败,因为该服务无法解密现有 DEK 以重新加密新组件。密钥轮换也失败,因为旧密钥无法重新打包。
-
GetConfigurationBundle / GetConfigurationBundleVersion— 由于服务无法解密 DEK 或组件配置而失败。
-
ListConfigurationBundles / ListConfigurationBundleVersions— 之所以成功,是因为清单仅返回元数据,不需要 KMS 操作。
-
DeleteConfigurationBundle— 成功是因为删除不需要解密捆绑数据。
要恢复访问权限,请重新启用密钥或更新密钥策略以授予所需的权限。