AWS Key Management Service 개념 - AWS Key Management Service

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

AWS Key Management Service 개념

AWS Key Management Service(AWS KMS)의 기본 용어와 개념, 어떤 상호 작용을 통해 데이터를 보호하는지 알아봅니다.

고객 마스터 키 (CMKs)

고객 마스터 키는 AWS KMS의 기본 리소스입니다.

고객 마스터 키()은 CMK의 논리적 표현입니다.마스터 키 에는 키 ID, 생성 날짜, 설명 및 키 상태와 같은 메타데이터가 포함됩니다.CMK 에는 데이터를 암호화하고 해독하는 데 사용되는 키 구성 요소도 포함되어 있습니다.CMK

AWS KMS는 대칭 및 비대칭 CMKs를 지원합니다. 대칭 CMK는 암호화 및 암호 해독에 사용되는 256비트 키를 나타냅니다. 비대칭 CMK는 암호화 및 암호 해독 또는 서명 및 확인에 사용되는(둘 모두에 사용할 수는 없음) RSA 키 페어 또는 서명 및 확인에 사용되는 타원 곡선(ECC) 키 페어를 나타냅니다. 대칭 및 비대칭 CMKs에 대한 자세한 내용은 대칭 및 비대칭 키 사용 단원을 참조하십시오.

CMKs는 AWS KMS에서 생성됩니다. 대칭 CMKs와 비대칭 CMKs의 프라이빗 키는 절대로 암호화되지 않은 상태로 AWS KMS를 벗어나지 않습니다. 를 관리하려면 CMK 또는 AWS Management 콘솔 APIAWS KMS를 사용할 수 있습니다. 암호화 작업CMK에서 를 사용하려면 API를 사용해야 합니다.AWS KMS 이 전략은 데이터 키와 다릅니다. AWS KMS는 데이터 키를 저장, 관리 또는 추적하지 않습니다. AWS KMS 밖에서 이들을 사용해야 합니다.

기본적으로 AWS KMS는 CMK에 대한 키 구성 요소를 생성합니다. 이 키 구성 요소를 추출, 내보내기, 보기 또는 관리할 수 없습니다. 또한 이 키 구성 요소를 삭제할 수 없으며 를 삭제CMK해야 합니다. 그러나 자체 키 구성 요소를 로 가져오거나CMK 사용자 지정 키 스토어와 연결된 CMK 클러스터에서 AWS CloudHSM에 대한 키 구성 요소를 생성할 수 있습니다.AWS KMS

생성 및 관리에 대한 자세한 내용은 CMKs 단원을 참조하십시오.시작하기 CMKs 사용에 대한 자세한 내용은 AWS Key Management Service API Reference를 참조하십시오.

AWS KMS는 고객 관리형 CMKs, CMKs 관리형 AWS 및 CMKs 소유 AWS의 세 가지 CMKs 유형을 지원합니다.

유형CMK 메타데이터를 볼 수 있음CMK 관리 가능CMK 내 AWS 계정에서만 사용 자동 회전
고객 관리형 CMK 선택 사항입니다. 365일(1년)마다.
AWS 관리형 CMK 아니요 필수. 1,095일(3년)마다.
AWS 소유 CMK 아니요 아니요 아니요 다양

고객 관리형 CMKs를 AWS 관리형 CMKs와 구별하려면 KeyManagerDescribeKey 작업 응답에서 필드를 사용합니다. 고객 관리형 CMKs의 경우 KeyManager 값은 Customer입니다. 관리형 AWS의 경우 CMKs 값은 KeyManager입니다.AWS

와 통합되는 AWSAWS KMS 서비스는 지원에 차이가 있습니다.CMKs 일부 AWS 서비스는 기본적으로 AWS 소유 CMK 또는 AWS 관리형 CMK를 사용하여 데이터를 암호화합니다. 다른 AWS 서비스는 선택한 고객 관리형 CMK로 데이터를 암호화할 수 있는 서비스를 제공합니다. 또한 다른 AWS 서비스는 CMKs 소유 AWS의 용이성, CMK 관리형 AWS의 가시성, 고객 관리형 CMK의 제어 기능을 지원하기 위해 모든 유형의 CMK를 지원합니다. AWS 서비스에서 제공하는 암호화 옵션에 대한 자세한 내용은 해당 서비스에 대한 사용 설명서 또는 개발자 안내서의 저장 데이터 암호화 주제를 참조하십시오.

고객 관리형 CMKs

고객 관리형 CMKs는 사용자가 생성, 소유 및 관리하는 CMKs 계정의 AWS입니다. 사용자는 CMKs키 정책, 정책 및 권한 부여IAM 설정 및 유지 관리, 활성화 및 비활성화, 암호화 구성 요소 교체, 태그 추가, 을 참조하는 별칭 생성, CMK삭제를 위해 예약CMKs을 비롯하여 이러한 를 완벽하게 제어할 수 있습니다.

고객 관리형 CMKs는 의 AWS Management 콘솔고객 관리형 키AWS KMS 페이지에 표시됩니다. 고객 관리형 CMK를 명확하게 식별하려면 DescribeKey 작업을 사용합니다. 고객 관리형 CMKs의 경우 KeyManager 응답의 DescribeKey 필드 값은 CUSTOMER입니다.

암호화 작업에서 고객 관리형 CMKs를 사용하고 AWS CloudTrail 로그에서 사용을 감사할 수 있습니다. 또한 AWS와 통합되는 많은 AWS KMS 서비스를 통해 고객 관리형 CMK를 지정하여 고객이 사용자를 위해 저장 및 관리하는 데이터를 보호할 수 있습니다.

