AWS Key Management Service(AWS KMS)에서 키 구성 요소 가져오기 - AWS Key Management Service

AWS Key Management Service(AWS KMS)에서 키 구성 요소 가져오기

제공한 키 구성 요소로 AWS KMS keys(KMS 키)를 생성할 수 있습니다.

KMS 키는 암호화 키를 논리적으로 표현한 것입니다. 여기에는 키 식별자 및 기타 메타데이터 외에도 데이터를 암호화 및 복호화하는 데 사용되는 키 구성 요소가 포함됩니다. KMS 키를 생성하면 기본적으로 AWS KMS에서 해당 KMS 키에 대한 구성 요소를 생성합니다. 그러나 키 구성 요소 없이 KMS 키를 생성한 다음 자신의 키 구성 요소를 해당 KMS 키로 가져올 수 있습니다. 이 KMS 키는 종종 “자체 키 사용"(BYOK)이라고 합니다.

참고

AWS KMS는 가져온 키 자료를 사용하여 암호문이 KMS 키에서 암호화된 경우에도 AWS KMS 외부의 AWS KMS 암호문복호화를 지원하지 않습니다. AWS KMS는 이 작업에 필요한 암호문 형식을 게시하지 않으며 형식은 예고 없이 변경될 수 있습니다.

가져온 키 구성 요소는 AWS KMS 키 스토어의 대칭 KMS 키에 대해서만 지원됩니다. 비대칭 KMS 키 또는 사용자 지정 키 스토어의 KMS 키에는 지원되지 않습니다.

가져온 키 구성 요소를 사용하는 경우, AWS KMS에서 사본을 사용하도록 허용하는 동시에 키 구성요소에 대한 책임은 유지해야 합니다. 이렇게 하기로 선택하는 경우는 다음과 같습니다.

  • 요구 사항에 부합하는 엔트로피 소스를 사용하여 키 구성 요소를 생성했음을 입증하기 위해.

  • 자체 인프라의 키 자료를 AWS 서비스와 함께 사용하고 AWS KMS를 사용하여 AWS에서 해당 주요 자료의 수명주기를 관리합니다.

  • AWS 내에서 키 구성 요소의 만료 시간을 설정하고 수동으로 삭제하되, 나중에 다시 사용 가능하도록 설정하기 위해. 반면 키 삭제를 예약하려면 7 - 30일의 대기 기간이 필요하며, 이 기간이 지나면 삭제한 KMS 키를 복구할 수 없습니다.

  • 키 구성 요소의 전체 수명 주기 동안 내구성 강화와 재해 복구를 목적으로 키 구성 요소의 원본을 소유하고 AWS 외부에 보관하기 위해.

가져온 키 구성 요소를 이용하는 KMS 키와 AWS KMS가 생성한 키 구성 요소를 사용하는 KMS 키 사이의 중요한 차이에 대한 정보는 가져온 키 구성 요소 정보 단원을 참조하십시오.

가져오는 키 구성 요소는 256비트 대칭 암호화 키여야 합니다.

가져온 키 구성 요소 정보

AWS KMS로 키 구성 요소를 가져오기로 결정하기 전에, 가져온 키 구성 요소의 다음과 같은 특성을 이해해야 합니다.

키 구성 요소를 생성합니다.

보안 요구 사항에 부합하는 임의 소스를 이용해 256비트의 키 구성 요소를 생성해야 합니다.

키 구성 요소 변경 불가

KMS 키로 키 구성 요소를 가져오면, KMS 키는 키 구성 요소와 영구적으로 연결됩니다. 동일한 키 구성 요소를 가져오되, 다른 키 구성 요소를 KMS 키로 가져올 수는 없습니다. 또한 가져온 키 구성 요소를 사용하여 KMS 키에 대한 자동 키 교체를 활성화할 수 없습니다. 하지만 가져온 키 구성 요소로 KMS 키를 수동 교체할 수 있습니다.

다른 KMS 키로 암호를 복호화할 수 없습니다.

KMS 키 하에서 데이터를 암호화하면 암호화 텍스트를 다른 KMS 키로 복호화할 수 없습니다. 동일한 키 구성 요소를 KMS 키로 가져올 때도 마찬가지입니다. 이것은 KMS 키의 보안 기능입니다.

유일한 예외는 상호 운용할 수 있도록 설계되어 있는 다중 리전 키입니다. 자세한 내용은 가져온 키 자료가 있는 모든 KMS 키가 상호 운용되지 않는 이유는 무엇입니까? 단원을 참조하세요.

휴대성 또는 에스크로 기능 없음

AWS KMS가 생성하는 암호문은 이식성이 없습니다. AWS KMS는 가져온 키 구성 요소를 사용하여 암호문이 KMS 키에서 암호화된 경우에도 AWS KMS 외부의 AWS KMS 암호문 복호화를 지원하지 않습니다. AWS KMS는 이 작업에 필요한 암호문 형식을 게시하지 않으며 형식은 예고 없이 변경될 수 있습니다.

