기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
암호화 컨텍스트
참고
대칭 암호화 KMS 키를 사용하는 모든 AWS KMS 암호화 작업은 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 선택적 비비밀 키-값 페어 세트인 암호화 컨텍스트 를 수락합니다. 의 Encrypt
작업에 암호화 컨텍스트를 삽입 AWS KMS 하여 복호화 호출의 권한 부여 및 감사 가능성을 개선할 수 있습니다 AWS KMS API. 는 암호화 컨텍스트를 추가 인증된 데이터(AAD)로 AWS KMS 사용하여 인증된 암호화를 지원합니다. 암호화 컨텍스트는 사이퍼텍스트에 암호적으로 바인딩되므로 데이터를 복호화하는 데 동일한 암호화 컨텍스트가 필요합니다.
암호화 컨텍스트는 암호가 아니며 암호화되지 않습니다. AWS CloudTrail 로그에 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있습니다. 암호화 컨텍스트에 민감한 정보가 포함되어서는 안 됩니다. 암호화 컨텍스트가 암호화 또는 해독되는 데이터를 설명하는 것이 좋습니다. 예를 들어 파일을 암호화하는 경우, 파일 경로의 일부를 암호화 컨텍스트로 사용할 수 있습니다.
"encryptionContext": { "department": "10103.0" }
예를 들어 Amazon Elastic Block Store(Amazon EBS) CreateSnapshot 작업으로 생성된 볼륨 및 스냅샷을 암호화할 때 Amazon은 볼륨 ID를 암호화 컨텍스트 값으로 EBS 사용합니다.
"encryptionContext": { "aws:ebs:id": "
vol-abcde12345abc1234
" }
암호화 컨텍스트를 사용하여 계정 AWS KMS keys 에서 에 대한 액세스를 구체화하거나 제한할 수도 있습니다. 암호화 컨텍스트를 권한 부여의 제약 조건으로 그리고 정책문의 조건으로 사용할 수 있습니다.
암호화 컨텍스트를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 알아보려면 AWS 보안 블로그의 AWS Key Management Service 및 를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 참조하세요 EncryptionContext
암호화 컨텍스트 관련 추가 내용.
암호화 컨텍스트 규칙
AWS KMS 는 암호화 컨텍스트 키 및 값에 대해 다음 규칙을 적용합니다.
-
암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS 는 이를 문자열로 해석합니다.
-
암호화 컨텍스트의 키와 값에는 유니코드 문자가 포함될 수 있습니다. 암호화 컨텍스트에 키 정책 또는 IAM 정책에서 허용되지 않는 문자가 포함된 경우 kms:EncryptionContext:context-key 및 와 같은 정책 조건 키에서 암호화 컨텍스트를 지정할 수 없습니다kms:EncryptionContextKeys. 키 정책 문서 규칙에 대한 자세한 내용은 키 정책 형식 섹션을 참조하세요. IAM 정책 문서 규칙에 대한 자세한 내용은 IAM 사용 설명서의 IAM 이름 요구 사항을 참조하세요.
정책의 암호화 컨텍스트
암호화 컨텍스트는 주로 무결성 및 신뢰성을 확인하는 데 사용됩니다. 그러나 암호화 컨텍스트를 사용하여 키 정책 및 IAM 정책 AWS KMS keys 에서 대칭 암호화에 대한 액세스를 제어할 수도 있습니다.
kms:EncryptionContext: 및 kms:EncryptionContextKeys 조건 키는 요청에 특정 암호화 컨텍스트 키 또는 키-값 페어가 포함된 경우에만 권한을 허용(또는 거부)합니다.
예를 들어, 다음 키 정책 문을 사용하면 RoleForExampleApp
역할이 Decrypt
작업에 KMS 키를 사용할 수 있습니다. 이 정책 문은 kms:EncryptionContext:context-key
조건 키를 사용하여 요청의 암호화 컨텍스트가 AppName:ExampleApp
암호화 컨텍스트 쌍을 포함하는 경우에만 이 권한을 허용합니다.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
이러한 암호화 컨텍스트 키에 대한 자세한 내용은 에 대한 조건 키 AWS KMS 섹션을 참조하세요.
권한 부여의 암호화 컨텍스트
권한 부여를 생성할 때 권한 부여 권한에 대한 조건을 설정하는 권한 부여 제약 조건을 포함할 수 있습니다. 는 두 개의 권한 부여 제약 조건을 AWS KMS 지원EncryptionContextEquals
하며, 두 제약 조건 EncryptionContextSubset
모두 암호화 작업 요청에 암호화 컨텍스트를 포함합니다. 이러한 권한 부여 제약 조건을 사용할 때 암호화 작업에 대한 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 요구 사항을 충족하는 경우에만 권한이 유효합니다.
예를 들어 GenerateDataKey 작업을 허용하는 EncryptionContextEquals
권한 부여에 권한 부여 제약 조건을 추가할 수 있습니다. 이 제약 조건에서 권한 부여는 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 암호화 컨텍스트와 대소문자 구분이 일치하는 경우에만 작업을 허용합니다.
$
aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}
피부여자 보안 주체의 다음과 같은 요청은 EncryptionContextEquals
제약 조건을 충족합니다.
aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test
$
권한 부여 제약 조건에 대한 자세한 내용은 권한 부여 제약 사용 섹션을 참조하세요. 권한 부여에 대한 자세한 내용은 의 권한 부여 AWS KMS 섹션을 참조하세요.
암호화 컨텍스트 로깅
AWS KMS 는 AWS CloudTrail 를 사용하여 암호화 컨텍스트를 로깅하므로 액세스한 KMS 키와 데이터를 확인할 수 있습니다. 로그 항목에는 로그 항목의 암호화 컨텍스트에서 참조하는 특정 데이터를 암호화하거나 해독하는 데 사용된 KMS 키가 정확히 표시됩니다.
중요
암호화 컨텍스트가 로깅되기 때문에 민감한 정보가 포함될 수 없습니다.
암호화 컨텍스트 저장
Decrypt
또는 ReEncrypt
작업 호출 시 암호화 컨텍스트 사용을 간소화하기 위해 암호화된 데이터와 함께 암호화 컨텍스트를 저장할 수 있습니다. 암호화 또는 해독을 위해 필요할 때 전체 암호화 컨텍스트를 만드는 데 도움이 되는 암호화 컨텍스트만 저장하는 것이 좋습니다.
예를 들어 암호화 컨텍스트가 파일의 정규화된 경로인 경우 해당 경로의 일부만 암호화된 파일 내용과 함께 저장합니다. 그런 다음 전체 암호화 컨텍스트가 필요할 때 저장된 조각으로부터 다시 구성합니다. 파일 이름을 변경하거나 다른 위치로 이동하는 등 파일을 변조하면 암호화 컨텍스트 값이 변경되고 해독 요청이 실패합니다.