고객 관리형 CMKs에는 월별 요금과 프리 티어를 초과하는 사용에 대한 요금이 부과됩니다. 계정의 AWS KMS 할당량에 대해 요금이 계산됩니다. 자세한 내용은 AWS Key Management Service 요금할당량 단원을 참조하십시오.

AWS관리형CMKs

AWS 관리형 CMKs는 CMKs와 통합된 AWS 서비스AWS KMS가 사용자를 대신하여 생성, 관리 및 사용하는 계정 내 입니다. 일부 AWS 서비스는 AWS 관리형 CMK만 지원합니다. 다른 사용자는 AWS 소유 CMK를 사용하거나 CMKs 중 하나를 선택할 수 있습니다.

계정에서 관리형 AWS를 보고CMKs, 키 정책을 보고 로그에서 사용을 감사할 수 있습니다.AWS CloudTrail 그러나 이러한 CMKs를 관리하거나, 교체하거나, 키 정책을 변경할 수는 없습니다. 또한 암호화 작업에서 직접 AWS 관리형 CMKs를 사용할 수 없습니다. 즉, 이러한 작업을 생성하는 서비스는 사용자를 대신하여 이러한 작업을 사용합니다.

AWS 관리형 CMKs는 용 AWS의 관리형 키AWS Management 콘솔 페이지에 표시됩니다.AWS KMS 또한 대부분의 AWS 관리형 CMKs는 aws/service-name 형식(예: aws/redshift)을 갖는 별칭으로 식별할 수 있습니다. 관리형 AWS를 명확하게 식별하려면 CMKDescribeKey 작업을 사용합니다. 관리형 AWS의 경우 CMKs 응답의 KeyManager 필드 값은 DescribeKey입니다.AWS

관리형 AWS에 대해서는 월별 요금을 지불하지 않습니다.CMKs 프리 티어를 초과하는 사용에 대해서 요금이 부과될 수 있으며, 일부 AWS 서비스는 이러한 요금을 사용자 대신 부담합니다. 자세한 내용은 해당 서비스에 대한 사용 설명서 또는 개발자 안내서의 저장 데이터 암호화 주제를 참조하십시오. AWS 관리형 CMKs는 계정의 각 리전에 있는 CMKs의 수에 대한 리소스 할당량에 포함되지 않습니다. 그러나 계정의 보안 주체 대신 사용되는 CMKs는 요청 할당량에 포함됩니다. 자세한 내용은 AWS Key Management Service 요금할당량 단원을 참조하십시오.

AWS소유CMKs

AWS 소유 CMKs는 CMKs 서비스가 여러 AWS 계정에서 사용하도록 소유하고 관리하는 AWS의 모음입니다. 소유 AWS는 CMKs 계정에 없지만 AWS 서비스는 AWS 소유 AWS를 사용하여 계정의 리소스를 보호할 수 있습니다.CMKs

AWS 소유 CMKs는 생성하거나 관리할 필요가 없습니다. 그러나 AWS 소유 CMK를 보거나, 사용하거나, 추적하거나, 감사할 수 없습니다. 월별 요금 또는 AWS 소유 CMKs에 대한 사용 요금이 부과되지 않으며, 계정에서 AWS KMS 할당량이 적용되지 않습니다.

AWS에서 소유한 CMK에 대한 키 교체 전략은 CMK를 생성하고 관리하는 AWS 서비스에 의해 결정됩니다. 소유 CMKs를 포함하여 AWS 서비스가 지원하는 AWS 유형에 대한 자세한 내용은 해당 서비스에 대한 사용 설명서 또는 개발자 안내서의 CMKs저장 데이터 암호화 주제를 참조하십시오.

데이터 키

데이터 키는 많은 양의 데이터 및 기타 데이터 암호화 키를 포함하여 데이터를 암호화하는 데 사용할 수 있는 암호화 키입니다.

AWS KMS고객 마스터 키()를 사용하여 데이터 키를 생성, 암호화 및 암호화 해제할 수 있습니다.CMKs 그러나 AWS KMS는 데이터 키를 저장, 관리 또는 추적하거나 데이터 키로 암호화 작업을 수행하지 않습니다. 따라서 AWS KMS 밖에서 데이터 키를 사용하고 관리해야 합니다.

데이터 키 생성

데이터 키를 생성하려면 GenerateDataKey 작업을 호출합니다. AWS KMS는 사용자가 지정한 CMK를 사용하여 데이터 키를 생성합니다. 이 작업은 데이터 키의 일반 텍스트 복사본과 CMK로 암호화된 데이터 키 복사본을 반환합니다. 다음 그림은 이 작업을 보여 줍니다.


          데이터 키 생성

AWS KMS는 암호화된 데이터 키만 반환하는 GenerateDataKeyWithoutPlaintext 작업도 지원합니다. 데이터 키를 사용해야 할 때는 AWS KMS에 데이터 키를 해독하도록 요청합니다.

데이터 키로 데이터 암호화

AWS KMS는 데이터 키를 사용하여 데이터를 암호화할 수 없습니다. 그러나 OpenSSL 또는 AWS 암호화 SDK 같은 암호화 라이브러리를 사용하는 등의 방식으로 KMS 외부에서 데이터 키를 사용할 수 있습니다.

