Partilhar via


Autenticação no Azure Cloud HSM

A autenticação é um aspeto crucial para acessar e operar com segurança no Azure Cloud HSM. Este artigo descreve métodos de autenticação, incluindo interface de linha de comando (CLI), PKCS#11, Java Cryptography Extension (JCE) e OpenSSL. Este artigo também fornece práticas recomendadas para multithreading e manipulação de sessão.

Autenticação da CLI do HSM na nuvem

Você pode autenticar usando ferramentas da CLI, como azcloudhsm_util no modo interativo ou no modo de comando único. No modo interativo, use o comando loginHSM. Para o modo de comando único, inclua singlecmd e parâmetros para loginHSM. Recomendamos que você armazene com segurança suas credenciais de HSM quando seu aplicativo não estiver usando-as.

Modo interativo

./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

Autenticação PKCS#11

No PKCS#11, você entra usando o C_Login API depois de abrir uma sessão com o uso de C_OpenSession. Você precisa usar C_Login apenas uma vez por slot (cluster Cloud HSM). Depois de iniciar sessão com êxito, pode abrir sessões adicionais utilizando C_OpenSession sem iniciar sessão novamente.

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 obter exemplos de código para autenticação em PKCS#11, consulte o guia para integrar PKCS#11 com o Azure Cloud HSM.

Autenticação JCE

O provedor JCE para Azure Cloud HSM oferece suporte para métodos de entrada implícitos e explícitos. Cada um é adequado para diferentes casos de uso.

Recomendamos que você use o login implícito sempre que possível, porque o SDK gerencia a autenticação de forma autônoma. Esse método é particularmente benéfico se seu aplicativo se desconectar do cluster e exigir uma nova autenticação. O login implícito também facilita o fornecimento de credenciais para seu aplicativo durante a integração com plataformas onde o controle direto sobre o código do aplicativo não é viável.

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

Para obter mais detalhes sobre os métodos de entrada, consulte o guia para integrar o JCE com o Azure Cloud HSM.

Autenticação OpenSSL

Quando você usa um mecanismo OpenSSL para o Azure Cloud HSM, as variáveis ambientais fornecem as credenciais. Recomendamos que você armazene com segurança suas credenciais de HSM quando seu aplicativo não estiver usando-as. Idealmente, configure seu ambiente para recuperar e definir automaticamente essas variáveis de ambiente para evitar a 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 obter detalhes de autenticação com o OpenSSL, consulte o guia para integrar o OpenSSL com o Azure Cloud HSM.

Técnicas de multithreading

O Azure Cloud HSM dá suporte a aplicativos multithreaded, mas há considerações para lidar com eles:

  • PKCS#11: Inicialize a biblioteca PKCS#11 usando C_Initialize apenas uma vez. Atribua a cada thread a sua própria sessão usando C_OpenSession. Evite usar a mesma sessão em vários threads.
  • JCE: Inicialize o provedor do Azure Cloud HSM apenas uma vez. Evite compartilhar instâncias de objetos SPI (Service Provider Interface) entre threads. Por exemplo, use Cipher, Signature, Digest, Mac, KeyFactory, e KeyGenerator objetos somente nos seus respetivos contextos de thread.

Tentativas de integração de operações de HSM

A Microsoft pode trocar um HSM em seu cluster do Azure Cloud HSM para fins operacionais ou de manutenção, como se um dispositivo falhar. Para preparar seu aplicativo para esses cenários, recomendamos que você adicione a lógica de repetição do lado do cliente a todas as operações enviadas ao cluster. Essa configuração prevê que as tentativas subsequentes em operações com falha, seja devido a substituições ou interrupções temporárias de manutenção, serão bem-sucedidas.

Tratamento de sessão do cliente Cloud HSM

O cliente Azure Cloud HSM entra e sai de todas as sessões do HSM sempre que qualquer aplicação realiza um início ou fim de sessão. Como resultado, se uma segunda aplicação usar azurecloudhsm_client, ela partilha das mesmas sessões e herda as mesmas credenciais de início de sessão se estiver a ser executada no mesmo host. A azurecloudhsm_client ferramenta controla quais aplicativos tentam entrar. Ele permite que aplicativos conectados corretamente executem comandos que exigem autenticação.

Por exemplo, se estiveres ligado com azurecloudhsm_util e tentares executar a tua aplicação ou ferramenta de chaves em outra janela de terminal com o fornecedor do Azure Cloud HSM, irás encontrar um erro porque uma sessão ativa já está aberta. Você deve fechar a sessão azurecloudhsm_util para que a sua aplicação crie a sessão com azurecloudhsm_client em execução no seu host, permitindo assim a autenticação.