Hitelesítés Azure felhőbeli HSM-ben

A hitelesítés kulcsfontosságú szempont a Azure felhőbeli HSM biztonságos eléréséhez és működtetéséhez. Ez a cikk a hitelesítési módszereket ismerteti, beleértve a parancssori felületet (CLI), a PKCS#11-et, a Java titkosítási bővítményt (JCE) és az OpenSSL-t. Ez a cikk a többszálú és a munkamenet-kezelés ajánlott eljárásait is ismerteti.

Támogatott hitelesítési módszerek

Azure felhőalapú HSM csak a jelszóalapú hitelesítést támogatja. Nem támogatja a PIN-kód beviteli eszközén (PED) keresztüli hitelesítést.

Felhőalapú HSM CLI-hitelesítés

A hitelesítést cli-eszközökkel végezheti el, például azcloudhsm_util interaktív vagy egyparancsos módban. Interaktív módban használja a loginHSM parancsot. Egyetlen parancs mód esetén adja meg a singlecmd és a paramétereket ehhez: loginHSM. Javasoljuk, hogy biztonságosan tárolja HSM-hitelesítő adatait, ha az alkalmazás nem használja őket.

Interaktív mód

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

Egyparancsos mód

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

PKCS#11 hitelesítés

A PKCS#11-ben a C_Login API használatával jelentkezik be, miután a C_OpenSession használatával megnyitott egy munkamenetet. Pontonként csak egyszer kell használnia C_Login (felhőalapú HSM-fürt). Miután sikeresen bejelentkezett, további munkameneteket is megnyithat anélkül C_OpenSession, hogy újra be kellene jelentkeznie.

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);
…

A PKCS#11-re való hitelesítésre vonatkozó kódpéldákat a PKCS#11 guide című cikkben találhatja meg, amely a PKCS#11 és a Azure Felhőalapú HSM integrálását ismerteti.

JCE-hitelesítés

A Azure felhőbeli HSM JCE-szolgáltatója implicit és explicit bejelentkezési módszereket is támogat. Mindegyik alkalmas különböző használati esetekre.

Javasoljuk, hogy amikor csak lehetséges, implicit bejelentkezést használjon, mert az SDK autonóm módon kezeli a hitelesítést. Ez a módszer különösen akkor hasznos, ha az alkalmazás megszakad a kapcsolatról a fürttel, és újrahitelesítést igényel. Az implicit bejelentkezés emellett lehetővé teszi az alkalmazás hitelesítő adatainak megadását olyan platformokkal való integráció során, ahol az alkalmazáskód közvetlen vezérlése nem lehetséges.

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

A bejelentkezési módszerekkel kapcsolatos további részletekért tekintse meg a JCE Azure Cloud HSM-mel való integrálásának útmutatóját.

OpenSSL-hitelesítés

Amikor OpenSSL-motort használ Azure felhőbeli HSM-hez, a környezeti változók biztosítják a hitelesítő adatokat. Javasoljuk, hogy biztonságosan tárolja HSM-hitelesítő adatait, ha az alkalmazás nem használja őket. Ideális esetben úgy konfigurálja a környezetet, hogy automatikusan lekérje és állítsa be ezeket a környezeti változókat a manuális bevitel elkerülése érdekében.

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

Megjegyzés:

Frissítse a telepített SDK-verziónak megfelelő elérési utakat. Az alapértelmezett telepítési útvonal a következő /opt/azurecloudhsm/: . A legújabb SDK-t a Azure Cloud HSM SDK-kiadásokban talál.

Az OpenSSL-vel való hitelesítés részleteiért tekintse meg a guide-t az OpenSSL és a Azure Cloud HSM integrálásához.

Többszálú feldolgozás technikái

Azure felhőalapú HSM támogatja a többszálú alkalmazásokat, de a kezelésükhöz megfontolandó szempontok vannak:

  • PKCS#11: A PKCS#11 kódtár inicializálása a C_Initialize használatával csak egyszer történjen meg. Mindegyik szálhoz saját munkamenetet rendelhet hozzá a használatával C_OpenSession. Ne használja ugyanazt a munkamenetet több szálon.
  • JCE: A Azure Felhőalapú HSM-szolgáltató inicializálása csak egyszer. Kerülje a Service Provider Interface (SPI) objektumok példányainak megosztását a szálak között. Használjon például Cipher, Signature, Digest, Mac, KeyFactory, és KeyGenerator objektumokat csak a megfelelő szálkörnyezetekben.

Újrapróbálkozások a HSM-műveletek integrációjához

A Microsoft felcserélhet egy HSM-et a Azure felhőbeli HSM-fürtben működési vagy karbantartási célokra, például ha egy eszköz meghibásodik. Az alkalmazás ilyen helyzetekre való előkészítéséhez javasoljuk, hogy adjon hozzá ügyféloldali újrapróbálkozási logikát a fürtnek küldött összes művelethez. Ez a beállítás arra számít, hogy a sikertelen műveletek későbbi újrapróbálkozásai – akár csere, akár ideiglenes karbantartási leállások miatt – sikeresek lesznek.

Felhőbeli HSM-ügyfél munkamenet-kezelése

A Azure felhőbeli HSM-ügyfél minden HSM-munkamenetbe bejelentkezik és kijön, amikor bármely alkalmazás bejelentkezik vagy kijelentkezik. Ennek eredményeképpen, ha egy második alkalmazás azurecloudhsm_client használ, ugyanazokkal a munkamenetekkel rendelkezik, és ugyanazt a bejelentkezési hitelesítő adatokat örökli, ha ugyanabból a gazdagépről fut. Az azurecloudhsm_client eszköz nyomon követi, hogy mely alkalmazások próbálnak bejelentkezni. Lehetővé teszi a megfelelően bejelentkezett alkalmazások számára a hitelesítést igénylő parancsok futtatását.

Ha például azurecloudhsm_util van bejelentkezve, és egy másik terminálablakban próbálja futtatni az alkalmazást vagy a kulcseszközt a Azure felhőalapú HSM-szolgáltatóval, hibaüzenet jelenik meg, mert egy aktív munkamenet már meg van nyitva. Az alkalmazásnak le kell zárnia a azurecloudhsm_util munkamenetet, hogy a azurecloudhsm_client által futtatott munkamenetet a gazdagépen létrehozhassa a hitelesítéshez.