

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

# 수동으로 키 교체
<a name="rotate-keys-manually"></a>

자동 또는 온디맨드 교체 기능을 사용하는 대신 새 KMS 키를 생성해 현재 KMS 키를 대체하는 방법을 선택할 수도 있습니다. 새 KMS 키에 현재 KMS 키와 다른 암호화 구성 요소가 있는 경우 새 KMS 키를 사용하면 기존 KMS 키에서 키 구성 요소를 변경하는 것과 동일한 효과가 있습니다. 한 KMS 키를 다른 KMS 키로 교체하는 프로세스를 *수동 키 교체*라고 합니다.

![\[Diagram showing manual key rotation process with application, old key, and new key.\]](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/key-rotation-manual.png)


 수동 교체는 비대칭 KMS 키, HMAC KMS 키 및 [사용자 지정 키 스토어](key-store-overview.md#custom-key-store-overview)의 KMS 키와 같이 자동 또는 온디맨드 키 교체에 적합하지 않은 KMS 키를 교체하려는 경우에 적합합니다.

**참고**  
새 KMS 키를 사용하기 시작할 때는가 원래 KMS 키가 암호화한 데이터를 해독할 AWS KMS 수 있도록 원래 KMS 키를 활성화된 상태로 유지해야 합니다.

KMS 키를 수동으로 교체하는 경우 애플리케이션에서 KMS 키 ID 또는 키 ARN에 대한 참조도 업데이트해야 합니다. 친숙한 이름을 KMS 키와 연결하는 [별칭](kms-alias.md)을 사용하면 이 프로세스를 더 쉽게 수행할 수 있습니다. 별칭을 사용하여 애플리케이션에서 KMS 키를 참조합니다. 그런 다음 애플리케이션에서 사용하는 KMS 키를 변경하려면 애플리케이션 코드를 편집하는 대신 별칭의 대상 KMS 키를 변경합니다. 자세한 내용은 [애플리케이션에서 별칭을 사용하는 방법 알아보기](alias-using.md)을 참조하세요.

**참고**  
수동으로 교체된 KMS 키의 최신 버전을 가리키는 별칭은 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) 및 [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html), [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html), [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html), [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)와 같은 암호화 작업에 적합한 해결책입니다. [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)또는[ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)과 같이 KMS 키를 관리하는 작업에서는 별칭을 사용할 수 없습니다.  
수동으로 교체된 대칭 암호화 KMS 키에서 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출할 때 명령에서 `KeyId` 파라미터를 생략합니다.는 사이퍼텍스트를 암호화한 KMS 키를 AWS KMS 자동으로 사용합니다.  
비대칭 KMS 키로 `Decrypt` 또는 [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)를 호출하거나 HMAC KMS 키로 [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)를 호출할 때 `KeyId` 파라미터가 필요합니다. 키를 수동으로 교체하는 경우와 같이 `KeyId` 파라미터 값이 암호화 작업을 수행한 KMS 키를 더 이상 가리키지 않는 별칭인 경우 이러한 요청이 실패합니다. 이 오류를 방지하려면 각 작업에 대해 올바른 KMS 키를 추적하고 지정해야 합니다.

별칭의 대상 KMS 키를 변경하려면 AWS KMS API에서 [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html) 작업을 사용합니다. 예를 들어, 이 명령은 새 KMS 키를 가리키도록 `alias/TestKey` 별칭을 업데이트합니다. 작업이 출력을 반환하지 않기 때문에 예제에서는 [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 작업을 사용하여 별칭이 이제 다른 KMS 키와 연결되고 `LastUpdatedDate` 필드가 업데이트되었음을 ​​보여줍니다. ListAliases 명령은의 [`query` 파라미터를](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html#cli-usage-filter-client-side-specific-values) 사용하여 AWS CLI `alias/TestKey`별칭만 가져옵니다.

```
$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/TestKey`]'
{
    "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 --query 'Aliases[?AliasName==`alias/TestKey`]'
{
    "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
        },
    ]
}
```