AWS KMS keys 교체 - AWS Key Management Service

AWS KMS keys 교체

암호화 모범 사례에 따르면 암호화 키를 광범위하게 사용하지 않는 것이 좋습니다. KMS 키에 대한 새 암호화 자료를 만들려면 새 KMS 키를 만든 다음 새 KMS 키를 사용하도록 애플리케이션 또는 별칭을 변경하면 됩니다. 또는 기존 KMS 키에 대한 자동 키 교체를 활성화할 수 있습니다.

KMS 키에 대한 자동 키 교체를 활성화하면 AWS KMS는 매년 KMS 키에 대한 새 암호화 구성 요소를 생성합니다. AWS KMS에서 암호화 구성 요소의 모든 이전 버전이 영구적으로 저장되므로 해당 KMS 키를 사용하여 암호화된 데이터를 복호화할 수 있습니다. AWS KMS에서는 KMS 키를 삭제할 때까지 교체된 키 구성 요소가 삭제되지 않습니다. Amazon CloudWatch 및 AWS CloudTrail에서 KMS 키에 대한 키 구성 요소의 교체를 추적할 수 있습니다.

교체된 KMS 키를 사용하여 데이터를 암호화하는 경우 AWS KMS는 현재 키 구성 요소를 사용합니다. 교체된 KMS 키를 사용하여 암호화 텍스트를 복호화하면 AWS KMS는 해당 데이터를 암호화하는 데 사용한 키 구성 요소의 버전을 사용합니다. 특정 버전의 키 구성 요소는 요청할 수 없습니다. AWS KMS는 적절한 키 구성 요소로 투명하게 복호화하므로 코드 변경 없이 애플리케이션과 AWS 서비스에서 교체된 KMS 키를 안전하게 사용할 수 있습니다.

그러나 자동 키 순환은 KMS 키가 보호하는 데이터에는 영향을 주지 않습니다. KMS 키에서 생성한 데이터 키를 교체하거나 KMS 키에서 보호하는 데이터를 다시 암호화하지 않으며, 손상된 데이터 키의 영향을 완화하지 않습니다.

AWS KMS는 AWS KMS에서 생성된 키 구성 요소를 사용한 대칭 암호화 KMS 키에 대해서만 자동 키 교체를 지원합니다. 고객 관리형 KMS 키의 경우 자동 교체는 선택 사항입니다. AWS KMS는 항상 AWS 관리형 KMS 키의 주요 구성 요소를 매년 교체합니다. AWS 소유 KMS 키의 교체 방식은 다양합니다.

참고

AWS 관리형 키에 대한 교체 간격이 2022년 5월에 변경되었습니다. 자세한 내용은 AWS 관리형 키 단원을 참조하세요.

키를 교체하면 암호화 작업에 사용되는 암호화 비밀인 키 구성 요소만 변경됩니다. KMS 키는 키 구성 요소가 변경되는지 여부 또는 횟수에 관계없이 동일한 논리적 리소스입니다. 다음 이미지와 같이, KMS 키의 속성은 변경되지 않습니다.

자동 키 교체에는 다음과 같은 이점이 있습니다.

  • 키를 교체할 때 키 ID, 키 ARN, 리전, 정책 및 권한을 포함한 KMS 키의 속성은 변경되지 않습니다.

  • KMS 키 ID 또는 키 ARN을 참조하는 애플리케이션이나 별칭을 변경할 필요가 없습니다.

  • 키 구성 요소를 교체해도 AWS 서비스에서의 KMS 키 사용에 영향을 미치지 않습니다.

  • 키 교체를 활성화한 후 AWS KMS는 매년 자동으로 KMS 키를 교체합니다. 업데이트를 기억하거나 예약할 필요가 없습니다.

새 KMS 키를 생성하여 원본 KMS 키 대신 사용하기로 결정할 수 있습니다. 이렇게 하면 기존 KMS 키에서 키 구성 요소를 교체하는 것과 동일한 효과가 있으므로, 이 방법은 일반적으로 키를 수동으로 교체하는 것으로 간주됩니다. 수동 교체는 키 교체 일정을 제어하려는 경우에 좋은 선택입니다. 또한 비대칭 KMS 키, HMAC KMS 키, 사용자 지정 키 스토어의 KMS 키, 가져온 키 구성 요소가 있는 KMS 키를 포함하여 자동 키 교체가 적합하지 않은 KMS 키를 교체하는 방법을 제공합니다.

