AWS CloudHSM의 키 동기화 및 내구성 설정 - AWS CloudHSM

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

AWS CloudHSM의 키 동기화 및 내구성 설정

이 항목에서는 AWS CloudHSM의 키 동기화 설정, 고객이 클러스터에서 키로 작업할 때 직면하는 일반적인 문제, 키의 내구성을 높이기 위한 전략에 대해 설명합니다.

개념

토큰 키

키 생성, 가져오기 또는 래핑 해제 작업 중에 생성하는 영구 키. AWS CloudHSM클러스터 전체에서 토큰 키를 동기화합니다.

세션 키

클러스터의 하드웨어 보안 모듈 (HSM) 에만 존재하는 임시 키. AWS CloudHSM은 클러스터 전체에서 세션 키를 동기화하지 않습니다.

클라이언트측 키 동기화

키 생성, 가져오기 또는 래핑 해제 작업 중에 생성한 토큰 키를 복제하는 클라이언트 측 프로세스입니다. 최소 두 개의 HSM이 있는 클러스터를 실행하여 토큰 키의 내구성을 높일 수 있습니다.

서버측 키 동기화

클러스터의 모든 HSM에 주기적으로 키를 복제합니다. 관리할 필요가 없습니다.

클라이언트 키 내구성 설정

클라이언트에서 구성한 설정으로 키 내구성에 영향을 줍니다. 이러한 설정은 Client SDK 5와 Client SDK 3에서 다르게 작동합니다.

  • Client SDK 5에서는 이 설정을 사용하여 단일 HSM 클러스터를 실행합니다.

  • Client SDK 3에서는 이 설정을 사용하여 키 생성 작업이 성공하는 데 필요한 HSM 수를 지정합니다.

키 동기화 이해

AWS CloudHSM은 키 동기화를 사용하여 클러스터의 모든 HSM에서 토큰 키를 복제합니다. 키 생성, 가져오기 또는 래핑 해제 작업 중에 토큰 키를 영구 키로 생성합니다. 클러스터 전체에 이러한 키를 분산하기 위해 CloudHSM은 클라이언트 측 키 동기화 및 서버 측 키 동기화 모두를 제공합니다.

서버 측과 클라이언트 측 모두에서 키 동기화의 목표는 새 키를 생성한 후 가능한 한 빨리 클러스터 전체에 배포하는 것입니다. 이는 새 키를 사용하기 위해 거는 후속 호출이 클러스터의 사용 가능한 모든 HSM으로 라우팅될 수 있기 때문에 중요합니다. 키가 없는 HSM으로 전화를 걸면 통화가 실패합니다. 키 생성 작업 후에 수행된 후속 호출을 응용 프로그램에서 재시도하도록 지정하여 이러한 유형의 실패를 완화할 수 있습니다. 동기화에 필요한 시간은 클러스터의 워크로드 및 기타 무형 자산에 따라 달라질 수 있습니다. CloudWatch 메트릭을 사용하여 애플리케이션이 이러한 유형의 상황에서 사용해야 하는 타이밍을 결정하십시오. 자세한 내용은 CloudWatch 메트릭을 참조하십시오.

클라우드 환경에서 키 동기화의 문제는 키 내구성입니다. 단일 HSM에서 키를 생성하고 해당 키를 즉시 사용하기 시작하는 경우가 많습니다. 키가 클러스터의 다른 HSM에 복제되기 전에 키를 생성한 HSM에서 장애가 발생하면 키를 잃고 키로 암호화된 모든 항목에 액세스할 수 없게 됩니다. 이러한 위험을 완화하기 위해 클라이언트측 동기화를 제공합니다. 클라이언트측 동기화는 키 생성, 가져오기 또는 래핑 해제 작업 중에 생성한 키를 복제하는 클라이언트측 프로세스입니다. 키를 생성할 때 복제하면 키의 내구성이 향상됩니다. 물론 단일 HSM으로 클러스터의 키를 복제할 수는 없습니다. 키의 내구성을 높이려면 최소 두 개의 HSM을 사용하도록 클러스터를 구성하는 것도 좋습니다. 클라이언트측 동기화와 HSM이 두 개 있는 클러스터를 사용하면 클라우드 환경에서 키 내구성 문제를 해결할 수 있습니다.

