모델 사용자 지정 작업 및 아티팩트 암호화
Amazon Bedrock은 CreateModelCustomizationJob 작업 또는 콘솔과 함께 훈련 데이터를 사용하여 Amazon Bedrock 파운데이션 모델의 미세 조정 버전인 사용자 지정 모델을 생성합니다. 사용자 지정 모델은 AWS에서 관리하고 저장합니다.
Amazon Bedrock은 사용자가 제공하는 미세 조정 데이터를 Amazon Bedrock 파운데이션 모델을 미세 조정하는 용도로만 사용합니다. Amazon Bedrock은 다른 용도로는 미세 조정 데이터를 사용하지 않습니다. 사용자의 훈련 데이터는 기본 Titan 모델 학습이나 타사 배포를 목적으로 사용되지 않습니다. 사용 타임스탬프, 로깅된 계정 ID, 서비스에서 로깅된 기타 정보 등과 같은 그 밖의 사용 데이터도 모델을 학습시키는 데 사용되지 않습니다.
미세 조정을 위해 사용자가 제공하는 훈련 또는 검증 데이터는 미세 조정 작업이 완료되면 Amazon Bedrock에 저장되지 않습니다.
미세 조정된 모델은 완성된 텍스트를 생성하는 과정에서 일부 미세 조정 데이터를 다시 재생할 수 있습니다. 앱이 어떤 형태로든 미세 조정 데이터를 노출하지 않아야 하는 경우, 먼저 훈련 데이터에서 기밀 데이터를 필터링해야 합니다. 실수로 기밀 데이터를 사용하여 사용자 지정 모델을 이미 만든 경우, 해당 사용자 지정 모델을 삭제하고 훈련 데이터에서 기밀 정보를 필터링한 다음 새 모델을 만들 수 있습니다.
사용자 지정 모델(복사된 모델 포함) 암호화 과정에서 Amazon Bedrock은 두 가지 옵션을 제공합니다.
-
AWS 소유 키 – 기본적으로 Amazon Bedrock은 AWS 소유 키를 사용하여 사용자 지정 모델을 암호화합니다. 사용자는 AWS 소유 키를 확인, 관리 또는 사용하거나 사용을 감사할 수 없습니다. 하지만 데이터를 암호화하는 키를 보호하기 위해 어떤 액션을 수행하거나 어떤 프로그램을 변경할 필요가 없습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS 소유 키 섹션을 참조하십시오.
-
고객 관리형 키 - 사용자가 직접 관리하는 고객 관리형 키로 사용자 지정 모델을 암호화하도록 선택할 수 있습니다. AWS KMS keys에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 관리형 키를 참조하세요.
참고
Amazon Bedrock은 추가 비용 없이 AWS 소유 키를 사용하여 저장 시 암호화를 자동으로 사용 설정합니다. 고객 관리형 키를 사용하는 경우 AWS KMS 요금이 부과됩니다. 요금에 대한 자세한 내용은 AWS Key Management Service 요금
AWS KMS에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서 섹션을 참조하세요.
주제
AWS KMS에서 Amazon Bedrock이 권한 부여를 사용하는 방법
모델 사용자 지정 또는 모델 복사 작업에 대한 사용자 지정 모델을 암호화하기 위해 고객 관리형 키를 지정하는 경우, Amazon Bedrock은 CreateGrant 요청을 AWS KMS에 전송하여 사용자를 대신하여 사용자 지정 모델과 연결된 기본 KMS 권한을 생성합니다. 이 권한 부여를 통해 Amazon Bedrock은 고객 관리형 키에 액세스하고 사용할 수 있습니다. AWS KMS의 권한 부여는 고객 계정의 KMS 키에 대한 Amazon Bedrock 액세스 권한을 부여하는 데 사용됩니다.
다음과 같은 내부 작업에서 고객 관리형 키를 사용하려면 Amazon Bedrock에 기본 권한을 부여해야 합니다.
-
작업을 만들 때 입력한 대칭형 고객 관리형 KMS 키 ID가 유효한지 확인하려면 DescribeKey 요청을 AWS KMS에 전송합니다.
-
GenerateDataKey 및 Decrypt 요청을 AWS KMS에 전송하여 고객 관리형 키로 암호화된 데이터 키를 생성하고 암호화된 데이터 키를 복호화하여 모델 아티팩트를 암호화하는 데 사용할 수 있도록 합니다.
-
모델 사용자 지정, 모델 복사 또는 프로비저닝된 처리량 생성을 비동기 실행할 수 있도록 AWS KMS에 CreateGrant 요청을 전송하여 위 작업(
DescribeKey
,GenerateDataKey
,Decrypt
)의 하위 집합을 사용해 범위가 축소된 보조 권한을 생성합니다. -
Amazon Bedrock은 권한 생성 중에 사용 중지 위탁자를 지정하므로 서비스가 RetireGrant 요청을 보낼 수 있습니다.
사용자는 고객 관리형 AWS KMS 키에 대한 전체 액세스 권한을 가집니다. AWS Key Management Service 개발자 안내서의 권한 부여 사용 중지 및 취소에 안내된 단계에 따라 권한 부여에 대한 액세스를 취소하거나, 키 정책을 수정하여 언제든지 고객 관리형 키에 대한 서비스의 액세스 권한을 제거할 수 있습니다. 이렇게 하면 Amazon Bedrock이 키로 암호화된 사용자 지정 모델에 액세스할 수 없습니다.
사용자 지정 모델에 대한 기본 및 보조 권한 부여의 수명 주기
-
기본 권한 부여는 수명이 길며 연결된 사용자 지정 모델을 계속 사용하는 한 활성 상태로 유지됩니다. 사용자 지정 모델을 삭제하면 해당 기본 권한 부여가 자동으로 사용 중지됩니다.
-
보조 권한 부여는 수명이 짧습니다. Amazon Bedrock이 고객을 대신하여 수행하는 작업이 완료되는 즉시 자동으로 사용 중지됩니다. 예를 들어, 모델 복사 작업이 완료되면 Amazon Bedrock이 복사된 사용자 지정 모델을 암호화하도록 허용한 보조 권한 부여는 즉시 사용 중지됩니다.
고객 관리형 키를 만드는 방법과 키 정책을 연결하는 방법
직접 만들고 관리하는 키로 AWS 리소스를 암호화하려면 다음과 같은 일반적인 단계를 수행합니다.
-
(사전 조건) IAM 역할에 CreateKey 작업에 대한 권한이 있어야 합니다.
-
AWS KMS 콘솔 또는 CreateKey 작업을 사용하여 키 생성 단계에 따라 고객 관리형 키를 만듭니다.
-
키를 만들면 키를 사용해야 하는 작업에 사용할 수 있는 키에 대한
Arn
이 반환됩니다(예: 모델 사용자 지정 작업을 제출하는 작업이나 모델 추론을 실행하는 작업). -
필요한 권한을 사용하여 키 정책을 만들고 키에 연결합니다. 키 정책을 만들려면 AWS Key Management Service 개발자 안내서의 키 정책 생성에 안내된 단계를 따르세요.
사용자 지정 및 복사된 모델에 대한 권한 및 키 정책
KMS 키를 만든 후 키 정책을 연결합니다. 키 정책은 고객 관리형 키에 연결하여 액세스 권한을 제어하는 리소스 기반 정책입니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 생성할 때 키 정책을 지정할 수 있습니다. 키 정책은 언제든지 수정할 수 있지만 변경 사항이 AWS KMS 전체에 적용되기까지 약간의 시간이 필요할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 관리형 키에 대한 액세스 관리를 참조하십시오.
다음 KMS 작업은 사용자 지정 및 복사된 모델을 암호화하는 키에 사용됩니다.
-
kms:CreateGrant – 권한 부여 작업을 통해 Amazon Bedrock 서비스 위탁자가 지정된 KMS 키에 액세스할 수 있도록 하여 고객 관리형 키에 대한 권한을 만듭니다. 권한 부여에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 Grants in AWS KMS를 참조하세요.
참고
또한 Amazon Bedrock은 사용 중지 위탁자를 설정하고 더 이상 필요하지 않은 권한 부여를 자동으로 사용 중지합니다.
-
kms:DescribeKey - Amazon Bedrock이 키를 검증할 수 있도록 고객 관리형 키 세부 정보를 제공합니다.
-
kms:GenerateDataKey – Amazon Bedrock이 사용자 액세스를 검증할 수 있도록 고객 관리형 키 세부 정보를 제공합니다. Amazon Bedrock은 사용자 지정 모델과 생성된 사이퍼텍스트를 함께 저장하여 사용자 지정 모델 사용자에 대한 추가적인 검증 검사에 사용합니다.
-
kms:Decrypt - 저장된 사이퍼텍스트를 복호화하여 역할이 사용자 지정 모델을 암호화하는 KMS 키에 적절하게 액세스할 수 있는지 확인합니다.
보안 모범 사례로 Amazon Bedrock 서비스에 대한 키 액세스를 제한하려면 kms:ViaService 조건 키를 포함하는 것이 좋습니다.
키에는 하나의 키 정책만 연결할 수 있지만, 정책의 Statement
필드 목록에 문을 추가하여 키 정책에 여러 문을 연결할 수 있습니다.
다음 문은 사용자 지정 및 복사된 모델 암호화와 관련이 있습니다.
고객 관리형 키를 사용하여 사용자 지정 또는 복사된 모델을 암호화하려면 키 정책에 다음 문을 포함하여 모델의 암호화를 허용합니다. Principal
필드에서 키 암호화 및 복호화를 허용할 계정을 AWS
하위 필드가 매핑되는 목록에 추가합니다. kms:ViaService
조건 키를 사용하는 경우 각 리전에 행을 추가하거나 ${region}
대신 *
를 사용하여 Amazon Bedrock을 지원하는 모든 리전을 허용할 수 있습니다.
{ "Sid": "PermissionsEncryptDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } }
KMS 키로 암호화된 모델에 대한 액세스를 허용하려면 키 정책에 다음 문을 포함하여 키의 복호화를 허용합니다. Principal
필드에서 키 복호화를 허용할 계정을 AWS
하위 필드가 매핑되는 목록에 추가합니다. kms:ViaService
조건 키를 사용하는 경우 각 리전에 행을 추가하거나 ${region}
대신 *
를 사용하여 Amazon Bedrock을 지원하는 모든 리전을 허용할 수 있습니다.
{ "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } }
만들어야 하는 키 정책에 대해 알아보려면 해당하는 사용 사례의 섹션을 확장하세요.
KMS 키로 사용자 지정한 모델을 암호화하려는 경우 해당 키의 키 정책은 사용 사례에 따라 달라집니다. 해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.
사용자 지정 모델을 간접적으로 호출할 역할이 모델을 사용자 지정할 역할과 동일한 경우 모델 암호화의 문만 있으면 됩니다. 다음 정책 템플릿의 Principal
필드에서 사용자 지정 모델을 사용자 지정하고 간접 호출하도록 허용할 계정을 AWS
하위 필드가 매핑되는 목록에 추가합니다.
{ "Version": "2012-10-17", "Id": "
PermissionsCustomModelKey
", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } } ] }
사용자 지정 모델을 간접적으로 호출할 역할이 모델을 사용자 지정할 역할과 서로 다른 경우 모델 암호화 및 암호화된 모델에 대한 액세스 허용의 문이 모두 필요합니다. 아래 단계에 따라 정책 템플릿의 문을 수정합니다.
-
첫 번째 문은 키의 암호화 및 복호화를 허용합니다.
Principal
필드에서 사용자 지정 모델을 사용자 지정하도록 허용할 계정을AWS
하위 필드가 매핑되는 목록에 추가합니다. -
두 번째 문은 키의 복호화만 허용합니다.
Principal
필드에서 사용자 지정 모델에 대한 간접 호출만 허용하려는 계정을AWS
하위 필드가 매핑되는 목록에 추가합니다.
{ "Version": "2012-10-17", "Id": "
PermissionsCustomModelKey
", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } } ] }
소유한 모델이나 공유된 모델을 복사할 때 최대 2개의 키 정책을 관리해야 할 수 있습니다.
KMS 키를 사용하여 복사된 모델을 암호화하려는 경우 해당 키의 키 정책은 사용 사례에 따라 달라집니다. 해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.
복사된 모델을 간접적으로 호출할 역할이 모델 복사본을 만들 역할과 동일한 경우 모델 암호화의 문만 있으면 됩니다. 다음 정책 템플릿의 Principal
필드에서 복사된 모델을 복사하고 간접 호출할 수 있도록 허용할 계정을 AWS
하위 필드가 매핑되는 목록에 추가합니다.
{ "Version": "2012-10-17", "Id": "
PermissionsCopiedModelKey
", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } } ] }
복사된 모델을 간접적으로 호출할 역할이 모델 복사본을 만들 역할과 다른 경우 모델 암호화 및 암호화된 모델에 대한 액세스 허용의 문이 모두 필요합니다. 아래 단계에 따라 정책 템플릿의 문을 수정합니다.
-
첫 번째 문은 키의 암호화 및 복호화를 허용합니다.
Principal
필드에서 복사된 모델을 만들도록 허용할 계정을AWS
하위 필드가 매핑되는 목록에 추가합니다. -
두 번째 문은 키의 복호화만 허용합니다.
Principal
필드에서 복사된 모델에 대한 간접 호출만 허용하려는 계정을AWS
하위 필드가 매핑되는 목록에 추가합니다.
{ "Version": "2012-10-17", "Id": "
PermissionsCopiedModelKey
", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } } ] }
복사할 소스 모델이 KMS 키로 암호화된 경우, 소스 모델을 암호화하는 키의 키 정책에 암호화된 모델에 대한 액세스 허용의 문을 연결합니다. 이 문을 사용하면 모델 복사 역할이 소스 모델을 암호화하는 키를 복호화할 수 있습니다. 다음 정책 템플릿의 Principal
필드에서 소스 모델을 복사하도록 허용할 계정을 AWS
하위 필드가 매핑되는 목록에 추가합니다.
{ "Version": "2012-10-17", "Id": "
PermissionsSourceModelKey
", "Statement": [ { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}
:user/${role}
" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}
.amazonaws.com" ] } } } ] }
Amazon Bedrock 서비스의 암호화 키 모니터링
Amazon Bedrock 리소스와 함께 AWS KMS 고객 관리형 키를 사용하는 경우, AWS CloudTrail 또는 Amazon CloudWatch Logs를 사용하여 Amazon Bedrock이 AWS KMS로 보내는 요청을 추적할 수 있습니다.
다음은 CreateGrant가 Amazon Bedrock에서 기본 권한 부여를 만들기 위해 직접 호출한 KMS 작업을 모니터링하는 AWS CloudTrail 이벤트의 예제입니다.
{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01", "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelCopy/SampleUser01", "accountId": "111122223333", "accessKeyId": "EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/RoleForModelCopy", "accountId": "111122223333", "userName": "RoleForModelCopy" }, "attributes": { "creationDate": "2024-05-07T21:46:28Z", "mfaAuthenticated": "false" } }, "invokedBy": "bedrock.amazonaws.com" }, "eventTime": "2024-05-07T21:49:44Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "bedrock.amazonaws.com", "userAgent": "bedrock.amazonaws.com", "requestParameters": { "granteePrincipal": "bedrock.amazonaws.com", "retiringPrincipal": "bedrock.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "operations": [ "Decrypt", "CreateGrant", "GenerateDataKey", "DescribeKey" ] }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
훈련, 검증 및 출력 데이터의 암호화
Amazon Bedrock을 사용하여 모델 사용자 지정 작업을 실행할 경우, 입력 파일을 Amazon S3 버킷에 저장합니다. 작업이 완료되면 Amazon Bedrock은 작업을 만들 때 지정한 S3 버킷에 출력 지표 파일을 저장하고, 그에 따른 사용자 지정 모델 아티팩트를 AWS에서 제어하는 S3 버킷에 저장합니다.
출력 파일은 S3 버킷의 암호화 구성으로 암호화됩니다. S3 버킷을 설정하는 방법에 따라 SSE-S3 서버 측 암호화 또는 AWS KMS SSE-KMS 암호화로 암호화됩니다.