키 교체 및 요금

AWS KMS는 KMS 키를 위해 유지되는 키 구성 요소의 각 버전에 대해 월간 요금을 부과합니다. 자세한 내용은 AWS Key Management Service 요금을 참조하세요.

키 교체 및 할당량

각 KMS 키는 키 리소스 할당량을 계산할 때 교체된 키 구성 요소 버전의 수에 관계없이 하나의 키로 계산됩니다.

키 구성 요소 및 교체에 대한 자세한 내용은 AWS Key Management Service 암호화 세부 정보를 참조하세요.

자동 키 교체의 작동 방식

AWS KMS의 키 교체는 투명하고 사용하기 쉽게 설계된 암호화 모범 사례입니다. AWS KMS는 고객 관리형 키에 대해서만 자동 키 교체(선택 사항)를 지원합니다.

키 구성 요소 관리

AWS KMS는 키 교체가 비활성화된 경우에도 KMS 키의 모든 키 구성 요소를 보존합니다. AWS KMS는 사용자가 KMS 키를 삭제하는 경우에만 키 구성 요소를 삭제합니다.

키 구성 요소 사용

교체된 KMS 키를 사용하여 데이터를 암호화하는 경우 AWS KMS는 현재 키 구성 요소를 사용합니다. 교체된 KMS 키를 사용하여 암호화 텍스트를 복호화하면 AWS KMS는 해당 데이터를 암호화하는 데 사용한 키 구성 요소와 같은 버전을 사용합니다. 특정 버전의 키 구성 요소는 요청할 수 없습니다.

키 관리자 차이

자동 키 교체 옵션은 키 관리자에 따라 다릅니다.

고객 관리형 키

기본적으로 자동 키 교체는 고객 관리형 키에서 사용 중지되지만 승인된 사용자는 이를 사용 및 사용 중지할 수 있습니다. 자동 키 교체를 사용(또는 다시 사용)하면 AWS KMS는 사용 날짜에서 1년(약 365일) 후에 KMS 키를 자동으로 교체하고 이후 매년 교체합니다.

AWS 관리형 키

AWS KMS는 매년(약 365일) AWS 관리형 키를 자동으로 교체합니다. AWS 관리형 키에 대한 키의 교체를 사용 또는 사용 중지할 수 없습니다.

참고

2022년 5월, AWS KMS는 AWS 관리형 키에 대한 교체 일정을 3년(약 1,095일)에서 매년(약 365일)으로 변경했습니다.

새 AWS 관리형 키는 생성된 후 1년이 지나, 그 후 대략 매년 자동으로 교체됩니다.

기존 AWS 관리형 키는 가장 최근 회전 후 1년이 지나, 그 후에는 매년 자동으로 교체됩니다.

AWS 소유 키

AWS 소유 키에 대한 키의 교체를 사용 또는 사용 중지할 수 없습니다. AWS 소유 키의 키 교체 전략은 키를 생성 및 관리하는 AWS 서비스에 의해 결정됩니다. 자세한 내용은 서비스에 대한 사용 설명서 또는 개발자 안내서의 저장 시 암호화 주제를 참조하십시오.

지원되는 KMS 키 유형

자동 키 교체는 AWS KMS에서 생성된(오리진 = AWS_KMS) 키 구성 요소를 사용한 대칭 암호화 KMS 키에 대해서만 지원됩니다.

다음 유형의 KMS 키에서는 자동 키 교체가 지원되지 않지만 이러한 KMS 키를 수동으로 교체할 수 있습니다.

다중 리전 키

다중 리전 키의 자동 키 교체를 활성화 및 비활성화할 수 있습니다. 기본 키에만 속성을 설정합니다. AWS KMS가 키를 동기화할 때 기본 키에서 해당 복제본 키로 속성 설정을 복사합니다. 기본 키의 키 구성 요소가 교체되면 AWS KMS는 해당 키 구성 요소를 모든 복제 키에 자동으로 복사합니다. 자세한 내용은 다중 리전 키 교체 단원을 참조하세요.

비활성화된 KMS 키