또한 AWS Encryption SDK 또는 Amazon S3 클라이언트 측 암호화와 같은 AWS 도구를 사용하여 AWS KMS 암호문을 복호화할 수 없습니다.

결과적으로 가져온 키 구성 요소가 있는 키를 사용하여 키 구성 요소에 대한 조건부 액세스 권한이 있는 승인된 제3자가 AWS KMS 외부의 특정 암호문을 복호화할 수 있다는 키 에스크로 계약을 지원할 수 없습니다. 키 에스크로를 지원하려면 AWS Encryption SDK를 사용하여 AWS KMS와 독립적인 키로 메시지를 암호화합니다.

가용성과 지속성에 대한 책임은 고객에게 있습니다.

키 구성 요소의 가용성과 지속성에 대한 모든 책임을 부담해야 합니다. AWS KMS는 가져온 키 구성 요소의 가용성을 높게 유지하도록 설계되었습니다. 그러나 이 서비스는 가져온 키 구성 요소의 지속성을 자동 생성된 키 구성 요소와 동일한 수준으로 유지하지는 않습니다. 이 차이는 다음과 같은 경우에 의미가 있습니다.

  • 가져온 키 구성 요소에 만료 시간을 설정한 경우, 이 시간이 지나면 AWS KMS가 키 구성 요소를 삭제합니다. AWS KMS는 KMS 키나 그 메타데이터를 삭제하지 않습니다. 사용자는 AWS KMS가 생성한 키 구성 요소의 만료 시간을 설정할 수 없습니다.

  • 가져온 키 구성 요소를 수동으로 삭제하면 AWS KMS가 키 구성 요소를 삭제하지만 KMS 키나 그 메타데이터를 삭제하지 않습니다. 반면 키 삭제를 예약하려면 7~30일의 대기 기간이 필요하며, 이 기간이 지나면 AWS KMS가 키 구성 요소와 KMS 키의 모든 메타데이터를 삭제합니다.

  • 드물지만 서비스에 영향을 미칠 리전 전반에 걸친 장애(완전한 정전 등)가 발생하는 경우, AWS KMS는 가져온 키 구성 요소를 자동으로 복원할 수 없습니다. 하지만 AWS KMS는 KMS 키와 그 메타데이터를 복원할 수 있습니다.

이런 이벤트가 발생한 뒤에 키 구성 요소를 복원하려면 제어 시스템 안에 키 구성 요소의 사본이 있어야 합니다. 그래야만 KMS 키로 다시 가져올 수 있습니다.

키 구성 요소 가져오기 권한

가져온 키 구성 요소로 KMS 키를 만들고 관리하려면 사용자에게 이 프로세스의 작업에 대한 권한이 필요합니다. KMS 키를 만들 때 키 정책에서 kms:GetParametersForImport, kms:ImportKeyMaterialkms:DeleteImportedKeyMaterial 권한을 제공할 수 있습니다. kms:ImportKeyMaterial 권한은 키 관리자의 기본 권한에 포함되어 있지 않으므로 수동으로 추가해야 합니다.