일반 텍스트 데이터 키를 사용하여 데이터를 암호화한 다음에는 가능한 빨리 메모리에서 제거하십시오. 데이터 암호화를 해제하는 데 사용할 수 있도록 암호화된 데이터와 함께 암호화된 데이터 키를 안전하게 저장할 수 있습니다.


          외부에서 사용자 데이터 암호화AWS KMS

데이터 키로 데이터 복호화

데이터를 해독하려면 암호화된 데이터 키를 Decrypt 작업에 전달합니다. AWS KMS는 CMK를 사용하여 데이터 키를 해독한 후 일반 텍스트 데이터 키를 반환합니다. 일반 텍스트 데이터 키를 사용하여 데이터를 복호화한 다음, 가능한 빨리 메모리에서 일반 텍스트 데이터 키를 제거하십시오.

다음 다이어그램은 Decrypt 작업을 사용하여 암호화된 데이터 키를 암호화 해제하는 방법을 보여줍니다.


          데이터 키 해독

데이터 키 페어

데이터 키 페어는 수학적으로 관련된 퍼블릭 키와 프라이빗 키로 구성된 비대칭 데이터 키입니다. AWS KMS 외부에서 클라이언트 측 암호화 및 암호 해독 또는 서명 및 확인에 사용하도록 설계되었습니다.

와 같은 도구가 생성하는 데이터 키 페어와 달리 OpenSSL는 사용자가 지정한 AWS KMS의 대칭 CMK에 있는 각 데이터 키 페어의 프라이빗 키를 보호합니다.AWS KMS 그러나 AWS KMS는 데이터 키 페어를 저장, 관리 또는 추적하거나 데이터 키 페어로 암호화 작업을 수행하지 않습니다. 따라서 AWS KMS 외부에서 데이터 키를 사용하고 관리해야 합니다.

AWS KMS가 지원하는 데이터 키 페어의 유형은 다음과 같습니다.

  • RSA 키 페어: RSA_2048, RSA_3072 및 RSA_4096

  • 타원 곡선 키 페어, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1

일반적으로 선택할 데이터 키 페어의 유형은 사용 사례 또는 규정 요구 사항에 따라 다릅니다. 대부분의 인증서에는 RSA 키가 필요합니다. 타원 곡선 키는 흔히 디지털 서명에 사용됩니다. ECC_SECG_P256K1 키는 암호 화폐에 공통적으로 사용입니다.

데이터 키 페어 생성

데이터 키 페어를 생성하려면 GenerateDataKeyPair 또는 GenerateDataKeyPairWithoutPlaintext 작업을 호출합니다. 프라이빗 키를 암호화하는 데 사용할 대칭 CMK를 지정합니다.

GenerateDataKeyPair는 일반 텍스트 퍼블릭 키, 일반 텍스트 프라이빗 키 및 암호화된 프라이빗 키를 반환합니다. 디지털 서명을 생성하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요할 때 이 작업을 사용합니다.

GenerateDataKeyPairWithoutPlaintext는 일반 텍스트 퍼블릭 키 및 암호화된 프라이빗 키를 반환하지만 일반 텍스트 프라이빗 키는 반환하지 않습니다. 퍼블릭 키로 암호화하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요하지 않은 경우 이 작업을 사용합니다. 나중에 데이터를 암호 해독하기 위해 일반 텍스트 프라이빗 키가 필요할 때 Decrypt 작업을 호출 할 수 있습니다.

다음 그림은 GenerateDataKeyPair 작업을 보여 줍니다. GenerateDataKeyWithoutPlaintext 작업은 일반 텍스트 프라이빗 키를 생략합니다.


          데이터 키 페어 생성

데이터 키 페어로 데이터 암호화

데이터 키 페어를 사용하여 암호화하는 경우 해당 페어의 퍼블릭 키를 사용하여 데이터를 암호화하고 동일한 페어의 프라이빗 키를 사용하여 데이터를 해독합니다. 일반적으로 데이터 키 페어는 많은 당사자가 프라이빗 키를 보유한 당사자만 해독할 수 있는 데이터를 암호화해야 할 때 사용됩니다.

퍼블릭 키가 있는 당사자는 다음 다이어그램과 같이 해당 키를 사용하여 데이터를 암호화합니다.


          외부에서 데이터 키 페어의 퍼블릭 키를 사용하여 사용자 데이터를 암호화합니다.AWS KMS

데이터 키 페어로 데이터 암호 해독

데이터를 암호 해독하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 작업이 성공하려면 퍼블릭 키와 프라이빗 키가 동일한 데이터 키 페어에 속해야 하며 동일한 암호화 알고리즘을 사용해야 합니다.

암호화된 프라이빗 키를 해독하려면 Decrypt 작업에 키를 전달합니다. 일반 텍스트 프라이빗 키를 사용하여 데이터를 암호 해독합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하십시오.

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 암호화 텍스트를 해독하는 방법을 보여줍니다.


          외부에서 데이터 키 페어의 프라이빗 키를 사용하여 데이터를 해독합니다.AWS KMS

데이터 키 페어를 사용하여 메시지 서명

메시지에 대한 암호화 서명을 생성하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 퍼블릭 키를 가진 사람은 누구나 이 키를 사용하여 메시지가 프라이빗 키로 서명되었는지, 서명 이후 변경되지 않았는지 확인할 수 있습니다.

프라이빗 키가 암호화된 경우 암호화된 프라이빗 키를 Decrypt 작업에 전달합니다. AWS KMS는 CMK를 사용하여 데이터 키를 해독한 후 일반 텍스트 프라이빗 키를 반환합니다. 일반 텍스트 프라이빗 키를 사용하여 서명을 생성합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하십시오.