KMS 키가 비활성인 동안에는 AWS KMS에서 KMS 키를 교체하지 않습니다. 하지만 키 교체 상태는 변경되지 않으며 KMS 키가 비활성인 동안에는 해당 상태를 변경할 수 없습니다. KMS 키가 다시 활성화되면 키 구성 요소가 1년을 초과한 경우 AWS KMS는 KMS 키를 즉시 교체하고 이후 매년 교체합니다. 키 구성 요소가 1년 미만인 경우 AWS KMS는 원래의 키 교체 일정을 다시 시작합니다.

KMS 키 삭제 보류 중

KMS 키가 삭제 보류 중인 동안에는 AWS KMS에서 KMS 키를 교체하지 않습니다. 키 교체 상태는 false로 설정되며 삭제가 보류 중인 동안에는 해당 상태를 변경할 수 없습니다. 삭제가 취소되면 이전의 키 교체 상태가 복원됩니다. 키 구성 요소가 1년을 초과한 경우 AWS KMS는 KMS 키를 즉시 교체하고 이후 1년마다 교체합니다. 키 구성 요소가 1년 미만인 경우 AWS KMS는 원래의 키 교체 일정을 다시 시작합니다.

AWS 서비스

AWS 서비스에서 서버 측 암호화에 사용하는 고객 관리형 키에서 자동 키 교체를 활성화할 수 있습니다. 연간 교체는 투명하며 AWS 서비스와 호환됩니다.

키 교체 모니터링

AWS 관리형 키 또는 고객 관리형 키의 키 구성 요소를 자동으로 교체할 때 AWS KMS는 Amazon CloudWatch EventsKMS CMK Rotation 이벤트를 기록하고 AWS CloudTrail 로그에 RotateKey 이벤트를 기록합니다. 이러한 레코드를 사용하여 KMS 키가 교체되었는지 확인할 수 있습니다.

최종 일관성

자동 키 교체는 다른 AWS KMS 관리 작업과 동일한 최종 일관성 효과가 적용됩니다. AWS KMS 전체에서 새 키 자료를 사용할 수 있게 되기까지 약간의 지연이 있을 수 있습니다. 그러나 키 구성 요소를 교체해도 암호화 작업이 중단되거나 지연되지는 않습니다. 현재 키 구성 요소는 AWS KMS 전체에서 새 키 구성 요소를 사용할 수 있을 때까지 암호화 작업에 사용됩니다. 다중 리전 키에 대한 키 구성 요소가 자동으로 교체되면 AWS KMS는 관련 다중 리전 키가 있는 모든 리전에서 새 키 구성 요소를 사용할 수 있을 때까지 현재 키 구성 요소를 사용합니다.

자동 키 교체를 활성화하고 비활성화하는 방법

AWS KMS 콘솔 및 AWS KMS API를 사용하여 자동 키 교체를 활성화 및 비활성화할 수 있으며 키 교체 상태를 볼 수 있습니다.

자동 키 교체를 활성화하면 AWS KMS는 활성화 날짜에서 1년 후에 KMS 키의 키 구성 요소를 교체하고 이후 매년 교체합니다.

키 교체 활성화 및 비활성화(콘솔)

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/kms에서 AWS Key Management Service(AWS KMS) 콘솔을 엽니다.

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

  3. 탐색 창에서 고객 관리형 키(Customer managed keys)를 선택합니다. (AWS 관리형 키의 교체를 활성화하거나 비활성화할 수 없습니다. 매년 자동으로 교체됩니다.)

  4. KMS 키의 별칭 또는 키 ID를 선택합니다.

  5. 키 교체(Key rotation) 탭을 선택합니다.

    키 교체(Key rotation) 탭은 다중 리전 대칭 암호화 KMS 키를 포함하여 AWS KMS가 생성한 키 구성 요소가 있는 대칭 암호화 KMS 키의 세부 정보 페이지에만 나타납니다(오리진(Origin)AWS_KMS).

    비대칭 KMS 키, HMAC KMS 키, 가져온 키 구성 요소가 있는 KMS 키 또는 사용자 지정 키 스토어의 KMS 키는 자동으로 교체할 수 없습니다. 그러나 이들을 수동으로 교체할수 있습니다.

  6. 매년 이 KMS 키를 자동 교체(Automatically rotate this KMS key every year) 확인란을 선택하거나 선택 취소합니다.

    참고

    KMS 키가 비활성이거나 삭제 보류 중인 경우 매년 이 KMS 키를 자동 교체(Automatically rotate this KMS key every year) 확인란이 선택 취소되며 이 설정을 변경할 수 없습니다. KMS 키를 활성화하거나 삭제를 취소하면 키 교체 상태가 복원됩니다. 자세한 내용은 자동 키 교체의 작동 방식AWS KMS 키의 키 상태 단원을 참조하세요.

  7. 저장(Save)을 선택합니다.

