암호화 컨텍스트 - AWS Key Management Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

암호화 컨텍스트

참고

비대칭 KMS 키 또는 키 를 사용하는 암호화 작업에서는 암호화 컨텍스트를 지정할 수 없습니다HMACKMS. 비대칭 알고리즘과 MAC 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

대칭 암호화 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 작업 호출 시 암호화 컨텍스트 사용을 간소화하기 위해 암호화된 데이터와 함께 암호화 컨텍스트를 저장할 수 있습니다. 암호화 또는 해독을 위해 필요할 때 전체 암호화 컨텍스트를 만드는 데 도움이 되는 암호화 컨텍스트만 저장하는 것이 좋습니다.

예를 들어 암호화 컨텍스트가 파일의 정규화된 경로인 경우 해당 경로의 일부만 암호화된 파일 내용과 함께 저장합니다. 그런 다음 전체 암호화 컨텍스트가 필요할 때 저장된 조각으로부터 다시 구성합니다. 파일 이름을 변경하거나 다른 위치로 이동하는 등 파일을 변조하면 암호화 컨텍스트 값이 변경되고 해독 요청이 실패합니다.