本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据集加密
当您在数据集kmsKeyArn上指定时,该服务使用带有 KMS () SSE-KMS 的 S3 服务器端加密来加密所有存储的示例。这包括草稿和所有已发布版本中的示例。
创建数据集后kmsKeyArn是不可变的——您无法对其进行更改或删除。
工作原理
数据集加密使用 S3 SSE-KMS。当该服务在 S3 中写入或读取数据集内容时,S3 会代表该服务调用 KMS 来加密或解密数据。服务主体 (bedrock-agentcore.amazonaws.com) 必须在密钥策略中拥有 KMS 权限。
在 API 时,该服务使用试运行检查(转发访问会话)来验证调用者是否具有 KMS 权限。这样可以立即捕获权限问题,而不是在摄取期间异步失败。
AgentCore 评估仅支持对称加密 KMS 密钥。KMS 密钥必须与数据集位于同一 AWS 区域。
必需的密钥政策
以下密钥策略授予数据集加密所需的最低权限。它包括两个语句:
-
AllowCallerAccess— 向调用的 IAM 用户或角色
CreateDataset授予验证和使用密钥的权限。该服务在 API 时执行试运行检查,以验证调用方具有 KMS 访问权限。111122223333替换为您的账户 IDMyDatasetRole以及管理数据集的 IAM 角色或用户。 -
AllowAgentCoreDatasetAccess— 向 AgentCore 服务主体授予在 S3 中加密和解密数据集内容的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetAccess", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
注意
这是最低政策。有关推荐的安全条件,请参阅缩小访问缩小访问范围范围。
缩小访问范围
您可以添加条件来限制何时可以使用密钥。对于数据集,该服务通过 KMS 写入操作 (GenerateDataKey) 发送以下上下文:
-
aws:SourceAccount— 拥有数据集的 AWS 账户 ID。 -
aws:SourceArn— 正在加密的数据集的 ARN。 -
kms:EncryptionContext:aws:bedrock-agentcore:datasetArn— 数据集 ARN 作为加密上下文。
以下策略将权限分为写入(条件)和读取(无条件):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetWrite", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*", "kms:EncryptionContext:aws:bedrock-agentcore:datasetArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*" } } }, { "Sid": "AllowAgentCoreDatasetRead", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
重要
不要在读取语句 (Decrypt,DescribeKey) 中添加aws:SourceAccount或aws:SourceArn条件。数据集下载使用预签名的 S3 URL,下载客户端不发送源上下文标头。将这些条件添加到读取操作会导致下载失败。
111122223333替换为您的账户 ID 和us-east-1您所在 AWS 的地区。要将范围限定为特定数据集,请将通配符替换为数据集 ID: arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id。
使用客户管理的 KMS 密钥创建数据集
调用时指定kmsKeyArn参数CreateDataset:
例
监控数据集的 KMS 使用情况
数据集 KMS 操作会显示以下 CloudTrail 事件名称:
-
GenerateDataKey— 创建数据集、添加示例、更新示例或发布版本时。该encryptionContext字段包含aws:bedrock-agentcore:datasetArn。 -
Decrypt— 读取数据集内容 (GetDataset、 ListDatasetExamples) 或在预签名 URL 下载期间。 -
DescribeKey— 在创建数据集时验证密钥时。
密钥不可用时的行为
如果您禁用或删除数据集使用的客户管理的 KMS 密钥:
-
CreateDataset— 使用进行验证时失败
ValidationException。 -
AddDatasetExamples, UpdateDatasetExamples, CreateDatasetVersion —
ValidationException在 API 时失败。 -
GetDataset— 无法
ValidationException指示 KMS 密钥已禁用或删除。 -
ListDatasetExamples— 无法
ValidationException指示 KMS 密钥已禁用或删除。 -
DeleteDataset— 成功,因为 S3 对象删除不需要 KMS 解密。