클라이언트 키 내구성 설정 관련 작업

키 동기화는 대부분 자동 프로세스이지만 클라이언트측 키 내구성 설정은 관리할 수 있습니다. 클라이언트측 키 내구성 설정은 Client SDK 5와 Client SDK 3에서 다르게 작동합니다.

  • Client SDK 5에서는 최소 2개의 HSM으로 클러스터를 실행해야 하는 키 가용성 쿼럼의 개념을 소개합니다. 클라이언트측 키 내구성 설정을 사용하여 두 HSM 요구 사항을 옵트아웃할 수 있습니다. 쿼럼에 대한 자세한 내용은 Client SDK 5 개념 단원을 참조하십시오.

  • Client SDK 3에서는 클라이언트측 키 내구성 설정을 사용하여 전체 작업이 성공으로 간주되려면 키 생성이 성공해야 하는 HSM 수를 지정합니다.

Client SDK 5에서 키 동기화는 완전 자동 프로세스입니다. 키 가용성 쿼럼을 사용하여 새로 만든 키가 클러스터의 두 HSM에 있어야 애플리케이션에서 키를 사용할 수 있습니다. 키 가용성 쿼럼을 사용하려면 클러스터에 최소 두 개의 HSM이 있어야 합니다.

클러스터 구성이 키 내구성 요구 사항을 충족하지 않는 경우 토큰 키를 생성하거나 사용하려고 하면 로그에 다음 오류 메시지가 표시되면서 실패합니다.

Key <key handle> does not meet the availability requirements - The key must be available on at least 2 HSMs before being used.

클라이언트 구성 설정을 사용하여 키 가용성 쿼럼에서 제외할 수 있습니다. 예를 들어, 단일 HSM으로 클러스터를 실행하지 않도록 옵트아웃할 수 있습니다.

Client SDK 5 개념

주요 가용성 쿼럼

AWS CloudHSM애플리케이션이 키를 사용할 수 있으려면 먼저 키가 있어야 하는 클러스터의 HSM 수를 지정합니다. 최소 두 개의 HSM이 있는 클러스터가 필요합니다.

클라이언트 키 내구성 설정 관리

클라이언트 키 내구성 설정을 관리하려면 Client SDK 5용 구성 도구를 사용해야 합니다.

PKCS #11 library
Linux용 Client SDK 5의 클라이언트 키 내구성 비활성화
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    $ sudo /opt/cloudhsm/bin/configure-pkcs11 --disable-key-availability-check
Windows용 Client SDK 5의 클라이언트 키 내구성을 사용하지 않도록 설정
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --disable-key-availability-check
OpenSSL Dynamic Engine
Linux용 Client SDK 5의 클라이언트 키 내구성 비활성화
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    $ sudo /opt/cloudhsm/bin/configure-dyn --disable-key-availability-check
JCE provider
Linux용 Client SDK 5의 클라이언트 키 내구성 비활성화
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    $ sudo /opt/cloudhsm/bin/configure-jce --disable-key-availability-check
Windows용 Client SDK 5의 클라이언트 키 내구성을 사용하지 않도록 설정
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --disable-key-availability-check
CloudHSM CLI
Linux용 Client SDK 5의 클라이언트 키 내구성 비활성화
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    $ sudo /opt/cloudhsm/bin/configure-cli --disable-key-availability-check
Windows용 Client SDK 5의 클라이언트 키 내구성을 사용하지 않도록 설정
  • 구성 도구를 사용하여 클라이언트 키 내구성 설정을 비활성화합니다.

    "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" --disable-key-availability-check

Client SDK 3에서 키 동기화는 대부분 자동 프로세스이지만 클라이언트 키 내구성 설정을 사용하여 키의 내구성을 높일 수 있습니다. 전체 작업이 성공으로 간주되려면 키 생성이 성공해야 하는 HSM 수를 지정합니다. 클라이언트측 동기화는 어떤 설정을 선택하든 항상 클러스터의 모든 HSM에 키를 복제하기 위해 최선을 다합니다. 설정에 따라 지정한 HSM 수에 대한 키 생성이 적용됩니다. 값을 지정했는데 시스템에서 해당 수의 HSM에 키를 복제할 수 없는 경우 시스템에서 자동으로 불필요한 키 구성 요소를 정리하므로 다시 시도할 수 있습니다.