메시지에 서명하려면 dgstOpenSSL 명령과 같은 암호화 해시 함수를 사용하여 메시지 다이제스트를 생성합니다. 그런 다음 일반 텍스트 프라이빗 키를 서명 알고리즘에 전달합니다. 결과는 메시지의 내용을 나타내는 서명입니다.

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 메시지에 서명하는 방법을 보여줍니다.


          외부에서 데이터 키 페어의 프라이빗 키를 사용하여 암호화 서명을 생성합니다.AWS KMS

데이터 키 페어를 사용하여 서명 확인

데이터 키 페어의 퍼블릭 키가 있는 사람은 누구나 이 키를 사용하여 프라이빗 키로 생성한 서명을 확인할 수 있습니다. 확인은 권한이 부여된 사용자가 지정된 프라이빗 키 및 서명 알고리즘을 사용하여 메시지에 서명했으며 서명된 이후 메시지가 변경되지 않았음을 확인합니다.

확인이 성공하려면 서명을 확인하는 당사자가 동일한 유형의 다이제스트를 생성하고 동일한 알고리즘을 사용하며 메시지에 서명하는 데 사용되는 프라이빗 키에 해당하는 퍼블릭 키를 사용해야 합니다.

다음 다이어그램은 데이터 키 페어의 퍼블릭 키를 사용하여 메시지 서명을 확인하는 방법을 보여 줍니다.


          외부에서 데이터 키 페어의 퍼블릭 키를 사용하여 암호화 서명을 확인합니다.AWS KMS

Aliases

별칭은 CMK의 표시 이름입니다. 예를 들어 CMK를 대신 test-key1234abcd-12ab-34cd-56ef-1234567890ab로 참조할 수 있습니다.

별칭을 사용하면 AWS Management 콘솔에서 CMK를 보다 쉽게 식별할 수 있습니다. 별칭을 사용하여 AWS KMS암호화 작업을 포함한 일부 작업에서 CMK를 식별할 수도 있습니다. 애플리케이션에서는 단일 별칭을 사용하여 각 CMKs 리전에서 서로 다른 AWS를 참조할 수 있습니다.

에서 별칭은 CMK의 속성이 아니라 독립적인 리소스입니다.AWS KMS 따라서 연결된 CMK에 영향을 주지 않고 별칭을 추가, 변경 및 삭제할 수 있습니다.

자세히 알아보기:

  • 별칭에 대한 자세한 내용은 별칭 사용 단원을 참조하십시오.

  • 별칭을 포함한 키 식별자의 형식에 대한 자세한 내용은 키 식별자(KeyId) 단원을 참조하십시오.

  • CMK와 연결된 별칭을 찾는 방법에 대한 도움말은 별칭 이름 및 별칭 ARN 찾기 단원을 참조하십시오.

  • 여러 프로그래밍 언어로 별칭을 생성하고 관리하는 예제는 별칭으로 작업 단원을 참조하십시오.

암호화 작업

에서 AWS KMS암호화 작업를 사용하여 데이터를 보호하는 API 작업입니다.CMKs 는 CMKs 내에 남아 있으므로 AWS KMS를 호출하여 암호화 작업에서 AWS KMS를 사용해야 합니다.CMK

를 사용하여 암호화 작업을 수행하려면 CMKs AWS, SDKs(AWS Command Line Interface) 또는 AWS CLI를 사용합니다.PowerShell용 AWS 도구 AWS KMS 콘솔에서 암호화 작업을 수행할 수 없습니다. 여러 프로그래밍 언어로 암호화 작업을 호출하는 예는 AWS KMS API 프로그래밍 단원을 참조하십시오.

다음 표에는 AWS KMS 암호화 작업이 나와 있습니다. 또한 작업에 사용되는 의 키 유형 및 키 사용CMKs 요구 사항을 보여줍니다.

연산 CMK 키 유형 CMK 키 사용
암호화 해제 모두 ENCRYPT_DECRYPT
Encrypt 모두 ENCRYPT_DECRYPT
GenerateDataKey 대칭 ENCRYPT_DECRYPT
GenerateDataKeyPair 대칭 [1] ENCRYPT_DECRYPT
GenerateDataKeyPairWithoutPlaintext 대칭 [1] ENCRYPT_DECRYPT
GenerateDataKeyWithoutPlaintext 대칭 ENCRYPT_DECRYPT
GenerateRandom 해당 사항 없음 이 작업은 CMK를 사용하지 않습니다. 해당 사항 없음
ReEncrypt 모두 ENCRYPT_DECRYPT
Sign 비대칭 SIGN_VERIFY
확인 비대칭 SIGN_VERIFY

[1] GenerateDataKeyPairGenerateDataKeyPairWithoutPlaintext는 대칭 CMK로 보호되는 비대칭 데이터 키 페어를 생성합니다.

암호화 작업과 관련한 권한에 대한 자세한 내용은 AWS KMS API 권한: 조치 및 리소스 참조를 참조하십시오.

모든 사용자에 대한 AWS KMS 응답성 및 성능을 유지하기 위해 AWS KMS는 초당 호출할 수 있는 암호화 작업 수에 대한 할당량을 설정합니다. 자세한 내용은 암호화 작업에 대한 공유 할당량 단원을 참조하십시오.

키 식별자(KeyId)

키 식별자는 AWS KMS 고객 마스터 키(CMKs)의 이름 역할을 합니다. 콘솔에서 CMKs를 인식하는 데 도움이 됩니다. 이를 사용하여 CMKs API 작업, AWS KMS 정책 및 권한 부여에 사용할 IAM를 나타냅니다.

