Ověřování v Azure Cloud HSM

Ověřování je zásadním aspektem bezpečného přístupu k systému Azure Cloud HSM a jeho provozu. Tento článek popisuje metody ověřování, včetně rozhraní příkazového řádku (CLI), PKCS#11, rozšíření Java kryptografie (JCE) a OpenSSL. Tento článek obsahuje také osvědčené postupy pro vícevláknové zpracování a zpracování relací.

Podporované metody ověřování

Azure Cloud HSM podporuje pouze ověřování založené na heslech. Nepodporuje ověřování prostřednictvím vstupního zařízení PIN kódu (PED).

Cloudové ověřování rozhraní příkazového řádku HSM

Ověřování můžete provést pomocí nástrojů rozhraní příkazového řádku, jako je azcloudhsm_util v interaktivním režimu nebo režimu s jedním příkazem. V interaktivním loginHSM režimu použijte příkaz. Pro režim s jedním příkazem zahrňte singlecmd a parametry pro loginHSM. Doporučujeme, abyste bezpečně ukládali přihlašovací údaje HSM, když je vaše aplikace nepoužívá.

Interaktivní režim

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

Režim s jedním příkazem

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

Ověřování PKCS#11

Po otevření relace pomocí C_Login se v PKCS#11 přihlásíte pomocí C_OpenSession rozhraní API. Je třeba použít C_Login pouze jednou na slot (cluster Cloud HSM). Po úspěšném přihlášení můžete otevřít další relace pomocí příkazu C_OpenSession bez opětovného přihlášení.

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

Pokud chcete získat příklady kódu pro ověřování ve službě PKCS#11, přečtěte si průvodce pro integraci PKCS#11 s Azure Cloud HSM.

Ověřování JCE

Poskytovatel JCE pro Azure Cloud HSM nabízí podporu implicitních i explicitních metod přihlašování. Každý z nich je vhodný pro různé případy použití.

Pokud je to možné, doporučujeme používat implicitní přihlašování, protože sada SDK nezávisle spravuje ověřování. Tato metoda je obzvláště užitečná, pokud se vaše aplikace odpojí od clusteru a vyžaduje opětovné ověření. Implicitní přihlášení také usnadňuje poskytování přihlašovacích údajů vaší aplikaci během integrace s platformami, kde přímá kontrola nad kódem aplikace není možná.

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

Další podrobnosti o metodách přihlašování najdete v průvodci pro integraci JCE s Azure Cloud HSM.

Ověřování OpenSSL

Při použití modulu OpenSSL pro Azure Cloud HSM poskytují proměnné prostředí přihlašovací údaje. Doporučujeme, abyste bezpečně ukládali přihlašovací údaje HSM, když je vaše aplikace nepoužívá. V ideálním případě nakonfigurujte prostředí tak, aby automaticky načítal a nastavil tyto proměnné prostředí, aby se zabránilo ručnímu zadávání.

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
…

Poznámka:

Aktualizujte cesty tak, aby odpovídaly nainstalované verzi sady SDK. Výchozí instalační cesta je /opt/azurecloudhsm/. Nejnovější sadu SDK najdete v Azure Cloud HSM SDK verze.

Podrobnosti o ověřování v OpenSSL najdete v průvodci průvodcem integrace OpenSSL s Azure Cloud HSM.

Techniky multithreadingu

Azure Cloud HSM podporuje vícevláknové aplikace, ale je potřeba vzít v úvahu jejich zpracování:

  • PKCS#11: Inicializujte knihovnu PKCS#11 tím, že použijete C_Initialize pouze jednou. Přiřaďte každé vlákno vlastní relaci pomocí C_OpenSession. Nepoužívejte stejnou relaci napříč několika vlákny.
  • JCE: Inicializovat poskytovatele Azure Cloud HSM pouze jednou. Vyhněte se sdílení instancí objektů rozhraní SERVICE Provider Interface (SPI) napříč vlákny. Například použijte Cipher, , Signature, Digest, MacKeyFactory, a KeyGenerator objekty pouze v příslušných kontextech vlákna.

Opakované pokusy o integraci operací HSM

Microsoft může vyměnit HSM ve vašem clusteru Azure Cloud HSM za provozních nebo údržbových důvodů, například v případě selhání zařízení. Pokud chcete aplikaci připravit na takové scénáře, doporučujeme přidat logiku opakování na straně klienta do všech operací odeslaných do clusteru. Toto nastavení předpokládá, že následné pokusy o neúspěšné operace, ať už kvůli nahrazení nebo dočasnému výpadku údržby, budou úspěšné.

Zpracování relací klienta HSM v cloudu

Klient Azure Cloud HSM se přihlásí a odhlásí ze všech relací HSM pokaždé, když jakákoli aplikace provede přihlášení nebo odhlášení. V důsledku toho, pokud druhá aplikace používá azurecloudhsm_client, sdílí stejné relace a dědí stejné přihlašovací údaje, pokud je spuštěná ze stejného hostitele. Nástroj azurecloudhsm_client sleduje, které aplikace se pokusí přihlásit. Umožňuje správně přihlášeným aplikacím spouštět příkazy, které vyžadují ověření.

Pokud jste například přihlášení pomocí azurecloudhsm_util a pokusíte se spustit nástroj aplikace nebo klíče v jiném okně terminálu s poskytovatelem Azure Cloud HSM, dojde k chybě, protože aktivní relace je již otevřená. Musíte zavřít relaci azurecloudhsm_util, aby vaše aplikace mohla vytvořit relaci spuštěnou na vašem hostiteli azurecloudhsm_client pro ověření.