중요

클라이언트 키 내구성 설정을 설정하지 않으면(또는 기본값 1을 사용하는 경우) 키가 손실되기 쉽습니다. 서버측 서비스가 해당 키를 다른 HSM에 복제하기 전에 현재 HSM에 장애가 발생하면 키 구성 요소를 잃게 됩니다.

키 내구성을 극대화하려면 클라이언트측 동기화에 HSM을 두 개 이상 지정하는 것이 좋습니다. HSM을 얼마나 많이 지정하든 클러스터의 워크로드는 동일하게 유지된다는 점을 기억하십시오. 클라이언트측 동기화는 항상 클러스터의 모든 HSM에 키를 복제하기 위해 최선을 다합니다.

권장 사항

  • 최소: 클러스터당 HSM 2개

  • 최대: 클러스터의 총 HSM 수보다 하나 적음

클라이언트측 동기화가 실패하는 경우 클라이언트 서비스는 생성되어 지금은 원치 않는 불필요한 키를 모두 정리합니다. 이 정리는 최선의 방법이지만 항상 효과가 있는 것은 아닙니다. 정리가 실패하면 불필요한 주요 자료를 삭제해야 할 수도 있습니다. 자세한 내용은 키 동기화 실패를 참조하십시오.

클라이언트 키 내구성을 위한 구성 파일 설정

클라이언트 키 내구성 설정을 지정하려면 cloudhsm_client.cfg를 편집해야 합니다.

클라이언트 구성 파일 편집
  1. cloudhsm_client.cfg를 엽니다.

    Linux:

    /opt/cloudhsm/etc/cloudhsm_client.cfg

    Windows:

    C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg
  2. 파일 client 노드에서, create_object_minimum_nodes를 추가하고 키 생성 작업이 성공하기 위해 AWS CloudHSM에서 키를 성공적으로 생성해야 하는 HSM의 최소 개수 값을 지정합니다.

    "create_object_minimum_nodes" : 2
    참고

    key_mgmt_util (KMU) 명령줄 도구에는 클라이언트 키 내구성을 위한 추가 설정이 있습니다. 자세한 정보는 KMU 및 클라이언트측 동기화 단원을 참조하십시오.

구성 참조

클라이언트 측 동기화 속성은 다음 cloudhsm_client.cfg의 발췌문에 나와 있습니다:

{ "client": { "create_object_minimum_nodes" : 2, ... }, ... }
create_object_minimum_nodes

키 생성, 키 가져오기 또는 키 래핑 해제 작업을 성공으로 간주하는 데 필요한 최소 HSM 수를 지정합니다. 기본값은 "1"로 설정되어 있습니다. 즉, 모든 키 생성 작업에 대해 클라이언트측 서비스는 클러스터의 모든 HSM에 키 생성을 시도하지만 성공하려면 클러스터의 HSM 하나에 단일 키만 생성하면 됩니다.

KMU 및 클라이언트측 동기화

key_mgmt_util(KMU) 명령줄 도구를 사용하여 키를 생성하는 경우 선택적 명령줄 파라미터(-min_srv)를 사용하여 키를 복제할 HSM 수를 제한합니다. 구성 파일에 명령줄 파라미터와 값을 지정하는 경우 AWS CloudHSM은 두 값 중 더 큰 값을 적용합니다.

자세한 정보는 다음 주제를 참조하십시오.

복제된 클러스터 간 키 동기화

클라이언트측 및 서버측 동기화는 동일한 클러스터 내에서 키를 동기화하는 용도로만 사용됩니다. 클러스터의 백업을 다른 지역에 복사하는 경우 cloudhsm_mgmt_util(CMU)의 SyncKey 명령을 사용하여 클러스터 간에 키를 동기화할 수 있습니다. 지역 간 이중화를 위해 또는 재해 복구 프로세스를 단순화하기 위해 복제된 클러스터를 사용할 수 있습니다. 자세한 내용은 syncKey을 참조하십시오.