AWS KMS는 몇 가지 키 식별자를 정의합니다. 를 생성하면 CMK에서 키 ARN 및 키 ID를 생성하는데, 이는 AWS KMS의 속성입니다.CMK 별칭을 만들면 정의한 별칭 이름을 기반으로 AWS KMS가 별칭 ARN을 생성합니다. AWS Management 콘솔 및 AWS KMS API에서 키 및 별칭 식별자를 볼 수 있습니다.

콘솔에서 키 ARN, 키 ID 또는 별칭 이름으로 AWS KMS를 보고 필터링하고 키 ID 및 별칭 이름으로 정렬할 수 있습니다.CMKs 콘솔에서 키 식별자를 찾는 방법에 대한 도움말은 키 ID 및 ARN 찾기 단원을 참조하십시오.

API에서 AWS KMS를 식별하는 데 사용하는 파라미터는 CMK 또는 변형(예: KeyId 또는 TargetKeyId)입니다.DestinationKeyId 그러나 이러한 파라미터의 값은 키 IDs로 제한되지 않습니다. 일부는 유효한 키 식별자를 취할 수 있습니다. 각 파라미터의 값에 대한 자세한 내용은 AWS Key Management Service API Reference의 파라미터 설명을 참조하십시오.

참고

AWS KMS API를 사용할 때는 사용하는 키 식별자를 주의해야 합니다. 마다 다른 키 식별자가 필요합니다.APIs 일반적으로 작업에 실용적인 가장 완벽한 키 식별자를 사용하십시오.

AWS KMS는 다음 키 식별자를 지원합니다.

키 ARN

키 ARN은 CMK의 Amazon 리소스 이름(ARN)입니다. 에 대한 고유한 정규화된 식별자입니다.CMK 키 ARN에는 AWS 계정, 리전 및 키 ID가 포함됩니다. 의 키 ARN을 찾는 방법은 CMK 단원을 참조하십시오.키 ID 및 ARN 찾기

키 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:key/<key-id>

다음은 키 ARN의 예입니다.

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
키 ID

키 ID는 계정 및 리전 내에서 CMK를 고유하게 식별합니다. 의 키 ID를 찾는 방법은 CMK 단원을 참조하십시오.키 ID 및 ARN 찾기

다음은 키 ID의 예입니다.

1234abcd-12ab-34cd-56ef-1234567890ab
별칭 ARN

별칭 ARN은 별칭 AWS KMS의 Amazon 리소스 이름(ARN)입니다. 별칭에 대한 고유한 정규화된 식별자이며 CMK에 대해 나타냅니다. 별칭 ARN에는 AWS 계정, 리전 및 별칭 이름이 포함됩니다.

별칭 ARN은 특정 CMK 하나를 식별합니다. 그러나 별칭과 연결된 CMK를 변경할 수 있으므로 별칭 ARN은 서로 다른 시간에 서로 다른 CMKs를 식별할 수 있습니다. 의 별칭 ARN을 찾는 방법은 CMK 단원을 참조하십시오.별칭 이름 및 별칭 ARN 찾기

별칭 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:alias/<alias-name>

다음은 가상 ExampleAlias의 별칭 ARN입니다.

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
별칭 이름

별칭 이름은 계정 및 리전 내에서 연결된 CMK를 고유하게 식별합니다. API에서 별칭 이름은 항상 AWS KMS로 시작합니다.alias 의 별칭 이름을 찾는 방법에 대한 도움말은 CMK 단원을 참조하십시오.별칭 이름 및 별칭 ARN 찾기

별칭 이름의 형식은 다음과 같습니다.

alias/<alias-name>

다음 예를 참조하십시오.

alias/ExampleAlias

별칭 이름의 aws/ 접두사는 AWS 관리형 CMKs용으로 예약되어 있습니다. 이 접두사를 가진 별칭은 만들 수 없습니다. 예를 들어 AWS(CMK)용 Amazon Simple Storage Service 관리형 Amazon S3의 별칭 이름은 다음과 같습니다.

alias/aws/s3

키 구성 요소 오리진

키 구성 요소 오리진은 CMK에서 키 구성 요소의 소스를 식별하는 CMK 속성입니다. 를 생성할 때 키 구성 요소 오리진을 선택하면 이 설정을 변경할 수 없습니다.CMK 의 키 구성 요소 오리진을 찾으려면 CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지의 암호화 구성 탭에 있는 오리진CMK 값을 참조하십시오.AWS KMS 자세한 내용은 키 보기를 참조하십시오.

CMKs는 다음 키 구성 요소 오리진 값 중 하나를 가질 수 있습니다.

KMS(기본값)

API 값: AWS_KMS

AWS KMS는 자체 키 스토어에서 CMK에 대한 키 구성 요소를 생성하고 관리합니다. 이것이 기본값이며 대부분의 CMKs에 권장되는 값입니다.

AWS KMS에서 키 구성 요소로 키를 생성하는 방법에 대한 자세한 내용은 키 생성 단원을 참조하십시오.

외부

API 값: EXTERNAL

에는 CMK가져온 키 구성 요소가 있습니다. 키 구성 요소 오리진을 사용하여 CMK를 생성할 때 External에는 키 구성 요소가 없습니다.CMK 나중에 키 구성 요소를 CMK로 가져올 수 있습니다. 가져온 키 구성 요소를 사용하는 경우 만료되는 키 구성 요소를 교체하는 것을 포함하여 AWS KMS 외부에서 해당 키 구성 요소를 보호하고 관리해야 합니다. 자세한 내용은 가져온 키 구성 요소 정보 단원을 참조하십시오.

