AWS용어 쉽게 이해하기: AWS KMS와 CloudHSM을 사용한 키 관리 체계 구축
이 번 글에서는 AWS CloudHSM를 사용해서 AWS KMS에 BYOK(Bring your own key)를 구현하는 절차를 알아볼텐데, 이에 앞서 AWS KMS와 AWS CloudHSM에 대해 먼저 정리해보겠습니다.
- AWS KMS(Key Management Service)
- 암호화 키를 생성하고 관리하는 관리형 서비스로 AWS 관리형 키 서비스와 고객 관리형 키 서비스를 선택할 수 있습니다.
- AWS 관리형 키는 AWS가 키를 생성하고 관리하지만, 사용자 계정이 소유하고 계정 내에 존재합니다. KMS 콘솔에서 Key ID(aws/s3, aws/ebs, aws/sns 등)를 통해 확인할 수 있습니다.
- 고객 관리형 키는 사용자가 키의 생성, 회전, 비활성화, 삭제 예약 등 키의 수명주기를 완벽하게 제어할 수 있습니다. 대칭키(암호화 및 해독/MAC 생성 및 확인) 및 비대칭키(암호화 및 해독/서명 및 확인/주요 계약)를 생성할 수 있으며, AWS KMS 뿐만 아니라 사용자 지정 키 스토어에 저장할 수도 있습니다. KMS API를 통해 이 키를 관리할 권한이 있는 IAM 사용자와 역할, 암호화 작업에서 이 키를 사용할 권한이 있는 IAM 사용자와 역할을 선택합니다.
- AWS CloudHSM(Hardware Security Module)
- AWS CloudHSM를 사용하기 위해서는 먼저 프라이빗 서브넷 두 개 이상을 가진 VPC에 AWS CloudHSM 클러스터를 생성합니다.
- 사용자 지정 키 스토어의 하나로, 사용자가 직접 완전한 통제권을 가지며 키는 AWS CloudHSM 클러스터 내부에 저장됩니다.
- 금융, 정부 등 최고 수준의 보안 및 규제 준수 요구사항을 충족해야 하는 경우에 사용됩니다.
AWS KMS와 CloudHSM을 사용한 키 관리 체계 구축
- Create a KMS key in AWS KMS that has no key material associated.(AWS KMS에 키 구성요소 없는 KMS 키 생성)
AWS 콘솔 또는 CLI를 사용하여 키 구성요소(key material)가 없는 KMS 키를 만듭니다. 이 단계는 실제 키 자료 없이 키의 메타데이터(키 ID, ARN 등)만 생성합니다. 키 구성 요소 원본으로 AWS CloudHSM 키 스토어를 선택합니다. - Download the import wrapping key and import token from KMS.(AWS KMS에서 가져오기 래핑 키와 가져오기 토큰 다운로드)1단계에서 생성한 키를 선택하고, ‘가져오기(Import)’ 탭에서 ‘가져오기 래핑 키(Import Wrapping Key)’와 ‘가져오기 토큰(Import Token)’을 다운로드합니다. 이 둘은 키 자료를 KMS로 안전하게 전송하는 데 필수적입니다.
- 가져오기 래핑 키: 공개키 기반 암호화에 사용되는 공개키로, 사용자가 생성한 키 자료를 암호화하는 데 사용됩니다.
- 가져오기 토큰: 특정 KMS 키에 키 자료를 가져올 수 있는 권한을 부여하는 인증 토큰입니다.
- Import the wrapping key provided by KMS into the HSM.(KMS에서 제공한 래핑 키를 HSM으로 가져오기)2단계에서 다운로드한 래핑 키를 CloudHSM 환경으로 가져옵니다. 이 키는 CloudHSM 내부에서만 사용되며, 사용자가 생성할 키 자료를 암호화하는 데 사용됩니다.
- Create a 256 bit symmetric key on AWS CloudHSM.(AWS CloudHSM에 256비트 대칭키 생성)이제 CloudHSM 내부에서 실제로 사용할 암호화 키 자료(symmetric key)를 생성합니다. 예를 들어, 256비트 AES 키를 생성합니다. 이 키는 CloudHSM의 보안 경계 내에서 생성되므로, 생성 시점부터 높은 보안성을 가집니다.
- Use the imported wrapping key to wrap the symmetric key.(가져온 래핑 키를 사용하여 대칭키 래핑)4단계에서 생성한 대칭키(symmetric key)를 3단계에서 가져온 래핑 키(wrapping key)를 사용하여 암호화(wrapping)합니다. 이 과정은 대칭키가 CloudHSM 밖으로 나갈 때 안전하게 보호되도록 보장합니다.
- Import the symmetric key into AWS KMS using the import token from step 2.(2단계에서 다운로드된 가져오기 토큰을 사용하여 대칭키를 AWS KMS로 가져오기)5단계에서 래핑된 대칭키와 2단계에서 다운로드한 가져오기 토큰을 함께 AWS KMS로 업로드합니다. KMS는 내부적으로 래핑된 키를 복호화하고, 이를 KMS 키와 연결합니다. 성공적으로 연결되면 키 상태가 ‘활성화됨(Enabled)’으로 변경됩니다.
- Terminate your HSM, which triggers a backup. Delete or leave your cluster, depending on your needs.(HSM 해제 및 백업)키 자료를 성공적으로 KMS에 가져온 후, CloudHSM 클러스터는 더 이상 필요 없을 수 있습니다. 이 경우, HSM을 종료하면 자동으로 백업이 트리거됩니다. 키가 AWS KMS에 안전하게 보관되므로, 필요에 따라 클러스터를 삭제하거나 유지할 수 있습니다.
참고로 현재 AWS Management Console(AWS KMS)에서 대칭키 + 암호화 및 해독를 선택해야만 AWS CloudHSM 키 스토어를 사용할 수 있습니다. API/CLI에는 비대칭키에서도 AWS CloudHSM 키 스토어를 사용할 수 있다고 하네요.

AWS Management Console(KMS > 고객 관리형 키 > 키 생성)에서 AWS CloudHSM 선택 옵션