

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

# 외부 키 스토어
<a name="keystore-external"></a>

외부 키 스토어를 사용하면 외부의 암호화 키를 사용하여 AWS 리소스를 보호할 수 있습니다 AWS. 이 고급 기능은 사용자가 제어하는 외부 키 관리 시스템에 저장된 암호화 키로 보호해야 하는 규제 대상 워크로드용으로 설계되었습니다. 외부 키 스토어는 외부에서 소유하고 제어하는 키 구성 요소로 암호화할 수 있는 기능을 AWS포함하여의 데이터에 대한 주권 제어를 제공하는 [AWS 디지털 주권 서약](https://aws.amazon.com/blogs/security/aws-digital-sovereignty-pledge-control-without-compromise/)을 지원합니다 AWS.

*외부 키 스토어*는 외부에서 소유하고 관리하는 *외부 키 관리자가 지원하는* [사용자 지정 키 스토어](key-store-overview.md#custom-key-store-overview)입니다 AWS. 외부 키 관리자는 물리적 또는 가상 하드웨어 보안 모듈(HSM)이거나 암호화 키를 생성하고 사용할 수 있는 하드웨어 기반 또는 소프트웨어 기반 시스템일 수 있습니다. 외부 키 스토어에서 KMS 키를 사용하는 암호화 및 복호화 작업은 *HYOK(Hold Your Own Key)*라는 기능인 암호화 키 구성 요소를 사용하여 외부 키 관리자에 의해 수행됩니다.

AWS KMS 는 외부 키 관리자와 직접 상호 작용하지 않으며 키를 생성, 보기, 관리 또는 삭제할 수 없습니다. 대신는 사용자가 제공하는 [외부 키 스토어 프록시](#concept-xks-proxy)(XKS 프록시) 소프트웨어와만 AWS KMS 상호 작용합니다. 외부 키 스토어 프록시는 AWS KMS 와 외부 키 관리자 간의 모든 통신을 중재합니다. 의 모든 요청을 외부 키 관리자 AWS KMS 로 전송하고 외부 키 관리자의 응답을 로 다시 전송합니다 AWS KMS. 또한 외부 키 스토어 프록시는의 일반 요청을 외부 키 관리자가 이해할 수 있는 AWS KMS 공급업체별 형식으로 변환하므로 다양한 공급업체의 키 관리자와 함께 외부 키 스토어를 사용할 수 있습니다.

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)를 포함하여 클라이언트측 암호화를 위해 외부 키 스토어에서 KMS 키를 사용할 수 있습니다. 그러나 외부 키 스토어는 서버 측 암호화에 중요한 리소스이므로 외부의 암호화 키를 사용하여 여러에서 AWS 리소스를 보호할 AWS 서비스 수 있습니다 AWS. AWS 서비스 대칭 암호화를 위한 [고객 관리형 키를](concepts.md#customer-mgn-key) 지원하는는 외부 키 스토어의 KMS 키도 지원합니다. 서비스 지원에 관한 자세한 내용을 확인하려면 [AWS 서비스 통합](https://aws.amazon.com/kms/features/#AWS_service_integration)을 참조하세요.

외부 키 스토어를 사용하면 외부에서 암호화 키를 저장하고 사용해야 하는 규제된 워크로드 AWS KMS 에를 사용할 수 있습니다 AWS. 그러나 이는 표준 공유 책임 모델에서 크게 벗어나며 추가 운영 부담이 필요합니다. 대부분의 고객에게 가용성 및 지연 시간에 대한 더 큰 위험은 외부 키 스토어의 인식된 보안 이점을 초과합니다.

외부 키 스토어를 사용하면 신뢰할 수 있는 루트를 제어할 수 있습니다. 외부 키 스토어의 KMS 키로 암호화된 데이터는 사용자가 제어하는 외부 키 관리자를 통해서만 복호화할 수 있습니다. 외부 키 스토어 연결을 해제하거나 외부 키 스토어 프록시에서 외부 키 관리자 연결을 해제하는 등 외부 키 관리자에 대한 액세스를 일시적으로 취소하면 복원할 때까지 암호화 키에 대한 모든 액세스 권한이 AWS 상실됩니다. 이 기간 동안에는 KMS 키로 암호화된 사이퍼텍스트를 복호화할 수 없습니다. 외부 키 관리자에 대한 액세스를 영구적으로 취소하면 외부 키 스토어의 KMS 키로 암호화된 모든 사이퍼텍스트를 복구할 수 없게 됩니다. 유일한 예외는 KMS [키로 보호되는 데이터](data-keys.md) 키를 잠시 캐싱하는 AWS 서비스입니다. 이러한 데이터 키는 리소스를 비활성화하거나 캐시가 만료될 때까지 계속 작동합니다. 자세한 내용은 [사용할 수 없는 KMS 키가 데이터 키에 미치는 영향](unusable-kms-keys.md)을 참조하세요.

외부 키 스토어는 암호화 키가 전적으로 사용자의 제어 하에 있고 액세스할 수 없는 규제 대상 워크로드의 몇 가지 사용 사례를 차단 해제합니다 AWS. 그러나 이는 클라우드 기반 인프라 운영 방식의 큰 변화이자 공동 책임 모델의 중요한 변화입니다. 대부분의 워크로드에서 가용성과 성능에 대한 추가 운영 부담과 더 큰 위험은 외부 키 스토어의 인식된 보안 이점을 초과합니다.



**외부 키 스토어가 필요한가요?**

대부분의 사용자의 경우 [FIPS 140-3 보안 수준 3 검증 하드웨어 보안 모듈](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4884)로 보호되는 기본 AWS KMS 키 스토어는 보안, 제어 및 규제 요구 사항을 충족합니다. 외부 키 스토어 사용자는 상당한 비용, 유지 보수 및 문제 해결 부담과 지연 시간, 가용성 및 신뢰성에 대한 위험을 부담하게 됩니다.

외부 키 스토어를 고려할 때 잠시 시간을 내어 사용자가 소유하고 관리하는 AWS CloudHSM 클러스터에서 지원하는 [AWS CloudHSM 키 스토어](keystore-cloudhsm.md), 자체 HSM에서 생성하고 요청 시 KMS 키에서 삭제할 수 있는 [가져온 키 구성 요소](importing-keys.md)가 있는 KMS 키 등의 대안에 대해 알아보세요. 특히 매우 짧은 만료 간격으로 키 구성 요소를 가져오면 성능 또는 가용성 위험 없이 비슷한 수준의 제어를 제공할 수 있습니다.

다음과 같은 요구 사항이 있는 경우 외부 키 스토어가 조직에 적합한 솔루션일 수 있습니다.
+ 온프레미스 키 관리자 또는 사용자가 제어하는 외부의 키 관리자에서 암호화 키를 사용해야 AWS 합니다.
+ 암호화 키가 클라우드 외부에서만 제어할 수 있음을 입증해야 합니다.
+ 독립된 권한이 있는 암호화 키를 사용하여 암호화하고 복호화해야 합니다.
+ 키 구성 요소는 독립적인 보조 감사 경로를 따라야 합니다.

외부 키 스토어를 선택하는 경우 AWS외부의 암호화 키를 사용하여 보호해야 하는 워크로드로 사용을 제한합니다.



**공동 책임 모델**

표준 KMS 키는가 AWS KMS 소유하고 관리하는 HSMs에서 생성되고 사용되는 키 구성 요소를 사용합니다. KMS 키에 대한 액세스 제어 정책을 설정하고 KMS 키를 사용하여 리소스를 보호 AWS 서비스 하도록를 구성합니다.는 KMS 키에 있는 키 구성 요소의 보안, 가용성, 지연 시간 및 내구성에 대한 책임을 AWS KMS 집니다.

외부 키 스토어의 KMS 키는 외부 키 관리자의 키 구성 요소 및 작업에 의존합니다. 따라서 책임의 균형이 사용자의 방향으로 바뀝니다. 외부 키 관리자에서 암호화 키의 보안, 신뢰성, 내구성 및 성능에 대한 책임은 사용자에게 있습니다. AWS KMS 는 요청에 즉시 응답하고 외부 키 스토어 프록시와 통신하며 보안 표준을 유지할 책임이 있습니다. 모든 외부 키가 최소한 표준 사이퍼텍스트보다 강력한 AWS KMS 사이퍼텍스트를 저장하도록 하기 위해는 AWS KMS 먼저 KMS 키와 관련된 AWS KMS 키 구성 요소로 모든 일반 텍스트를 암호화한 다음, [*이중*](#concept-double-encryption) 암호화라고 하는 프로시저인 외부 키로 암호화하기 위해 외부 키 관리자에게 전송합니다. 결과적으로 AWS KMS 나 외부 키 구성 요소의 소유자는 이중 암호화된 사이퍼텍스트를 단독으로 복호화할 수 없습니다.

규정 및 성능 표준을 충족하는 외부 키 관리자를 유지 관리하고, [AWS KMS 외부 키 스토어 프록시 API 사양](https://github.com/aws/aws-kms-xksproxy-api-spec/)을 준수하는 외부 키 스토어 프록시를 제공 및 유지 관리하고, 키 구성 요소의 가용성 및 내구성을 보장할 책임은 사용자에게 있습니다. 또한 외부 키 스토어를 생성, 구성 및 유지 관리해야 합니다. 유지 관리하는 구성 요소로 인해 오류가 발생하는 경우 서비스가 과도한 중단 없이 리소스에 액세스할 AWS 수 있도록 오류를 식별하고 해결할 준비가 되어 있어야 합니다.는 문제의 원인과 가장 가능성이 높은 해결 방법을 결정하는 데 도움이 되는 [문제 해결 지침을](xks-troubleshooting.md) AWS KMS 제공합니다.

가 외부 키 스토어에 대해 기록하는 AWS KMS [Amazon CloudWatch 지표 및 차원](monitoring-cloudwatch.md#kms-metrics)을 검토합니다. AWS KMS 에서는 성능 및 운영 문제가 발생하기 전에 조기 징후를 감지할 수 있도록 외부 키 스토어를 모니터링하는 CloudWatch 경보를 생성할 것을 강력히 권장합니다.

**무엇이 바뀌고 있나요?**

외부 키 스토어는 대칭 암호화 KMS 키만 지원합니다. 내에서 AWS KMS는 [액세스 제어 정책 설정](authorize-xks-key-store.md) 및 키 [사용 모니터링을](monitoring-overview.md) 포함하여 다른 [고객 관리형 키를](concepts.md#customer-mgn-key) 관리하는 것과 거의 동일한 방식으로 외부 키 스토어에서 KMS 키를 사용하고 관리합니다. 동일한 파라미터와 동일한 API를 사용하여 모든 KMS 키에 사용하는 외부 키 스토어에서 KMS 키로 암호화 작업을 요청합니다. 가격도 표준 KMS 키와 동일합니다. 자세한 내용은 [외부 키 저장소의 KMS 키](keystore-external-key-manage.md) 및 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/)을 참조하세요.

그러나 외부 키 스토어를 사용하면 다음 원칙이 변경됩니다.
+ 키 작업의 가용성, 내구성 및 지연 시간에 대한 책임은 사용자에게 있습니다.
+ 외부 키 관리자 시스템의 개발, 구매, 운영 및 라이선스에 대한 모든 비용은 사용자의 책임입니다.
+ 에서 외부 키 스토어 프록시로의 모든 요청에 대해 [독립적인 권한 부여](authorize-xks-key-store.md#xks-proxy-authorization) AWS KMS 를 구현할 수 있습니다.
+ 외부 키 스토어 프록시의 모든 작업과 AWS KMS 요청과 관련된 외부 키 관리자의 모든 작업을 모니터링, 감사 및 로깅할 수 있습니다.

**어디에서 시작합니까?**

외부 키 스토어를 생성하고 관리하려면 [외부 키 스토어 프록시 연결 옵션을 선택하고](choose-xks-connectivity.md), [사전 조건을 수집하고](create-xks-keystore.md#xks-requirements), [외부 키 스토어를 생성하고 구성](create-xks-keystore.md)해야 합니다.

**할당량**

AWS KMS 는 연결 상태에 관계없이 [키 스토어와 외부 키 스토어를 모두 포함하여 각 및 리전에서 최대 10개의 사용자 지정](resource-limits.md) [키 스토어](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)를 허용합니다. AWS 계정 [AWS CloudHSM](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html) 또한 [외부 키 스토어에 KMS 키 사용](requests-per-second.md#rps-key-stores)에 대한 AWS KMS 요청 할당량이 있습니다.

외부 키 스토어 프록시에 대해 [VPC 프록시 연결](#concept-xks-connectivity)을 선택하는 경우 VPC, 서브넷 및 Network Load Balancer와 같은 필수 구성 요소에 할당량이 있을 수도 있습니다. 이러한 할당량에 대한 자세한 내용을 보려면 [Service Quotas 콘솔](https://console.aws.amazon.com/servicequotas/home)을 사용합니다.



**리전**

네트워크 지연 시간을 최소화하려면 [외부 키 관리자](#concept-ekm)와 가장 가까운 AWS 리전 에 외부 키 스토어 구성 요소를 생성합니다. 가능하면 네트워크 왕복 시간(RTT)이 35밀리초 이하인 리전을 선택합니다.

외부 키 스토어는 중국(베이징) 및 중국(닝샤)을 제외하고 AWS KMS 가 지원되는 모든 AWS 리전 에서 지원됩니다.

**지원되지 않는 기능**

AWS KMS 는 사용자 지정 키 스토어에서 다음 기능을 지원하지 않습니다.
+ [비대칭 KMS 키](symmetric-asymmetric.md)
+ [HMAC KMS 키](hmac.md)
+ [가져온 키 구성 요소가 있는 KMS 키](importing-keys.md)
+ [자동 키 교체](rotate-keys.md)
+ [다중 리전 키](multi-region-keys-overview.md)

**자세히 알아보기:**
+ *AWS News Blog*의 [AWS KMS KMS 외부 키 스토어 발표](https://aws.amazon.com/blogs/aws/announcing-aws-kms-external-key-store-xks/)

## 외부 키 스토어 개념
<a name="xks-concepts"></a>

외부 키 저장소에서 사용하는 기본 용어와 개념에 대해 알아봅니다.

### 외부 키 스토어
<a name="concept-external-key-store"></a>

*외부 키 스토어*는 사용자가 소유하고 관리하는 외부 키 관리자가 지원하는 AWS KMS [사용자 지정 키 스토어](key-store-overview.md#custom-key-store-overview) AWS 입니다. 외부 키 스토어의 각 KMS 키는 외부 키 관리자의 [외부 키](#concept-external-key)와 연결됩니다. 암호화 또는 복호화를 위해 외부 키 스토어에서 KMS 키를 사용하는 경우 HYOK(*Hold your Own Keys*)로 알려진 배열인 외부 키를 사용하여 외부 키 관리자에서 작업이 수행됩니다. 이 기능은 자체 외부 키 관리자에서 암호화 키를 유지해야 하는 조직을 위해 설계되었습니다.

외부 키 스토어는 AWS 리소스를 보호하는 암호화 키와 작업이 사용자가 제어하는 외부 키 관리자에 남아 있도록 합니다.는 데이터를 암호화 및 해독하기 위해 외부 키 관리자에게 요청을 AWS KMS 보내지만 외부 키를 생성, 삭제 또는 관리할 AWS KMS 수는 없습니다. 에서 외부 키 관리자 AWS KMS 로의 모든 요청은 사용자가 제공, 소유 및 관리하는 [외부 키 스토어 프록시](#concept-xks-proxy) 소프트웨어 구성 요소에 의해 조정됩니다.

AWS AWS KMS [고객 관리형 키를](concepts.md) 지원하는 서비스는 외부 키 스토어의 KMS 키를 사용하여 데이터를 보호할 수 있습니다. 결과적으로 데이터는 궁극적으로 외부 키 관리자의 암호화 작업을 사용하여 키로 보호됩니다.

외부 키 스토어의 KMS 키는 표준 KMS 키와 신뢰 모델, [공동 규정 배열](#xks-shared-responsibility) 및 성능 기대치가 근본적으로 다릅니다. 외부 키 스토어 사용 시 키 구성 요소 및 암호화 작업의 보안 및 무결성에 대한 책임은 사용자에게 있습니다. 외부 키 스토어의 KMS 키 가용성 및 지연 시간은 하드웨어, 소프트웨어, 네트워킹 구성 요소 및 AWS KMS 와 외부 키 관리자 간 거리의 영향을 받습니다. 또한 외부 키 관리자와 통신하는 데 필요한 네트워킹 및 로드 밸런싱 인프라에 대해 추가 비용이 발생할 수 있습니다. AWS KMS

보다 광범위한 데이터 보호 전략의 일부로 외부 키 스토어를 사용할 수 있습니다. 보호하는 각 AWS 리소스에 대해 외부 키 스토어에 KMS 키가 필요한 리소스와 표준 KMS 키로 보호할 수 있는 리소스를 결정할 수 있습니다. 이를 통해 특정 데이터 분류, 애플리케이션 또는 프로젝트에 대한 KMS 키를 유연하게 선택할 수 있습니다.

### 외부 키 관리자
<a name="concept-ekm"></a>

외부 키 관리자**는 256비트 AES 대칭 키를 생성하고 대칭 암호화 및 복호화를 수행할 수 있는 AWS 외부의 구성 요소입니다. 외부 키 스토어의 외부 키 관리자는 물리적 하드웨어 보안 모듈(HSM), 가상 HSM 또는 HSM 구성 요소가 있거나 없는 소프트웨어 키 관리자일 수 있습니다. 온프레미스 AWS, 로컬 또는 원격 데이터 센터, 클라우드 등 외부 어디에나 위치할 수 있습니다. 단일 외부 키 관리자 또는 암호화 키를 공유하는 여러 관련 키 관리자 인스턴스(예: HSM 클러스터)에서 외부 키 스토어를 지원할 수 있습니다. 외부 키 스토어는 여러 공급업체의 다양한 외부 관리자를 지원하도록 설계되었습니다. 외부 키 관리자에 연결하는 방법에 대한 자세한 내용은 [외부 키 저장소 프록시 연결 옵션 선택](choose-xks-connectivity.md) 단원을 참조하세요.

### 외부 키
<a name="concept-external-key"></a>

외부 키 스토어의 각 KMS 키는 외부 키**라고 하는 [외부 키 관리자](#concept-ekm)의 암호화 키와 연결됩니다. 외부 키 스토어에서 KMS 키로 암호화하거나 복호화하면 외부 키를 사용하여 [외부 키 관리자](#concept-ekm)에서 암호화 작업이 수행됩니다.

**주의**  
외부 키는 KMS 키 작동에 필수적입니다. 외부 키가 분실되거나 삭제되면 연결된 KMS 키로 암호화된 사이퍼텍스트를 복구할 수 없습니다.

외부 키 스토어의 경우 외부 키는 활성화되고 암호화와 복호화를 수행할 수 있는 256비트 AES 키여야 합니다. 자세한 외부 키 요구 사항은 [외부 키 스토어의 KMS 키 요구 사항](create-xks-keys.md#xks-key-requirements) 섹션을 참조하세요.

AWS KMS 는 외부 키를 생성, 삭제 또는 관리할 수 없습니다. 암호화 키 구성 요소는 외부 키 관리자를 떠나지 않습니다. 외부 키 스토어에서 KMS 키를 생성할 때는 외부 키의 ID(`XksKeyId`)를 제공합니다. 외부 키 관리자가 외부 키 ID와 연결된 키 구성 요소를 교체할 수 있지만 KMS 키와 연결된 외부 키 ID는 변경할 수 없습니다.

외부 키 스토어의 KMS 키에는 외부 키 외에도 AWS KMS 키 구성 요소가 있습니다. KMS 키로 보호되는 데이터는 먼저 AWS KMS 키 구성 요소를 AWS KMS 사용하여 암호화한 다음 외부 키를 사용하여 외부 키 관리자가 암호화합니다. 이 [이중 암호화](#concept-double-encryption) 프로세스를 통해 KMS 키로 보호되는 사이퍼텍스트가 항상 AWS KMS으로만 보호되는 사이퍼텍스트 이상으로 강력해집니다.

많은 암호화 키에는 서로 다른 유형의 식별자가 있습니다. 외부 키 스토어에 KMS 키를 생성할 때 [외부 키 스토어 프록시](#concept-xks-proxy)가 외부 키를 참조하는 데 사용하는 외부 키의 ID를 제공하세요. 잘못된 식별자를 사용하면 외부 키 스토어에서 KMS 키를 생성하려는 시도가 실패합니다.

### 외부 키 스토어 프록시
<a name="concept-xks-proxy"></a>

*외부 키 스토어 프록시*(“XKS 프록시”)는와 외부 키 관리자 간의 모든 통신을 매개하는 고객 소유 AWS KMS 및 고객 관리형 소프트웨어 애플리케이션입니다. 또한 일반 AWS KMS 요청을 공급업체별 외부 키 관리자가 이해하는 형식으로 변환합니다. 외부 키 스토어 프록시는 외부 키 스토어에 필요합니다. 각 외부 키 스토어는 하나의 외부 키 스토어 프록시와 연결됩니다.

![외부 키 스토어 프록시](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/xks-proxy-concept-40.png)


AWS KMS 는 외부 키를 생성, 삭제 또는 관리할 수 없습니다. 암호화 키 구성 요소는 절대 외부 키 관리자를 떠나지 않습니다. AWS KMS 와 외부 키 관리자 간의 모든 통신은 외부 키 스토어 프록시에 의해 조정됩니다.는 외부 키 스토어 프록시에 요청을 AWS KMS 보내고 외부 키 스토어 프록시로부터 응답을 받습니다. 외부 키 스토어 프록시는에서 외부 키 관리자 AWS KMS 로 요청을 전송하고 외부 키 관리자의 응답을 로 다시 전송하는 역할을 합니다. AWS KMS

외부 키 스토어의 외부 키 스토어 프록시는 사용자가 소유하고 관리하며 유지 관리 및 운영에 대한 책임은 사용자에게 있습니다. 공급업체로부터 프록시 애플리케이션을 AWS KMS 게시하거나 구매하는 오픈 소스 외부 키 스토어 [프록시 API 사양을 기반으로 외부 키 스토어](https://github.com/aws/aws-kms-xksproxy-api-spec/) 프록시를 개발할 수 있습니다. 외부 키 스토어 프록시는 외부 키 관리자에 포함될 수 있습니다. 프록시 개발을 지원하기 위해는 샘플 외부 키 스토어 프록시([aws-kms-xks-proxy](https://github.com/aws-samples/aws-kms-xks-proxy))와 외부 키 스토어 프록시가 사양을 준수하는지 확인하는 테스트 클라이언트([xks-kms-xksproxy-test-client](https://github.com/aws-samples/aws-kms-xksproxy-test-client)) AWS KMS 도 제공합니다.

프록시 AWS KMS는에 인증하기 위해 서버 측 TLS 인증서를 사용합니다. 프록시에 인증하기 위해는 SigV4 프록시 [인증 자격](#concept-xks-credential) 증명을 사용하여 외부 키 스토어 프록시에 대한 모든 요청에 AWS KMS 서명합니다.

외부 키 스토어 프록시는 다음 암호화 제품군 중 하나 이상을 포함하는 HTTP/1.1 이상 및 TLS 1.2 이상을 지원해야 합니다.
+ TLS\_AES\_256\_GCM\_SHA384(TLS 1.3)
+ TLS\_CHACHA20\_POLY1305\_SHA256(TLS 1.3)
**참고**  
 AWS GovCloud (US) Region 는 TLS\_CHACHA20\_POLY1305\_SHA256을 지원하지 않습니다.
+ TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384(TLS 1.2)
+ TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_GCM\_SHA384(TLS 1.2)

외부 키 스토어에서 KMS 키를 생성하고 사용하려면 먼저 외부 키 스토어 프록시에 [외부 키 스토어를 연결](xks-connect-disconnect.md)해야 합니다. 요청 시 프록시에서 외부 키 스토어를 연결 해제할 수도 있습니다. 이렇게 하면 외부 키 스토어의 모든 KMS 키를 [사용할 수 없게](key-state.md) 되어 암호화 작업에 사용할 수 없습니다.

### 외부 키 스토어 프록시 연결
<a name="concept-xks-connectivity"></a>

외부 키 스토어 프록시 연결("XKS 프록시 연결")은가 외부 키 스토어 프록시와 통신하는 데 AWS KMS 사용하는 방법을 설명합니다.

외부 키 스토어를 생성할 때 프록시 연결 옵션을 지정하면 해당 옵션이 외부 키 스토어의 속성이 됩니다. 사용자 지정 키 스토어 속성을 업데이트하여 프록시 연결 옵션을 변경할 수 있지만 외부 키 스토어 프록시가 여전히 동일한 외부 키에 액세스할 수 있는지 확인해야 합니다.

AWS KMS 는 다음과 같은 연결 옵션을 지원합니다.
+ [퍼블릭 엔드포인트 연결](choose-xks-connectivity.md#xks-connectivity-public-endpoint) - 인터넷을 통해 외부 키 스토어 프록시에 대한 요청을 제어하는 퍼블릭 엔드포인트로 AWS KMS 보냅니다. 이 옵션은 생성 및 유지 관리가 간단하지만 모든 설치에 대한 보안 요구 사항을 충족하지 못할 수 있습니다.
+ [VPC 엔드포인트 서비스 연결](choose-xks-connectivity.md#xks-vpc-connectivity) - 사용자가 생성하고 유지 관리하는 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 서비스에 요청을 AWS KMS 보냅니다. Amazon VPC 내에서 외부 키 스토어 프록시를 호스팅하거나 외부에서 외부 키 스토어 프록시를 호스팅 AWS 하고 통신에만 Amazon VPC를 사용할 수 있습니다. 또한 외부 키 저장소를 다른 AWS 계정이 소유한 Amazon VPC 엔드포인트 서비스에 연결할 수도 있습니다.

외부 키 스토어 프록시 연결 옵션에 대한 자세한 내용은 [외부 키 저장소 프록시 연결 옵션 선택](choose-xks-connectivity.md) 섹션을 참조하세요.

### 외부 키 스토어 프록시 인증 자격 증명
<a name="concept-xks-credential"></a>

외부 키 스토어 프록시에 인증하기 위해는 [Signature V4(SigV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 인증 자격 증명을 사용하여 외부 키 스토어 프록시에 대한 모든 요청에 AWS KMS 서명합니다. 프록시에서 인증 자격 증명을 설정하고 유지 관리한 다음 외부 저장소를 생성할 AWS KMS 때이 자격 증명을에 제공합니다.

**참고**  
가 XKS 프록시에 대한 요청에 서명하는 데 AWS KMS 사용하는 SigV4 자격 증명은의 AWS Identity and Access Management 보안 주체와 연결된 모든 SigV4 자격 증명과 관련이 없습니다 AWS 계정. 외부 키 스토어 프록시에 IAM SigV4 자격 증명을 재사용하지 마세요.

각 프록시 인증 자격 증명은 두 부분으로 구성됩니다. 외부 키 스토어를 생성하거나 외부 키 스토어의 인증 자격 증명을 업데이트할 때 두 부분을 모두 제공해야 합니다.
+ 액세스 키 ID: 비밀 액세스 키를 식별합니다. 이 ID를 일반 텍스트로 제공할 수 있습니다.
+ 보안 액세스 키: 보안 인증의 보안 암호 부분입니다. 보안 인증 정보를 저장하기 전에 보안 암호 액세스 키를 AWS KMS 암호화합니다.

잘못된 값을 입력하거나 프록시에서 자격 증명을 변경하거나 프록시가 자격 증명을 교체하는 경우와 같이 언제든지 [자격 증명 설정을 편집](update-xks-keystore.md)할 수 있습니다. 외부 키 스토어 프록시에 대한 인증에 대한 AWS KMS 자세한 내용은 AWS KMS 외부 키 스토어 프록시 API 사양의 [인증을](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/xks_proxy_api_spec.md#authentication) 참조하세요.

외부 키 스토어에서 KMS 키를 AWS 서비스 사용하는를 중단하지 않고 자격 증명을 교체할 수 있도록 하려면 외부 키 스토어 프록시가 2개 이상의 유효한 인증 자격 증명을 지원하는 것이 좋습니다 AWS KMS. 이렇게 하면 AWS KMS에 새 자격 증명을 제공하는 동안 이전 자격 증명이 계속 작동합니다.

프록시 인증 자격 증명의 수명을 추적하는 데 도움이 되도록는 Amazon CloudWatch 지표 [XksProxyCredentialAge](monitoring-cloudwatch.md#metric-xks-proxy-credential-age)를 AWS KMS 정의합니다. 이 지표를 사용하여 자격 증명의 사용 기간이 설정한 임계값에 도달하면 알려주는 CloudWatch 경보를 생성할 수 있습니다.

### 프록시 API
<a name="concept-proxy-apis"></a>

 AWS KMS 외부 키 스토어를 지원하려면 [외부 키 스토어 프록시](#concept-xks-proxy)가 외부 키 스토어 프록시 APIs 사양에 설명된 대로 필요한 프록시 API를 구현해야 합니다. [AWS KMS](https://github.com/aws/aws-kms-xksproxy-api-spec/) 이러한 프록시 API 요청은가 프록시로 AWS KMS 보내는 유일한 요청입니다. 이러한 요청을 직접 전송하지는 않지만 이에 대해 알면 외부 키 스토어 또는 해당 프록시에서 발생할 수 있는 문제를 해결하는 데 도움이 될 수 있습니다. 예를 들어는 외부 키 스토어에 대한 [Amazon CloudWatch 지표](monitoring-cloudwatch.md)에 이러한 API 호출의 지연 시간 및 성공률에 대한 정보를 AWS KMS 포함합니다. 자세한 내용은 [외부 키 저장소 모니터링](xks-monitoring.md)을 참조하세요.

다음 표에는 각 프록시 API와 그에 대한 설명이 나와 있습니다. 또한 프록시 API에 대한 호출을 트리거하는 AWS KMS 작업과 프록시 API와 관련된 모든 AWS KMS 작업 예외도 포함됩니다.


| 프록시 API | 설명 | 관련 AWS KMS 작업 | 
| --- | --- | --- | 
| Decrypt | AWS KMS 는 암호 해독할 사이퍼텍스트와 사용할 [외부 키](#concept-external-key)의 ID를 전송합니다. 필수 암호화 알고리즘은 AES\_GCM입니다. | [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) | 
| 암호화 | AWS KMS 는 암호화할 데이터와 사용할 [외부 키](#concept-external-key)의 ID를 전송합니다. 필수 암호화 알고리즘은 AES\_GCM입니다. | [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) | 
| GetHealthStatus | AWS KMS 는 프록시 및 외부 키 관리자의 상태에 대한 정보를 요청합니다.각 외부 키 관리자의 상태는 다음 중 하나일 수 있습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/keystore-external.html) | [CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html)([퍼블릭 엔드포인트 연결](choose-xks-connectivity.md#xks-connectivity-public-endpoint)용), [ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html)([VPC 엔드포인트 서비스 연결](choose-xks-connectivity.md#xks-vpc-connectivity)용)모든 외부 키 관리자 인스턴스가 `Unavailable`인 경우 키 스토어를 생성하거나 연결하려는 시도는 [`XksProxyUriUnreachableException`](xks-troubleshooting.md#fix-xks-latency)과 함께 실패합니다. | 
| GetKeyMetadata | AWS KMS 는 [외부 키](#concept-external-key) 스토어의 KMS 키와 연결된 외부 키에 대한 정보를 요청합니다.응답에는 키 사양(`AES_256`), 키 사용(`[ENCRYPT, DECRYPT]`) 및 외부 키가 `ENABLED`인지 아니면 `DISABLED`인지가 포함됩니다. | [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)키 사양이 `AES_256`이 아니거나, 키 사용이 `[ENCRYPT, DECRYPT]`가 아니거나, 상태가 `DISABLED`인 경우 `XksKeyInvalidConfigurationException`과 함께 `CreateKey` 작업이 실패합니다. | 

### 이중 암호화
<a name="concept-double-encryption"></a>

외부 키 스토어의 KMS 키로 암호화된 데이터는 두 번 암호화됩니다. 먼저는 KMS AWS KMS 키와 관련된 키 구성 요소로 데이터를 AWS KMS 암호화합니다. 그런 다음 AWS KMS로 암호화된 사이퍼텍스트가 [외부 키](#concept-external-key)를 사용하여 [외부 키 관리자](#concept-ekm)에 의해 암호화됩니다. 이 프로세스를 이중 암호화**라고 합니다.

이중 암호화를 사용하면 외부 키 스토어의 KMS 키로 암호화된 데이터가 표준 KMS 키로 암호화된 사이퍼텍스트 이상으로 강력해집니다. 또한에서 외부 키 스토어 프록시 AWS KMS 로 전송되는 일반 텍스트를 보호합니다. 이중 암호화를 사용하면 사이퍼텍스트를 완벽하게 제어할 수 있습니다. 외부 프록시를 통해 외부 키에 대한 AWS 액세스를 영구적으로 취소하면 AWS 에 남아 있는 사이퍼텍스트가 효과적으로 암호 파쇄됩니다.

![외부 키 스토어의 KMS 키로 보호되는 데이터의 이중 암호화](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/xks-double-encrypt-40.png)


이중 암호화를 활성화하기 위해 외부 키 스토어의 각 KMS 키에는 두 개**의 암호화 백업 키가 있습니다.
+ KMS AWS KMS 키에 고유한 키 구성 요소입니다. 이 키 구성 요소는 AWS KMS [FIPS 140-3 보안 수준 3](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4884) 인증 하드웨어 보안 모듈(HSMs)에서만 생성되고 사용됩니다.
+ 외부 키 관리자의 [외부 키](#concept-external-key).

이중 암호화는 다음과 같은 효과가 있습니다.
+ AWS KMS 는 외부 키 스토어 프록시를 통해 외부 키에 액세스하지 않고 외부 키 스토어의 KMS 키로 암호화된 사이퍼텍스트를 해독할 수 없습니다.
+ 외부 키 구성 요소가 AWS있더라도 외부 키 스토어의 KMS 키로 암호화된 사이퍼텍스트는 복호화할 수 없습니다.
+ 외부 키 구성 요소가 있더라도 외부 키 스토어에서 삭제된 KMS 키를 다시 생성할 수 없습니다. 각 KMS 키에는 대칭 사이퍼텍스트에 포함된 고유한 메타데이터가 있습니다. 새 KMS 키는 동일한 외부 키 구성 요소를 사용하더라도 원래 키로 암호화된 사이퍼텍스트를 복호화할 수 없습니다.

실제 이중 암호화의 예는 [외부 키 스토어 작동 방식](#xks-how-it-works) 섹션을 참조하세요.

## 외부 키 스토어 작동 방식
<a name="xks-how-it-works"></a>

[외부 키 저장소](#concept-external-key-store), [외부 키 저장소 프록시](#concept-xks-proxy) 및 [외부 키 관리자](#concept-ekm)가 함께 작동하여 AWS 리소스를 보호합니다. 다음 절차는 KMS 키로 보호되는 고유한 데이터 키로 각 객체를 암호화하는 일반적인 AWS 서비스 의 암호화 워크플로를 보여줍니다. 이 경우 객체를 보호하기 위해 외부 키 스토어에서 KMS 키를 선택했습니다. 이 예제는가 [이중 암호화](#concept-double-encryption)를 AWS KMS 사용하여 전송 중인 데이터 키를 보호하고 외부 키 스토어의 KMS 키로 생성된 사이퍼텍스트가 항상 최소한 키 구성 요소가 있는 표준 대칭 KMS 키로 암호화된 사이퍼텍스트만큼 강력한지 확인하는 방법을 보여줍니다 AWS KMS.

와 통합 AWS 서비스 되는 각 실제에서 사용하는 암호화 방법은 AWS KMS 다양합니다. 자세한 내용은 AWS 서비스 설명서의 보안 장에 있는 '데이터 보호' 주제를 참조하세요.

![외부 키 스토어 작동 방식](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/xks-how-it-works-jan26.png)


1.  AWS 서비스 리소스에 새 객체를 추가합니다. 객체를 암호화하기 위해는 외부 키 스토어의 KMS 키를 AWS KMS 사용하여 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 요청을에 AWS 서비스 보냅니다.

1. AWS KMS 는 256비트 대칭 [데이터 키를](data-keys.md) 생성하고 외부 키 스토어 프록시를 통해 외부 키 관리자에게 일반 텍스트 데이터 키의 사본을 보낼 준비를 합니다.는 외부 키 스토어의 KMS 키와 연결된 [AWS KMS 키 구성 요소로](#concept-double-encryption) 일반 텍스트 데이터 키를 암호화하여 [이중 암호화](#concept-double-encryption) 프로세스를 AWS KMS 시작합니다.

1. AWS KMS 는 외부 키 스토어와 연결된 외부 키 스토어 프록시에 [암호화](#concept-proxy-apis) 요청을 보냅니다. 요청에는 암호화할 데이터 키 사이퍼텍스트와 KMS 키와 연결된 [외부](#concept-external-key) 키의 ID가 포함됩니다.는 외부 키 스토어 프록시에 대한 [프록시 인증 자격 증명을](#concept-xks-credential) 사용하여 요청에 AWS KMS 서명합니다.

   데이터 키의 일반 텍스트 사본은 외부 키 스토어 프록시로 전송되지 않습니다.

1. 외부 키 스토어 프록시는 요청을 인증한 다음 암호화 요청을 외부 키 관리자에게 전달합니다.

   일부 외부 키 스토어 프록시는 선택한 보안 주체만 특정 조건에서 작업을 수행할 수 있도록 허용하는 선택적 [권한 부여 정책](authorize-xks-key-store.md#xks-proxy-authorization)도 구현합니다.

1. 외부 키 관리자는 지정된 외부 키를 사용하여 데이터 키 사이퍼텍스트를 암호화합니다. 외부 키 관리자는 이중 암호화된 데이터 키를 외부 키 스토어 프록시로 반환하고, 외부 키 스토어 프록시는 이를 AWS KMS로 반환합니다.

1. AWS KMS 는 일반 텍스트 데이터 키와 해당 데이터 키의 이중 암호화 사본을에 반환합니다 AWS 서비스.

1. 는 일반 텍스트 데이터 키를 AWS 서비스 사용하여 리소스 객체를 암호화하고, 일반 텍스트 데이터 키를 삭제하고, 암호화된 데이터 키를 암호화된 객체와 함께 저장합니다.

   일부 AWS 서비스 는 여러 객체에 사용하거나 리소스가 사용 중인 동안 재사용하기 위해 일반 텍스트 데이터 키를 캐시할 수 있습니다. 자세한 내용은 [사용할 수 없는 KMS 키가 데이터 키에 미치는 영향](unusable-kms-keys.md)을 참조하세요.

암호화된 객체를 복호화하려면가 [복호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청 AWS KMS 에서 암호화된 데이터 키를 로 다시 전송 AWS 서비스 해야 합니다. 암호화된 데이터 키를 복호화하려면 암호화된 데이터 키를 외부 키의 ID와 함께 외부 키 스토어 프록시로 다시 전송해야 AWS KMS 합니다. 어떤 이유로든 외부 키 스토어 프록시에 대한 복호화 요청이 실패하면 AWS KMS 는 암호화된 데이터 키를 복호화할 수 없으며는 암호화된 객체를 복호화할 AWS 서비스 수 없습니다.