가져온 키 구성 요소로 KMS 키를 만들려면 보안 주체에 다음 권한이 필요합니다.

  • kms:CreateKey(IAM 정책)

    • 가져온 키 구성 요소가 있는 KMS 키로 이 권한을 제한하려면 값이 EXTERNALkms:KeyOrigin 정책 조건을 사용하십시오.

      { "Version": "2012-10-17", "Statement": { "Sid": "IAM policy to create KMS keys with no key material" "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole" }, "Action": "kms:CreateKey", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL" } } }
  • kms:GetParametersForImport (키 정책 또는 IAM 정책)

  • kms:ImportKeyMaterial(키 정책 또는 IAM 정책)

    • 만료되는 키 구성 요소를 허용하거나 금지하고 만료 날짜를 제어하려면 kms:ExpirationModelkms:ValidTo 정책 조건을 사용합니다.

가져온 키 구성 요소를 다시 가져오려면 보안 주체가 kms:GetParametersForImportkms:ImportKeyMaterial 권한을 필요합니다.

가져온 키 구성 요소를 삭제하려면 보안 주체에게 kms:DeleteImportedKeyMaterial 권한이 필요합니다.

키 구성 요소를 가져오는 방법

다음 개요에서는 AWS KMS로 키 구성 요소를 가져오는 방법을 설명합니다. 프로세스의 각 단계에 대한 자세한 정보는 해당 주제를 참조하십시오.

  1. 키 구성 요소 없이 KMS 키 생성 – 키 구성 요소 가져오기를 시작하려면 먼저 출처(origin)EXTERNAL인 대칭 KMS 키를 생성합니다. 이는 키 구성 요소가 AWS KMS 외부에 생성되었다는 뜻으로, AWS KMS가 KMS 키에 필요한 키 구성 요소를 생성할 수 없습니다. 이후 단계에 이 KMS 키로 고유한 키 구성 요소를 가져오게 됩니다.

  2. 퍼블릭 키와 가져오기 토큰 다운로드 – 1단계를 완료한 후 퍼블릭 키와 가져오기 토큰을 다운로드합니다. 이러한 항목은 키 구성 요소를 AWS KMS로 가져오는 과정을 보호합니다.

  3. 키 구성 요소 암호화 – 2단계에 다운로드한 퍼블릭 키를 사용하여 고유한 시스템에 생성한 키 구성 요소를 암호화합니다.

  4. 키 구성 요소 가져오기 – 3단계에 생성하여 암호화한 키 구성 요소와 2단계에 다운로드한 가져오기 토큰을 업로드합니다.

AWS KMS는 KMS 키를 생성하고, 공개 키 및 가져오기 토큰을 다운로드하고 키 구성 요소를 가져올 때 AWS CloudTrail 로그에 항목을 기록합니다. AWS KMS는 또한 가져온 키 자료를 삭제하거나 AWS KMS는 만료된 키 자료를 삭제할 때 항목을 기록합니다.

키 구성 요소를 다시 가져오는 방법

가져온 키 구성 요소로 KMS 키를 관리하는 경우, 키 구성 요소가 만료되었거나 실수로 삭제 또는 분실하여 키 구성 요소를 다시 가져와야 할 수도 있습니다.

처음에 KMS 키로 가져왔던 것과 동일한 키 구성 요소를 다시 가져와야 합니다. 다른 키 구성 요소는 KMS 키로 가져올 수 없습니다. 또한 AWS KMS는 키 구성 요소 없이 생성된 KMS 키의 키 구성 요소를 만들 수 없습니다.

키 구성 요소를 다시 가져오려면 처음 키 구성 요소를 가져올 때와 동일한 절차를 사용하되, 다음 예외를 적용합니다.

  • 새 KMS 키를 만드는 대신 기존 KMS 키를 사용합니다. 가져오기 절차의 1단계를 건너뛸 수 있습니다.

  • KMS 키에 키 구성 요소가 있으면 키 구성 요소를 다시 가져오기 전에 기존 키 구성 요소를 삭제해야 합니다.

키 구성 요소를 KMS 키로 가져올 때마다 해당 KMS 키의 가져오기 토큰과 새 래핑 키를 다운로드하여 사용해야 합니다. 래핑 절차는 키 구성 요소의 내용에 영향을 주지 않으므로 동일한 키 구성 요소를 다양한 래핑 키(서로 다른 가져오기 토큰)로 가져올 수 있습니다.

가져온 키 구성 요소로 KMS 키를 보는 방법

키 구성 요소 없이 KMS 키를 만드는 경우, KMS 키의 Origin 속성 값이 EXTERNAL이 되고 이 값은 변경할 수 없습니다. 가져온 키 구성 요소를 사용하도록 설계된 키는 AWS KMS에서 제공하는 키 구성 요소를 사용하도록 변환할 수 없습니다.

가져온 키 구성 요소가 필요한 KMS 키는 AWS KMS 콘솔이나 AWS KMS API를 사용하여 확인할 수 있습니다. 콘솔 또는 API를 사용하여 키 구성 요소의 만료 여부와 시기와 같은 키 구성 요소의 속성을 볼 수도 있습니다.

가져온 키 구성 요소로 KMS 키를 식별하려면(콘솔)

  1. AWS KMS 콘솔(https://console.aws.amazon.com/kms)을 엽니다.

  2. AWS 리전을 변경하려면 페이지의 오른쪽 위 모서리에 있는 리전 선택기를 사용합니다.

  3. 다음 방법 중 하나를 사용하여 KMS 키의 Origin 속성을 봅니다.

    • KMS 키 테이블에 출처(Origin) 열을 추가하려면 오른쪽 상단 모서리에서 설정 아이콘을 선택합니다. 출처(Origin)를 확인한 다음 확인(Confirm)을 선택합니다. 출처(Origin) 열에서 오리진 속성 값이 EXTERNAL인 KMS 키를 쉽게 식별할 수 있습니다.

    • 특정 KMS 키의 Origin 속성 값을 찾으려면 해당 KMS 키의 키 ID 또는 별칭을 선택합니다. 암호화 구성 탭을 선택합니다. 일반 구성 섹션 아래에 탭이 있습니다.

  4. 키 구성 요소에 대한 세부 정보를 보려면 키 구성 요소 탭을 선택합니다. 이 탭은 가져온 키 구성 요소가 있는 KMS 키에 대해서만 세부 정보 페이지에 나타납니다.

가져온 키 구성 요소로 KMS 키를 식별하려면(AWS KMS API)

DescribeKey 작업을 사용합니다. 응답에는 다음 예제에 표시된 것과 같이 KMS 키의 Origin 속성, 만료 모델 및 만료 날짜가 포함됩니다.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "ExpirationModel": "KEY_MATERIAL_EXPIRES" "ValidTo": 1568894400.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": 1568289600.0, "Enabled": false, "MultiRegion": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }