데이터 세트 암호화
데이터 세트kmsKeyArn에를 지정하면 서비스는 KMS를 사용한 S3 서버 측 암호화(SSE-KMS)를 사용하여 저장된 모든 예제를 암호화합니다. 여기에는 초안의 예와 게시된 모든 버전이 포함됩니다.
데이터 세트 생성 후에는 kmsKeyArn를 변경할 수 없으며 변경하거나 제거할 수 없습니다.
작동 방식
데이터 세트 암호화는 S3 SSE-KMS를 사용합니다. 서비스가 S3에서 데이터 세트 콘텐츠를 쓰거나 읽을 때 S3는 서비스를 대신하여 KMS를 호출하여 데이터를 암호화하거나 해독합니다. 서비스 보안 주체(bedrock-agentcore.amazonaws.com)는 키 정책에 KMS 권한이 있어야 합니다.
API 시간에 서비스는 직접 실행 검사(Forward Access Sessions)를 사용하여 호출자에게 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": "*" } ] }
중요
읽기 문(Decrypt, )에 aws:SourceAccount 또는 aws:SourceArn 조건을 추가하지 마십시오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 - API
ValidationException시간에와 함께 실패합니다. -
GetDataset - KMS 키가 비활성화 또는 삭제되었음을
ValidationException나타내는에 실패합니다. -
ListDatasetExamples - KMS 키가 비활성화 또는 삭제되었음을
ValidationException나타내는가 실패합니다. -
DeleteDataset - S3 객체 삭제 시 KMS 복호화가 필요하지 않기 때문에 성공합니다.