고객 마스터 키 교체 - AWS Key Management Service

고객 마스터 키 교체

암호화 모범 사례에 따르면 암호화 키를 광범위하게 사용하지 않는 것이 좋습니다. AWS Key Management Service(AWS KMS) 고객 마스터 키(CMK)에 대한 새 암호화 구성 요소를 생성하려면 새 CMK를 생성한 다음 애플리케이션 또는 별칭을 변경하여 새 CMK를 사용할 수 있습니다. 또는 기존 고객 관리형 CMK에 대해 자동 키 교체를 활성화할 수 있습니다.

고객 관리형 CMK에 대한 자동 키 교체를 활성화하면 AWS KMS는 매년 CMK에 대한 새 암호화 구성 요소를 생성합니다. 또한 AWS KMS에서 CMK의 기존 암호화 구성 요소가 저장되므로 이 구성 요소를 사용하여 암호화된 데이터를 암호화 해제할 수 있습니다. AWS KMS에서는 CMK를 삭제할 때까지 교체된 키 구성 요소가 삭제되지 않습니다.

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

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

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

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

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

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

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

키 교체 및 요금

고객 관리형 CMK를 교체하면 추가 월별 요금이 발생할 수 있습니다. 자세한 내용은 AWS Key Management Service 요금을 참조하십시오. 백업 키와 교체에 대한 자세한 내용은 KMS 암호화 세부 정보 백서를 참조하십시오.

자동 키 교체의 작동 방식

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

  • 백업 키 관리. AWS KMS는 키 교체가 비활성화된 경우에도 CMK의 모든 백업 키를 보관합니다. CMK가 삭제되는 경우에만 백업 키가 삭제됩니다. CMK를 사용하여 암호화하면 AWS KMS는 현재 백업 키를 사용합니다. CMK를 사용하여 암호화 해제하면 AWS KMS는 암호화하는 데 사용한 백업 키를 사용합니다.

  • 키 교체 활성화 및 비활성화. 고객 관리형 CMK에 대한 자동 키 교체는 기본적으로 비활성화됩니다. 키 교체를 활성화(또는 다시 활성화)하면 AWS KMS는 활성화 날짜에서 365일 후에 CMK를 자동으로 교체하고 이후 365일마다 교체합니다.

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

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

  • AWS 관리형 CMK. AWS관리형 CMK에 대한 키 교체는 사용자가 관리할 수 없습니다. AWS KMS는 AWS 관리형 CMK를 3년(1095일)마다 자동으로 교체합니다.

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

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

  • 키 교체 모니터링. AWS KMS는 AWS 관리형 CMK 또는 고객 관리형 CMK에 대한 키 구성 요소를 자동으로 교체할 때 KMS CMK 교체 이벤트Amazon CloudWatch Events에 기록합니다. 이 이벤트를 사용하여 CMK가 교체되었는지 확인할 수 있습니다.

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

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

AWS KMS 콘솔 또는 AWS KMS API를 사용하여 자동 키 교체를 활성화 및 비활성화할 수 있으며 고객 관리형 CMK의 교체 상태를 볼 수 있습니다.

자동 키 교체를 활성화하면 AWS KMS는 활성화 날짜에서 365일 후에 CMK를 교체하고 이후 365일마다 교체합니다.

키 교체 활성화 및 비활성화(console)

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

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

  3. 탐색 창에서 고객 관리형 키를 선택합니다. (AWS 관리형 키의 교체를 활성화 또는 비활성화할 수 없습니다. 3년마다 자동으로 교체됩니다.)

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

  5. Key rotation(키 회전) 탭을 선택합니다.

    Key rotation(키 회전) 탭은 AWS KMS가 생성한 키 구성 요소가 있는 대칭 CMK의 세부 정보 페이지에만 나타납니다(Origin(오리진)AWS_KMS). 비대칭 CMK, 가져온 키 구성 요소가 있는 CMK 또는 사용자 지정 키 스토어의 CMK는 자동으로 교체할 수 없습니다. 그러나 이들을 수동으로 회전할수 있습니다.

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

    참고

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

  7. Save를 선택합니다.

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

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

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

다음 예제에서는 지정된 대칭 CMK에 대해 키 교체를 활성하고 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 }

수동으로 키 교체

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

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

참고

새 CMK 사용을 시작할 때는 AWS KMS에서 원본 CMK를 사용하여 암호화한 데이터를 해독할 수 있도록 원본 CMK를 활성화된 상태로 유지해야 합니다. 데이터의 암호를 해독할 때 KMS는 데이터를 암호화하는 데 사용된 CMK를 식별하고 동일한 CMK를 사용하여 데이터의 암호를 해독합니다. 원본 CMK와 새 CMK를 모두 활성화된 상태로 유지하는 한에서 AWS KMS는 두 CMK 중 하나로 암호화된 데이터의 암호를 해독할 수 있습니다.

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

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

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