View a markdown version of this page

資料集加密 - Amazon Bedrock AgentCore

資料集加密

當您在資料集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:SourceAccountaws:SourceArn條件新增至讀取陳述式 (DecryptDescribeKey)。資料集下載使用預先簽章的 S3 URLs,而下載用戶端不會傳送來源內容標頭。新增這些條件以讀取操作會導致下載失敗。

111122223333 取代為您的 帳戶 ID,並將 us-east-1 取代為您的 AWS 區域。若要限定特定資料集的範圍,請以資料集 ID 取代萬用字元:arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id

使用客戶受管 KMS 金鑰建立資料集

呼叫 時指定 kmsKeyArn 參數CreateDataset

範例
AgentCore CLI
  1. 若要建立加密的資料集,請在新增資料集--kms-key-arn時傳遞 ,然後執行 agentcore deploy。將 KMS 金鑰 ARN 取代為您自己的金鑰 ARN。

    agentcore add dataset --name encrypted_dataset \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" # Add your scenarios to agentcore/datasets/encrypted_dataset.jsonl, then run agentcore deploy. agentcore deploy
AgentCore SDK
  1. from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-east-1") ds = client.create_dataset_and_wait( datasetName="encrypted_dataset", schemaType="AGENTCORE_EVALUATION_PREDEFINED_V1", kmsKeyArn="arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", source={ "inlineExamples": { "examples": [ {"scenario_id": "TC-01", "turns": [{"input": "Hello"}]} ] } }, )
AWS SDK
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.create_dataset( datasetName='encrypted_dataset', schemaType='AGENTCORE_EVALUATION_PREDEFINED_V1', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', source={ 'inlineExamples': { 'examples': [ {'scenario_id': 'TC-01', 'turns': [{'input': 'Hello'}]} ] } } )
AWS CLI
  1. aws bedrock-agentcore-control create-dataset \ --dataset-name "encrypted_dataset" \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --source '{"inlineExamples": {"examples": [{"scenario_id": "TC-01", "turns": [{"input": "Hello"}]}]}}'

監控資料集的 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 解密。