Partager via


Authentification dans azure Cloud HSM

L’authentification est un aspect essentiel de l’accès sécurisé et de l’exploitation dans azure Cloud HSM. Cet article décrit les méthodes d’authentification, notamment l’interface de ligne de commande (CLI), PKCS#11, Java Cryptography Extension (JCE) et OpenSSL. Cet article fournit également les meilleures pratiques pour la gestion multithreading et la gestion des sessions.

Authentification CLI HSM cloud

Vous pouvez vous authentifier à l’aide d’outils CLI comme azcloudhsm_util en mode interactif ou en mode à commande unique. En mode interactif, utilisez la loginHSM commande. Pour le mode à commande unique, incluez singlecmd et paramètres pour loginHSM. Nous vous conseillons de stocker en toute sécurité vos informations d’identification HSM lorsque votre application ne les utilise pas.

Mode interactif

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

Mode de commande unique

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

Authentification PKCS#11

Dans PKCS#11, vous vous connectez en utilisant l'API C_Login après avoir ouvert une session avec C_OpenSession. Vous devez utiliser C_Login une seule fois par emplacement (Cluster Cloud HSM). Une fois que vous êtes connecté, vous pouvez ouvrir des sessions supplémentaires en utilisant C_OpenSession sans vous reconnecter.

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

Pour obtenir des exemples de code pour l’authentification auprès de PKCS#11, consultez le guide d’intégration de PKCS#11 à Azure Cloud HSM.

Authentification JCE

Le fournisseur JCE pour Azure Cloud HSM offre une prise en charge des méthodes de connexion implicites et explicites. Chacun convient à différents cas d’usage.

Nous vous recommandons d’utiliser la connexion implicite dans la mesure du possible, car le SDK gère de manière autonome l’authentification. Cette méthode est particulièrement utile si votre application se déconnecte du cluster et nécessite une réauthentification. La connexion implicite facilite également la fourniture d’informations d’identification à votre application lors de l’intégration à des plateformes où le contrôle direct sur le code d’application n’est pas possible.

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

Pour plus d’informations sur les méthodes de connexion, consultez le guide d’intégration de JCE à Azure Cloud HSM.

Authentification OpenSSL

Lorsque vous utilisez un moteur OpenSSL pour azure Cloud HSM, les variables environnementales fournissent les informations d’identification. Nous vous conseillons de stocker en toute sécurité vos informations d’identification HSM lorsque votre application ne les utilise pas. Dans l’idéal, configurez votre environnement pour récupérer et définir automatiquement ces variables d’environnement pour éviter l’entrée manuelle.

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
…

Pour plus d’informations sur l’authentification avec OpenSSL, consultez le guide pour l’intégration d’OpenSSL à Azure Cloud HSM.

Techniques de multithreading

Azure Cloud HSM prend en charge les applications multithread, mais il existe des considérations à prendre en compte pour les gérer :

  • PKCS#11 : Initialisez la bibliothèque PKCS#11 à l’aide C_Initialize d’une seule fois. Attribuez à chaque thread sa propre session à l’aide C_OpenSessionde . Évitez d’utiliser la même session sur plusieurs threads.
  • JCE : Initialisez le fournisseur Azure Cloud HSM une seule fois. Évitez de partager des instances d’objets SPI (Service Provider Interface) entre les threads. Par exemple, utilisez Cipher, , SignatureDigest, MacKeyFactoryet KeyGenerator les objets uniquement dans leurs contextes de thread respectifs.

Nouvelles tentatives d’intégration des opérations HSM

Microsoft peut remplacer un HSM dans votre cluster HSM Cloud Azure pour des raisons opérationnelles ou de maintenance, par exemple en cas de panne d’un appareil. Pour préparer votre application à de tels scénarios, nous vous conseillons d’ajouter une logique de nouvelle tentative côté client à toutes les opérations envoyées à votre cluster. Cette configuration prévoit que les nouvelles tentatives sur les opérations ayant échoué, qu’elles soient en raison de remplacements ou de pannes de maintenance temporaires, réussissent.

Gestion des sessions de client HSM cloud

Le client HSM Cloud Azure se connecte et se déconnecte de toutes les sessions HSM chaque fois qu’une application effectue une connexion ou une déconnexion. Par conséquent, si une deuxième application utilise azurecloudhsm_client, elle partage les mêmes sessions et hérite des mêmes informations d’identification de connexion si elle s’exécute à partir du même hôte. L’outil azurecloudhsm_client effectue le suivi des applications qui tentent de se connecter. Il permet aux applications correctement connectées d’exécuter des commandes nécessitant une authentification.

Par exemple, si vous êtes connecté avec azurecloudhsm_util et que vous tentez d’exécuter votre application ou outil de clé dans une autre fenêtre de terminal avec le fournisseur Azure Cloud HSM, vous rencontrez une erreur car une session active est déjà ouverte. Vous devez fermer la session azurecloudhsm_util de votre application pour permettre la création d'une session avec azurecloudhsm_client sur votre hôte afin qu'elle puisse s'authentifier.