키 교체 활성화 및 비활성화(AWS KMS API)

AWS Key Management Service(AWS KMS) API를 사용하여 자동 키 교체를 활성화 및 비활성화하고 고객 관리형 키의 현재 교체 상태를 볼 수 있습니다. 이들 예제에서는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

EnableKeyRotation 작업은 지정된 KMS 키에 대한 자동 키 교체를 활성화합니다. DisableKeyRotation 작업은 이를 비활성화합니다. 이러한 작업에서 KMS 키를 식별하려면 해당 키 ID 또는 키 ARN을 사용합니다. 기본적으로 고객 관리형 KMS 키에 대한 키 교체는 비활성화됩니다.

다음 예제에서는 지정된 대칭 암호화 KMS 키에 대해 키 교체를 활성하고 GetKeyRotationStatus 작업을 사용하여 결과를 확인합니다. 그런 다음 키 교체를 비활성화하고 다시 GetKeyRotationStatus를 사용하여 변경 사항을 확인합니다.

$ aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": true } $ aws kms disable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": false }

수동으로 키 교체

자동 키 교체를 활성화하지 않고 새 KMS 키를 생성하여 현재 KMS 키 대신 사용하려고 할 수 있습니다. 새 KMS 키에 현재 KMS 키와 다른 암호화 구성 요소가 있는 경우 새 KMS 키를 사용하면 기존 KMS 키에서 키 구성 요소를 변경하는 것과 동일한 효과가 있습니다. 한 KMS 키를 다른 KMS 키로 교체하는 프로세스를 수동 키 교체라고 합니다.

교체 빈도를 제어할 수 있도록 수동으로 키를 교체하려고 할 수 있습니다. 또한 이 방법은 비대칭 KMS 키, 사용자 지정 키 스토어의 HMAC KMS 키, 가져온 키 구성 요소가 있는 KMS 키와 같이 자동 키 교체를 사용할 수 없는 KMS 키에는 좋은 해결 방법입니다.

참고

새 KMS 키 사용을 시작할 때는 AWS KMS에서 원본 KMS 키를 사용하여 암호화한 데이터를 복호화할 수 있도록 원본 KMS 키를 활성화된 상태로 유지해야 합니다.

새 KMS 키는 현재 KMS 키와 다른 리소스이므로 키 ID 및 ARN이 다릅니다. KMS 키를 변경할 때는 애플리케이션에서 KMS 키 ID 또는 ARN에 대한 참조를 업데이트해야 합니다. 표시 이름을 KMS 키와 연결하는 별칭을 사용하면 이 프로세스를 더 쉽게 수행할 수 있습니다. 별칭을 사용하여 애플리케이션에서 KMS 키를 참조합니다. 그런 다음 애플리케이션에 사용되는 KMS 키를 변경하려고 할 때 별칭의 대상 KMS 키를 변경합니다. 자세한 내용은 애플리케이션에서 별칭 사용 단원을 참조하세요.

별칭의 대상 KMS 키를 업데이트하려면 AWS KMS API에서 UpdateAlias 작업을 사용합니다. 예를 들어, 이 명령은 새 KMS 키를 가리키도록 TestKey 별칭을 업데이트합니다. 작업이 출력을 반환하지 않기 때문에 예제에서는 ListAliases 작업을 사용하여 별칭이 이제 다른 KMS 키와 연결되고 LastUpdatedDate 필드가 업데이트되었음을 ​​보여줍니다.

$ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestKey", "AliasName": "alias/TestKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1521097200.123, "LastUpdatedDate": 1521097200.123 }, ] } $ aws kms update-alias --alias-name alias/TestKey --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 $ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestKey", "AliasName": "alias/TestKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1521097200.123, "LastUpdatedDate": 1604958290.722 }, ] }