Compartilhar via


Autenticação no Azure Cloud HSM

A autenticação é um aspecto crucial do acesso e da operação com segurança no HSM de Nuvem do Azure. Este artigo descreve métodos de autenticação, incluindo CLI (interface de linha de comando), PKCS#11, JCE (Extensão de Criptografia Java) e OpenSSL. Este artigo também fornece práticas recomendadas para manipulação de multithreading e 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. Aconselhamos que você armazene com segurança suas credenciais de HSM quando seu aplicativo não as estiver usando.

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 nº 11

No PKCS nº 11, você entra usando a C_Login API depois de abrir uma sessão usando C_OpenSession. Você precisa usar C_Login apenas uma vez por slot (cluster HSM de nuvem). Depois de entrar com êxito, você pode abrir sessões adicionais usando C_OpenSession sem entrar 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 no PKCS nº 11, consulte o guia para integrar o PKCS nº 11 ao HSM da Nuvem do Azure.

Autenticação JCE

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

Recomendamos que você use a entrada implícita sempre que possível, pois o SDK gerencia a autenticação de forma autônoma. Esse método é particularmente benéfico se o aplicativo se desconectar do cluster e exigir autenticação. A entrada implícita também facilita o fornecimento de credenciais para seu aplicativo durante a integração com plataformas em que 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 métodos de entrada, consulte o guia para integrar o JCE ao Azure Cloud HSM.

Autenticação OpenSSL

Quando você usa um mecanismo OpenSSL para HSM de Nuvem do Azure, as variáveis ambientais fornecem as credenciais. Aconselhamos que você armazene com segurança suas credenciais de HSM quando seu aplicativo não as estiver usando. 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 ao Azure Cloud HSM.

Técnicas de multithreading

O HSM de Nuvem do Azure dá suporte a aplicativos multithread, mas há considerações para lidar com eles:

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

Novas tentativas de integração de operações de HSM

A Microsoft pode trocar um HSM em seu cluster HSM na Nuvem do Azure para fins operacionais ou de manutenção, como se um dispositivo falhasse. Para preparar seu aplicativo para esses cenários, aconselhamos que você adicione lógica de repetição do lado do cliente a todas as operações enviadas ao cluster. Essa configuração prevê que as novas 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 HSM na nuvem

O cliente HSM do Azure Cloud entra e sai de todas as sessões de HSM sempre que qualquer aplicativo executa uma entrada ou saída. Como resultado, se um segundo aplicativo for usado azurecloudhsm_client, ele compartilhará as mesmas sessões e herdará as mesmas credenciais de entrada se estiver em execução do 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 você já estiver conectado à sua conta azurecloudhsm_util e tentar executar seu aplicativo ou ferramenta de gerenciamento de chaves em outra janela de terminal com o provedor de HSM da Nuvem do Azure, você encontrará um erro porque uma sessão ativa já está aberta. Você deve fechar a sessão azurecloudhsm_util do seu aplicativo para criar uma sessão azurecloudhsm_client em execução no host, para que ela seja autenticada.