가져온 키 구성 요소에 대한 CMK 생성에 대한 도움말은 단계 1. 생성 CMK 핵심 재료 없이 단원을 참조하십시오.

사용자 지정 키 스토어(CloudHSM)

API 값: AWS_CLOUDHSM

AWS KMS가 CMK사용자 지정 키 스토어에서 에 대한 키 구성 요소를 생성했습니다.

사용자 지정 키 스토어에서 CMK 생성에 대한 도움말은 생성 CMKs 사용자 지정 키 스토어에서 단원을 참조하십시오.

키 사양

키 사양은 CMK의 암호화 구성을 나타내는 CMK 속성입니다. 키 사양에 따라 CMK가 대칭 또는 비대칭인지 여부, CMK의 키 구성 요소 유형, CMK에 사용할 수 있는 암호화 알고리즘 또는 서명 알고리즘이 결정됩니다.

일반적으로 CMK에 대해 선택하는 키 사양은 사용 사례 및 규정 요구 사항을 기반으로 합니다. 키 사양은 를 생성CMK할 때 선택하며 이후에는 변경할 수 없습니다. 잘못된 키 사양을 선택한 경우 를 삭제CMK하고 새 사양을 생성합니다.

키 사양 목록 및 키 사양 선택에 대한 도움말은 키 사양 선택 단원을 참조하십시오. 의 키 사양을 찾으려면 CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지의 암호화 구성CMK 탭을 참조하십시오.AWS KMS 자세한 내용은 키 보기를 참조하십시오.

참고

AWS KMS API 작업에서 CMK에 대한 키 사양은 CustomerMasterKeySpec으로 알려져 있습니다. 따라서 이 사양은 데이터 키(KeySpec) 및 데이터 키 페어(KeyPairSpec)에 대한 키 사양 및 가져오기를 위해 키 재료를 래핑할 때 사용되는 키 사양(WrappingKeySpec)과 구분됩니다. 키 사양 유형별로 값이 서로 다릅니다.

를 생성할 때 보안 주체가 사용할 수 있는 키 사양을 제한하려면 CMKskms:CustomerMasterKeySpec 조건 키를 사용합니다. 조건 키를 사용하여 보안 주체가 키 사양을 기반으로 kms:CustomerMasterKeySpec에 대한 AWS KMS 작업을 호출하도록 허용할 수도 있습니다.CMK 예를 들어 CMK 키 사양을 사용하여 RSA_4096 삭제를 예약할 수 있는 권한을 거부할 수 있습니다.

키 사용

키 사용은 CMK가 암호화 및 암호 해독 또는 서명 및 확인에 사용되는지 여부를 결정하는 CMK 속성입니다. 둘 다 선택할 수는 없습니다. 두 가지 이상의 작업 유형에 CMK를 사용하면 두 작업의 제품이 공격에 더 취약해집니다.

대칭 CMKs의 키 사용은 항상 암호화 및 암호 해독입니다. 타원 곡선(ECC) CMKs의 키 사용은 항상 서명 및 확인입니다. RSA CMKs에 대한 키 사용만 선택하면 됩니다. 키 사용은 를 생성CMK할 때 선택하며 이후에는 변경할 수 없습니다. 잘못된 키 사용을 선택한 경우 를 삭제CMK하고 새 키를 생성합니다.

키 사용을 선택하는 방법은 키 사용 선택 단원을 참조하십시오. 의 키 사용을 찾으려면 CMKDescribeKey 작업을 사용하거나 콘솔의 에 대한 세부 정보 페이지에서 암호화 구성CMK 탭을 선택합니다.AWS KMS 자세한 내용은 키 보기를 참조하십시오.

보안 주체가 서명 및 확인 또는 암호화 및 암호 해독을 위해서만 CMKs를 생성하도록 허용하려면 kms:CustomerMasterKeyUsage 조건 키를 사용합니다. 조건 키를 사용하여 보안 주체가 키 사용을 기반으로 kms:CustomerMasterKeyUsage에 대한 API 작업을 호출하도록 허용할 수도 있습니다.CMK 예를 들어 키 사용이 SIGN_VERIFY인 경우에만 CMK를 비활성화할 수 있는 권한을 허용할 수 있습니다.

봉투 암호화

데이터를 암호화하면 데이터가 보호되지만 암호화 키를 보호해야 합니다. 암호화하는 것도 하나의 전략입니다. 봉투 암호화는 데이터 키로 일반 텍스트 데이터를 암호화한 후, 다른 키 아래에서 데이터 키를 암호화하는 방법입니다.

데이터 암호화 키를 다른 암호화 키로 암호화하고 해당 암호화 키를 다른 암호화 키로 암호화할 수도 있습니다. 그러나 궁극적으로는 키와 데이터를 복호화할 수 있도록 하나의 키는 일반 텍스트로 남겨둬야 합니다. 이 최상위 일반 텍스트 키 암호화 키를 마스터 키라고 합니다.


        봉투 암호화

AWS KMS를 사용하면 마스터 키를 안전하게 저장하고 관리하여 보호할 수 있습니다. 에 저장된 마스터 키(AWS KMS고객 마스터 키())는 CMKsFIPS 확인 하드웨어 보안 모듈AWS KMS을 암호화되지 않은 상태로 두지 않습니다.https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/3139 AWS KMS를 사용하려면 CMK를 호출해야 합니다.AWS KMS


        키 암호화 키를 여러 개 사용하는 봉투 암호화

