Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La autenticación es un aspecto fundamental del acceso seguro y el funcionamiento dentro de Azure Cloud HSM. En este artículo se describen los métodos de autenticación, incluida la interfaz de la línea de comandos (CLI), PKCS#11, la extensión de criptografía de Java (JCE) y OpenSSL. En este artículo también se proporcionan procedimientos recomendados para el control de sesiones y multithreading.
Autenticación de la CLI de HSM en la nube
Puede autenticarse mediante herramientas de la CLI como azcloudhsm_util en modo interactivo o en modo de comando único. En modo interactivo, use el loginHSM comando . Para el modo de comando único, incluya singlecmd y los parámetros para loginHSM. Le recomendamos que almacene sus credenciales de HSM de forma segura cuando la aplicación no las use.
Modo interactivo
./azcloudhsm_util
loginHSM -u CU -s cu1 -p user1234
Modo de comando único
sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s cu1 -p user1234 findKey
Autenticación PKCS#11
En PKCS#11, inicie sesión con la C_Login API después de abrir una sesión mediante C_OpenSession. Solo debe usar C_Login una vez por ranura (clúster HSM en la nube). Después de iniciar sesión correctamente, puede abrir sesiones adicionales mediante C_OpenSession sin iniciar sesión de nuevo.
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);
…
Para obtener ejemplos de código para autenticarse en PKCS#11, consulte la guía para integrar PKCS#11 con Azure Cloud HSM.
Autenticación JCE
El proveedor JCE para Azure Cloud HSM ofrece compatibilidad con métodos de inicio de sesión implícitos y explícitos. Cada uno es adecuado para diferentes casos de uso.
Se recomienda usar el inicio de sesión implícito siempre que sea posible, ya que el SDK administra de forma autónoma la autenticación. Este método es especialmente beneficioso si la aplicación se desconecta del clúster y requiere la reautenticación. El inicio de sesión implícito también facilita la provisión de credenciales a la aplicación durante la integración con plataformas en las que el control directo sobre el código de la aplicación no es factible.
LoginManager lm = LoginManager.getInstance();
lm.login("PARTITION_1","cu1", "user1234");
…
lm.logout();
…
Para más información sobre los métodos de inicio de sesión, consulte la guía para integrar JCE con Azure Cloud HSM.
Autenticación de OpenSSL
Cuando se usa un motor de OpenSSL para Azure Cloud HSM, las variables de entorno proporcionan las credenciales. Le recomendamos que almacene sus credenciales de HSM de forma segura cuando la aplicación no las use. Lo ideal es configurar el entorno para recuperar y establecer automáticamente estas variables de entorno para evitar la entrada manual.
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
…
Para más información sobre la autenticación con OpenSSL, consulte la guía para integrar OpenSSL con Azure Cloud HSM.
Técnicas de multiproceso
Azure Cloud HSM admite aplicaciones multiproceso, pero hay consideraciones para controlarlas:
-
PKCS#11: inicialice la biblioteca PKCS#11 con
C_Initializesolo una vez. Asigne a cada subproceso su propia sesión medianteC_OpenSession. Evite usar la misma sesión en varios subprocesos. -
JCE: inicialice el proveedor de HSM en la nube de Azure solo una vez. Evite compartir instancias de objetos de interfaz de proveedor de servicios (SPI) entre subprocesos. Por ejemplo, use
Cipher,Signature,Digest,Mac,KeyFactory, yKeyGeneratorobjetos solo dentro de sus respectivos contextos de subproceso.
Reintentos para la integración de operaciones de HSM
Microsoft puede sustituir un HSM en su clúster de HSM de Azure Cloud por razones operativas o de mantenimiento, como si un dispositivo falla. Para preparar la aplicación para estos escenarios, le recomendamos que agregue lógica de reintento del lado cliente a todas las operaciones enviadas al clúster. Esta configuración prevé que los reintentos posteriores en las operaciones con errores, ya sea debido a reemplazos o interrupciones de mantenimiento temporal, se realizarán correctamente.
Control de sesiones de cliente HSM en la nube
El cliente de Azure Cloud HSM inicia sesión y sale de todas las sesiones de HSM siempre que cualquier aplicación realice un inicio de sesión o cierre de sesión. Como resultado, si una segunda aplicación usa azurecloudhsm_client, comparte las mismas sesiones y hereda las mismas credenciales de inicio de sesión si se ejecuta desde el mismo host. La azurecloudhsm_client herramienta realiza un seguimiento de qué aplicaciones intentan iniciar sesión. Permite que las aplicaciones que han iniciado sesión correctamente ejecuten comandos que requieren autenticación.
Por ejemplo, si ha iniciado sesión con azurecloudhsm_util e intenta ejecutar la aplicación o la herramienta de clave en otra ventana de terminal con el proveedor de Azure Cloud HSM, se produce un error porque ya está abierta una sesión activa. Debe cerrar la azurecloudhsm_util sesión de su aplicación para que se pueda crear una nueva sesión con azurecloudhsm_client ejecutándose en su host y así autenticarla.