

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

# 활성 브랜치 키 교체
<a name="rotate-branch-key"></a>

각 브랜치 키에는 한 번에 하나의 활성 버전만 있을 수 있습니다. 일반적으로 각 활성 브랜치 키 버전은 여러 요청을 충족하는 데 사용됩니다. 하지만 활성 브랜치 키의 재사용 범위를 제어하고 활성 브랜치 키의 교체 빈도를 결정할 수 있습니다.

브랜치 키는 일반 텍스트 데이터 키를 암호화하는 데 사용되지 않습니다. 이들은 일반 텍스트 데이터 키를 암호화하는 고유한 래핑 키를 도출하는 데 사용됩니다. [래핑 키 추출 프로세스](reference.md#hierarchical-keyring-details)는 28바이트의 무작위성을 갖는 고유한 32바이트 래핑 키를 생성합니다. 즉, 브랜치 키는 암호화 마모가 발생하기 전에 79옥틸리온(296) 이상의 고유한 래핑 키를 도출할 수 있습니다. 이렇게 소진 위험은 매우 낮지만 비즈니스 또는 계약 규칙이나 정부 규정으로 인해 활성 브랜치 키를 교체해야 할 수도 있습니다.

브랜치 키의 활성 버전은 교체할 때까지 활성 상태로 유지됩니다. 이전 버전의 활성 브랜치 키는 암호화 작업을 수행하는 데 사용되지 않으며 새 래핑 키를 추출하는 데 사용될 수 없지만, 여전히 쿼리할 수 있으며 활성 상태에서 암호화한 데이터 키를 해독하는 래핑 키를 제공할 수 있습니다.

**주의**  
테스트 환경에서 브랜치 키를 삭제하는 것은 되돌릴 수 없습니다. 삭제된 브랜치 키는 복구할 수 없습니다. 테스트 환경에서 ID가 동일한 브랜치 키를 삭제하고 다시 생성하면 다음과 같은 문제가 발생할 수 있습니다.  
이전 테스트 실행의 재료가 캐시에 남아 있을 수 있습니다.
일부 테스트 호스트 또는 스레드는 삭제된 브랜치 키를 사용하여 데이터를 암호화할 수 있습니다.
삭제된 브랜치로 암호화된 데이터는 해독할 수 없습니다.
통합 테스트에서 암호화 실패를 방지하려면:  
새 브랜치 키를 생성하기 전에 계층적 키링 참조를 재설정하거나
각 테스트에 고유한 브랜치 키 IDs 사용

**필수 권한**  
브랜치 키를 교체하려면 키 스토어 작업에 지정된 KMS 키에 대한 [kms:GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 및 [kms:ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) 권한이 필요합니다.

**활성 브랜치 키 교체**  
`VersionKey` 작업을 사용하여 활성 브랜치 키를 교체합니다. 활성 브랜치 키를 교체하면 이하 버전을 대체하는 새 브랜치 키가 생성됩니다. 활성 브랜치 키를 교체해도 `branch-key-id`는 변경되지 않습니다. `VersionKey`를 호출할 때 현재 활성 브랜치 키를 식별하는 `branch-key-id`를 지정해야 합니다.

------
#### [ Java ]

```
keystore.VersionKey(
    VersionKeyInput.builder()
        .branchKeyIdentifier("branch-key-id")
        .build()
);
```

------
#### [ C\$1 / .NET ]

```
 keystore.VersionKey(new VersionKeyInput{BranchKeyIdentifier = branchKeyId});
```

------
#### [ Rust ]

```
keystore.version_key()
        .branch_key_identifier(branch_key_id)
        .send()
        .await?;
```

------