봉투 암호화는 여러 가지 장점을 제공합니다.

  • 데이터 키 보호

    데이터 키를 암호화하면 해당 데이터 키의 보안이 암호화에 의해 근본적으로 보호되기 때문에 암호화한 데이터 키의 저장에 대해 고민할 필요가 없습니다. 암호화한 데이터 키를 암호화한 데이터와 함께 안전하게 저장할 수 있습니다.

  • 여러 개의 하에 동일한 데이터 암호화 마스터 키

    암호화 작업, 특히 암호화되는 데이터가 대용량 객체일 경우 긴 시간이 걸릴 수 있습니다. 서로 다른 키로 원시 데이터를 여러 차례 다시 암호화하는 대신, 원시 데이터를 보호하는 데이터 키만 다시 암호화할 수 있습니다.

  • 여러 알고리즘의 강점 결합

    일반적으로 대칭 키 알고리즘이 퍼블릭 키 알고리즘보다 빠르고 더 작은 암호화 텍스트를 생성합니다. 그러나 퍼블릭 키 알고리즘은 고유한 역할 구분을 제공하고 키 관리가 더 쉽습니다. 봉투 암호화는 각 전략의 장점을 하나로 결합하게 해 줍니다.

암호화 컨텍스트

대칭 AWS KMS를 사용하는 모든 암호화 작업은 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 선택적 키CMKs값 페어 세트인 암호화 컨텍스트를 수락합니다. –는 암호화 컨텍스트를 AWS KMS추가 인증 데이터(AAD)로 사용하여 인증된 암호화를 지원합니다.

비대칭 CMK를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서 사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

암호화 요청에 암호화 컨텍스트를 포함하면 데이터를 암호화 해제(또는 암호화 해제한 다음 다시 암호화)하는 데 동일한 암호화 컨텍스트가 필요하도록 암호 텍스트에 암호화 방식으로 바인딩됩니다. 복호화 요청에 제공된 암호화 컨텍스트가 대소문자가 정확히 일치하지 않으면 복호화 요청이 실패합니다. 암호화 컨텍스트에서 키-값 페어의 순서만 다를 수 있습니다.

암호화 컨텍스트는 보안 사항이 아닙니다. AWS CloudTrail 로그에 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있습니다.

암호화 컨텍스트는 원하는 키와 값으로 구성할 수 있습니다. 하지만 암호화되지 않으므로 암호화 컨텍스트에 민감한 정보가 포함되면 안 됩니다. 암호화 컨텍스트가 암호화 또는 복호화되는 데이터를 설명하는 것이 좋습니다. 예를 들어 파일을 암호화하는 경우, 파일 경로의 일부를 암호화 컨텍스트로 사용할 수 있습니다.

암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수나 객체, 또는 완전히 해결되지 않는 어떤 형식도 사용할 수 없습니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS는 이를 문자열로 해석합니다.

"encryptionContext": { "department": "10103.0" }

암호화 컨텍스트 키와 값은 밑줄(_), 대시(-), 슬래시(/, \), 콜론(:) 같은 특수 문자를 포함할 수 있습니다.

예를 들어 Amazon Simple Storage Service()는 키가 Amazon S3인 암호화 컨텍스트를 사용합니다.aws:s3:arn 이 값은 암호화되는 파일의 S3 버킷 경로입니다.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name" }

암호화 컨텍스트를 사용하여 계정에서 고객 마스터 키(CMKs)에 대한 액세스를 구체화하거나 제한할 수도 있습니다. 정책문 에서 암호화 컨텍스트 를 허가 의 제약 조건과 조건으로 사용할 수 있습니다.

암호화 컨텍스트를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 알아보려면 보안 블로그의 AWS Key Management Service 및 EncryptionContext를 사용하여 암호화된 데이터의 무결성을 보호하는 방법 게시물을 참조하십시오.AWS

암호화 컨텍스트 관련 추가 내용.

암호화 컨텍스트는 주로 무결성 및 신뢰성을 확인하는 데 사용됩니다. 그러나 암호화 컨텍스트를 사용하여 키 정책 및 고객 마스터 키 정책에서 대칭 CMKs(IAM)에 대한 액세스를 제어할 수도 있습니다.

kms:EncryptionContext:kms:EncryptionContextKeys 조건 키는 요청이 특정 암호화 컨텍스트 키 또는 키–값 페어를 포함하는 경우에만 권한을 허용(또는 거부)합니다.

예를 들어 다음 키 정책 문을 사용하면 RoleForExampleApp 역할이 CMK 작업에서 Decrypt를 사용할 수 있습니다. 이 정책 문은 kms:EncryptionContext: 조건 키를 사용하여 요청의 암호화 컨텍스트가 AppName:ExampleApp 암호화 컨텍스트 쌍을 포함하는 경우에만 이 권한을 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

이러한 암호화 컨텍스트 키에 대한 자세한 내용은 AWS KMS의 정책 조건 사용 단원을 참조하십시오.

권한 부여를 생성할 때 요청에 특정 암호화 컨텍스트 또는 암호화 컨텍스트 키가 포함되는 경우에만 액세스를 허용하는 권한 부여 제약 조건을 포함시킬 수 있습니다. EncryptionContextEqualsEncryptionContextSubset 권한 부여 제약 조건에 대한 자세한 내용은 제약 편집 단원을 참조하십시오.

