資料集加密
當您在資料集kmsKeyArn上指定 時,服務會使用 S3 伺服器端加密搭配 KMS (SSE-KMS) 來加密所有儲存的範例。這包括草稿和所有發佈版本中的範例。
資料集建立後kmsKeyArn, 是不可變的,您無法變更或移除它。
運作方式
資料集加密使用 S3 SSE-KMS。當服務在 S3 中寫入或讀取資料集內容時,S3 會代表服務呼叫 KMS 來加密或解密資料。服務主體 (bedrock-agentcore.amazonaws.com) 必須在金鑰政策中具有 KMS 許可。
在 API 時間,服務會使用試轉檢查 (正向存取工作階段) 驗證發起人是否具有 KMS 許可。這會立即擷取許可問題,而不是在擷取期間非同步失敗。
AgentCore Evaluations 僅支援對稱加密 KMS 金鑰。KMS 金鑰必須與資料集位於相同的 AWS 區域。
必要的金鑰政策
下列金鑰政策會授予資料集加密所需的最低許可。它包含兩個陳述式:
-
AllowCallerAccess — 授予呼叫
CreateDataset許可以驗證和使用金鑰的 IAM 使用者或角色。服務會在 API 時間執行試轉檢查,以確認發起人具有 KMS 存取權。將111122223333取代為您的帳戶 ID,並將MyDatasetRole取代為管理資料集的 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": "*" } ] }
重要
請勿將 aws:SourceAccount或 aws:SourceArn條件新增至讀取陳述式 (Decrypt、DescribeKey)。資料集下載使用預先簽章的 S3 URLs,而下載用戶端不會傳送來源內容標頭。新增這些條件以讀取操作會導致下載失敗。
將 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 — 在
ValidationExceptionAPI 時間失敗。 -
GetDataset — 失敗,
ValidationException指出 KMS 金鑰已停用或刪除。 -
ListDatasetExamples — 失敗,
ValidationException指出 KMS 金鑰已停用或刪除。 -
DeleteDataset — 成功,因為 S3 物件刪除不需要 KMS 解密。