다음을 통해 공유


Azure Cloud HSM의 인증

인증은 Azure Cloud HSM 내에서 안전하게 액세스하고 운영하는 중요한 측면입니다. 이 문서에서는 CLI(명령줄 인터페이스), PKCS#11, JCE(Java Cryptography Extension) 및 OpenSSL을 비롯한 인증 방법을 간략하게 설명합니다. 이 문서에서는 다중 스레딩 및 세션 처리에 대한 모범 사례도 제공합니다.

클라우드 HSM CLI 인증

대화형 모드 또는 단일 명령 모드와 같은 azcloudhsm_util CLI 도구를 사용하여 인증할 수 있습니다. 대화형 모드에서 명령을 사용합니다 loginHSM . 단일 명령 모드에서는 singlecmdloginHSM에 대한 매개변수를 포함하세요. 애플리케이션에서 HSM 자격 증명을 사용하지 않는 경우 HSM 자격 증명을 안전하게 저장하는 것이 좋습니다.

대화형 모드

./azcloudhsm_util
loginHSM -u CU -s cu1 -p user1234

단일 명령 모드

sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s cu1 -p user1234 findKey

PKCS#11 인증

PKCS#11에서는 세션을 연 후 API를 C_Login 사용하여 C_OpenSession로그인합니다. 슬롯당 한 번만 사용해야 C_Login 합니다(클라우드 HSM 클러스터). 성공적으로 로그인한 후에는 다시 로그인하지 않고 사용하여 C_OpenSession 추가 세션을 열 수 있습니다.

char pPin[256] = "cu1:user1234";
…
rv = (func_list->C_Initialize) (NULL);
rv = (func_list->C_GetTokenInfo) (slot, &token_info);
rv = (func_list->C_OpenSession) (slot, CKF_SERIAL_SESSION | CKF_RW_SESSION, NULL, NULL, &session_rw);
rv = (func_list->C_Login) (session_rw, CKU_USER, (CK_UTF8CHAR_PTR) pPin, n_pin);
…

PKCS#11 인증에 대한 코드 예제를 보려면 PKCS#11을 Azure Cloud HSM과 통합하기 위한 가이드를 참조하세요.

JCE 인증

Azure Cloud HSM용 JCE 공급자는 암시적 및 명시적 로그인 방법을 모두 지원합니다. 각 항목은 다른 사용 사례에 적합합니다.

SDK는 인증을 자율적으로 관리하므로 가능하면 언제든지 암시적 로그인을 사용하는 것이 좋습니다. 이 방법은 애플리케이션이 클러스터에서 연결을 끊고 재인증이 필요한 경우에 특히 유용합니다. 암시적 로그인은 애플리케이션 코드를 직접 제어할 수 없는 플랫폼과 통합하는 동안 애플리케이션에 자격 증명을 쉽게 제공할 수 있습니다.

LoginManager lm = LoginManager.getInstance();
lm.login("PARTITION_1","cu1", "user1234");
…
lm.logout();
…

로그인 방법에 대한 자세한 내용은 JCE를 Azure Cloud HSM과 통합하기 위한 가이드를 참조하세요.

OpenSSL 인증

Azure Cloud HSM에 OpenSSL 엔진을 사용하는 경우 환경 변수는 자격 증명을 제공합니다. 애플리케이션에서 HSM 자격 증명을 사용하지 않는 경우 HSM 자격 증명을 안전하게 저장하는 것이 좋습니다. 수동 입력을 방지하기 위해 이러한 환경 변수를 자동으로 검색하고 설정하도록 환경을 구성하는 것이 가장 좋습니다.

export azcloudhsm_password="cu1:user1234" 
export azcloudhsm_openssl_conf=/usr/local/bin/AzureCloudHSM-ClientSDK-1.0.4.0/azcloudhsm_openssl_dynamic.conf
export LD_LIBRARY_PATH=/usr/local/lib64/AzureCloudHSM-ClientSDK-1.0.4.0/:$LD_LIBRARY_PATH
…
sudo ./azcloudhsm_client azcloudhsm_client.cfg > /dev/null 2>&1 &
openssl genpkey -algorithm RSA -out private_key.pem -engine azcloudhsm_openssl
…

OpenSSL을 사용한 인증 세부 정보는 OpenSSL을 Azure Cloud HSM과 통합하기 위한 가이드를 참조하세요.

다중 스레딩 기술

Azure Cloud HSM은 다중 스레드 애플리케이션을 지원하지만 이를 처리하기 위한 고려 사항이 있습니다.

  • PKCS#11: 한 번만 사용하여 C_Initialize PKCS#11 라이브러리를 초기화합니다. 를 사용하여 C_OpenSession각 스레드에 자체 세션을 할당합니다. 여러 스레드에서 동일한 세션을 사용하지 않습니다.
  • JCE: Azure Cloud HSM 공급자를 한 번만 초기화합니다. 스레드 간에 SPI(서비스 공급자 인터페이스) 개체의 인스턴스를 공유하지 마세요. 예를 들어, Cipher, Signature, Digest, Mac, KeyFactory, 및 KeyGenerator 개체를 해당 스레드 컨텍스트 내에서만 사용합니다.

HSM 작업의 통합을 위한 재시도

Microsoft는 디바이스가 실패하는 경우처럼 운영 또는 유지 관리를 위해 Azure Cloud HSM 클러스터에서 HSM을 교체할 수 있습니다. 이러한 시나리오에 맞게 애플리케이션을 준비하려면 클러스터로 전송된 모든 작업에 클라이언트 쪽 재시도 논리를 추가하는 것이 좋습니다. 이 설정은 교체 또는 임시 유지 관리 중단으로 인해 실패한 작업에 대한 후속 재시도가 성공할 것으로 예상합니다.

클라우드 HSM 클라이언트 세션 처리

Azure Cloud HSM 클라이언트는 모든 애플리케이션이 로그인 또는 로그아웃을 수행할 때마다 모든 HSM 세션에 로그인 및 로그아웃합니다. 따라서 두 번째 애플리케이션이 사용하는 azurecloudhsm_client경우 동일한 세션을 공유하고 동일한 호스트에서 실행되는 경우 동일한 로그인 자격 증명을 상속합니다. 이 도구는 azurecloudhsm_client 로그인하려는 애플리케이션을 추적합니다. 제대로 로그인된 애플리케이션에서 인증이 필요한 명령을 실행할 수 있습니다.

예를 들어 로그인 azurecloudhsm_util 한 상태에서 Azure Cloud HSM 공급자를 사용하여 다른 터미널 창에서 애플리케이션 또는 키 도구를 실행하려고 하면 활성 세션이 이미 열려 있으므로 오류가 발생합니다. 애플리케이션이 호스트에서 azurecloudhsm_util을 실행 중인 세션을 생성하여 인증할 수 있도록, azurecloudhsm_client 세션을 닫아야 합니다.