대칭 CMK에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 지정하려면 Constraints 작업에서 CreateGrant 파라미터를 사용합니다. 이 예제에서는 AWS Command Line Interface를 사용하지만 원하는 AWS SDK를 사용할 수 있습니다. 이 명령이 생성하는 권한 부여는 Decrypt 작업을 호출할 수 있는 exampleUser 권한입니다. 그러나 이 권한은 Decrypt 요청의 암호화 컨텍스트가 "Department": "IT" 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

결과 권한 부여는 다음과 같습니다. exampleUser에 부여된 권한은 Decrypt 요청이 권한 부여 제약 조건에 지정된 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다. 의 권한 부여를 찾으려면 CMKListGrants 작업을 사용합니다.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }

AWS 서비스는 CMKs 계정에서 AWS를 사용할 수 있는 권한을 부여하는 권한 부여에서 암호화 컨텍스트 제약 조건을 사용하는 경우가 많습니다. 예를 들어 Amazon DynamoDB는 다음과 같은 권한 부여를 사용하여 계정에서 용 AWSCMK 관리형 DynamoDB 사용 권한을 얻습니다. 이 권한 부여의 EncryptionContextSubset 권한 부여 제약 조건은 권한 부여에 지정된 권한이 요청의 암호화 컨텍스트가 "subscriberID": "111122223333""tableName": "Services" 쌍을 포함하는 경우에만 유효하게 만듭니다. 이 권한 부여 제약 조건은 권한 부여가 DynamoDB가 CMK 계정의 특정 테이블에 대해서만 지정된 AWS를 사용하도록 허용한다는 의미입니다.

이 출력을 얻으려면 계정의 용 ListGrants 관리형 에서 AWSCMKDynamoDB 작업을 실행합니다.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }

AWS KMS는 AWS CloudTrail를 사용하여 암호화 컨텍스트를 로깅하므로 어떤 CMKs 및 데이터에 액세스했는지 확인할 수 있습니다. 로그 항목은 로그 항목에서 암호화 컨텍스트가 참조하는 특정 데이터를 암호화하거나 해독하는 데 사용된 CMK를 정확히 보여줍니다.

중요

암호화 컨텍스트가 로깅되기 때문에 민감한 정보가 포함될 수 없습니다.

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

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

키 정책

를 생성할 때 해당 CMK를 사용하고 관리할 수 있는 사용자를 결정합니다.CMK 이러한 권한은 키 정책이라는 문서에 포함됩니다. 키 정책을 사용하여 고객 관리형 CMK에 대한 권한을 언제든 추가, 제거 또는 변경할 수 있습니다. 그러나 AWS 관리형 CMK에 대한 키 정책은 편집할 수 없습니다. 자세한 정보는 AWS KMS에 대한 인증 및 액세스 제어 단원을 참조하십시오.

Grants

권한 부여는 권한을 제공하기 위한 또 하나의 메커니즘입니다. 이는 키 정책의 대안입니다. 권한 부여는 매우 구체적일 수 있고 생성 및 취소가 간편하므로 임시 권한 또는 보다 세부적인 권한을 제공하는 데 자주 사용됩니다.

권한 부여 토큰

권한 부여를 생성할 때 최종 일관성으로 인해 권한 부여에 지정된 권한이 즉시 적용되지 않을 수 있습니다. 지연 가능성을 완화해야 하는 경우 요청에 대한 응답으로 수신한 CreateGrant권한 부여 토큰을 사용합니다. AWS KMS API 요청을 통한 권한 부여 토큰을 전달하여 권한 부여의 권한이 즉시 적용되도록 할 수 있습니다. 다음 AWS KMS API 작업이 권한 부여 토큰을 수락합니다.

권한 부여 토큰은 비밀이 아닙니다. 권한 부여 토큰에는 권한 부여의 대상 및 그에 따라 사용할 수 있는 사람에 대한 정보가 포함되므로 권한 부여의 권한이 즉시 적용될 수 있습니다.

사용 감사CMK

AWS CloudTrail을 사용해 키 사용을 감사할 수 있습니다. CloudTrail은 계정의 AWS API 호출 및 관련 이벤트 내역이 포함된 로그 파일을 생성합니다. 이러한 로그 파일에는 AWS KMS Management Console, AWS AWS 및 명령줄 도구를 사용하여 만든 모든 SDKs API 요청이 포함됩니다. 또한 로그 파일은 AWS 서비스가 사용자 대신 생성한 AWS KMS에 대한 요청도 포함합니다. 이러한 로그 파일을 사용하여 CMK가 사용된 시간, 요청된 작업, 요청자의 자격 증명 및 소스 IP 주소를 포함한 중요한 정보를 찾을 수 있습니다. 자세한 내용은 AWS CloudTrail를 사용한 로깅AWS CloudTrail User Guide를 참조하십시오.

키 관리 인프라

암호화 기법에서 일반적인 방법은 AES(Advanced Encryption Standard)와 비밀 키처럼 공개적으로 사용할 수 있고 피어 검토를 거친 알고리즘으로 암호화하고 복호화하는 것입니다. 암호화 기법에서 가장 큰 문제 중 하나는 키를 비밀로 유지하기 매우 어렵다는 점입니다. 이는 일반적으로 키 관리 인프라(KMI)의 작업입니다. AWS KMS는 KMI를 자동으로 실행합니다. AWS KMS는 마스터 키라고 하는 고객 마스터 키를 생성하고 안전하게 저장합니다. 작동 방식에 대한 자세한 내용은 AWS KMS를 참조하십시오.AWS Key Management Service 암호화 세부 정보 백서