Проверка подлинности в Azure Cloud HSM

Проверка подлинности является важным аспектом безопасного доступа и работы в Azure Cloud HSM. В этой статье описаны методы проверки подлинности, включая интерфейс командной строки (CLI), PKCS#11, Java расширение шифрования (JCE) и OpenSSL. В этой статье также приведены рекомендации по многопоточности и обработке сеансов.

Поддерживаемые методы проверки подлинности

Azure Cloud HSM поддерживает только проверку подлинности на основе паролей. Он не поддерживает проверку подлинности с помощью устройства ввода ПИН-кода (PED).

Проверка подлинности интерфейса командной строки HSM в облаке

Вы можете пройти проверку подлинности с помощью таких средств CLI, как azcloudhsm_util в интерактивном или однокомандном режиме. В интерактивном режиме используйте команду loginHSM. Для однокомандного режима включите singlecmd и параметры для loginHSM. Мы советуем безопасно хранить учетные данные 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 вы войдите с помощью C_Login API после открытия сеанса с помощью C_OpenSession. Необходимо использовать C_Login только один раз на слот (кластер Cloud 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

Поставщик JCE для Azure Cloud HSM предлагает поддержку как неявных, так и явных методов входа. Каждый вариант подходит для разных вариантов использования.

По возможности рекомендуется использовать неявный вход, так как пакет SDK автономно управляет проверкой подлинности. Этот метод особенно полезен, если приложение отключается от кластера и требует повторной проверки подлинности. Неявный вход также упрощает предоставление учетных данных приложению во время интеграции с платформами, где прямой контроль над кодом приложения невозможен.

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

Для получения дополнительных сведений о методах входа см. руководство по интеграции JCE с Azure Cloud HSM.

Проверка подлинности OpenSSL

При использовании обработчика OpenSSL для Azure Cloud HSM переменные среды предоставляют учетные данные. Мы советуем безопасно хранить учетные данные HSM, если приложение не использует их. В идеале настройте среду для автоматического извлечения и задания этих переменных среды, чтобы избежать ручной записи.

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
…

Замечание

Обновите пути, чтобы соответствовать установленной версии пакета SDK. По умолчанию используется /opt/azurecloudhsm/путь установки. Ознакомьтесь с последними релизами Azure Cloud HSM SDK.

Сведения о проверке подлинности с помощью OpenSSL см. в guide для интеграции OpenSSL с Azure Cloud HSM.

Методы многопоточности

Azure Cloud HSM поддерживает многопоточные приложения, но существуют рекомендации по их обработке:

  • PKCS#11. Инициализация библиотеки PKCS#11 с помощью C_Initialize только один раз. Назначьте каждому потоку собственный сеанс, используя C_OpenSession. Избегайте использования одного и того же сеанса в нескольких потоках.
  • JCE: Инициализируйте поставщика Azure Cloud HSM только один раз. Избегайте совместного использования экземпляров объектов интерфейса поставщика услуг (SPI) в потоках. Например, используйте Cipher, Signature, Digest, Mac, KeyFactory и KeyGenerator объекты только в соответствующих контекстах потока.

Повторные попытки для интеграции операций HSM

Корпорация Майкрософт может заменить HSM в кластере Azure Cloud HSM в целях эксплуатации или обслуживания, например, если устройство выходит из строя. Чтобы подготовить приложение к таким сценариям, мы советуем добавить логику повторных попыток на стороне клиента во все операции, отправленные в кластер. Эта настройка предполагает, что последующие повторные попытки при неудачных операциях, будь то из-за замены или временных сбоев обслуживания, будут успешными.

Обработка сеанса клиента HSM в облаке

Клиент Azure Cloud HSM входит и выходит из всех сеансов HSM, когда любое приложение выполняет вход или выход. В результате, если во втором приложении используется azurecloudhsm_client, он использует те же сеансы и наследует те же учетные данные входа, если он работает с одного узла. Средство azurecloudhsm_client отслеживает, какие приложения пытаются войти. Он позволяет правильно вошедшего в систему приложения выполнять команды, требующие проверки подлинности.

Например, если вы вошли с помощью azurecloudhsm_util и попытаетесь запустить приложение или средство ключа в другом окне терминала с поставщиком Azure Cloud HSM, возникла ошибка, так как активный сеанс уже открыт. Вы должны закрыть сеанс azurecloudhsm_util, чтобы ваше приложение создало сеанс с azurecloudhsm_client, работающий на вашем узле для проверки подлинности.