Usar o Azure Key Vault para fornecer certificados TLS/SSL para a JVM
Este artigo descreve como integrar o Cofre de Chaves do Azure na JVM para entregar certificados TLS/SSL.
Adicionar o provedor JCA ao arquivo java.security
Para registrar o provedor JCA, a JVM precisa conhecê-lo. Para realizar essa tarefa, use as seguintes etapas:
Faça uma cópia do arquivo java.security dentro da instalação da JVM e nomeie o arquivo my.java.security.
Dentro do arquivo, procure a linha
security.provider.<maximum-value>
. Substitua o<maximum-value>
espaço reservado pelo valor máximo nesta posição entre todas as entradas. Por exemplo:security.provider.13=SunPKCS11
.Aumente o número dessa entrada em 1. Por exemplo,
security.provider.13
deve se tornarsecurity.provider.14
.Adicione a seguinte linha:
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Observação
Certifique-se de que cada security.provider.<X>
entrada tenha um valor numérico diferente para <X>
o , e mantenha-os ordenados incrementalmente começando com 1.
Como executar seu aplicativo
Para executar seu aplicativo, use as seguintes etapas e substitua os <...>
espaços reservados por seus próprios valores:
Adicione o arquivo azure-security-keyvault-jca-X.Y.Z.jar ao classpath. Por exemplo, se você deseja integrar com o Tomcat 9, adicione o caminho completo do arquivo azure-security-keyvault-jca-X.Y.Z.jar ao classpath Java usando tomcat9w.exe.
Adicionar
-Djava.security.properties==my.java.security
à linha de comando.Adicione
-Dazure.keyvault.uri=<your-keyvault-uri>
à linha de comando para indicar qual Cofre de Chaves do Azure usar. Por exemplo:-Dazure.keyvault.uri=https://some.vault.azure.net/
.Adicione os argumentos indicados na lista a seguir, dependendo do seu cenário:
Se você autenticar usando uma entidade de serviço, adicione os seguintes argumentos:
-Dazure.keyvault.tenant-id=<your-tenant-id>
-Dazure.keyvault.client-id=<your-client-id>
-Dazure.keyvault.client-secret=<your-client-secret>
Se você autenticar usando uma identidade gerenciada atribuída pelo sistema, não serão necessários mais argumentos.
Se você autenticar usando uma identidade gerenciada atribuída pelo usuário, adicione o seguinte argumento:
-Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>
Para obter mais informações sobre esses cenários de autenticação, consulte Objetos de entidade de aplicativo e serviço na ID do Microsoft Entra e Como as identidades gerenciadas para recursos do Azure funcionam com máquinas virtuais do Azure.
Usar uma entidade de serviço
Para criar uma ID de cliente do Azure e um segredo de cliente do Azure, use o comando a seguir, substituindo os <...>
espaços reservados por seus próprios valores. Certifique-se de armazenar os valores retornados, como appId
, password
, tenant
.
export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}
Armazene os valores retornados para que você possa usá-los mais tarde.
Certifique-se de que o cliente especificado por CLIENT_ID
pode acessar o Cofre de Chaves de destino. Para conceder acesso, use o seguinte comando, substituindo o <your-key-vault-name>
espaço reservado:
az keyvault set-policy \
--name <your-key-vault-name> \
--spn ${CLIENT_ID} \
--secret-permissions get list \
--certificate-permissions get list \
--key-permissions get list
Usar uma identidade gerenciada
Para habilitar uma identidade gerenciada atribuída pelo sistema ou criar uma identidade gerenciada atribuída pelo usuário, siga as instruções em Configurar identidades gerenciadas para recursos do Azure em uma VM do Azure usando a CLI do Azure
Depois de obter a ID do objeto da identidade gerenciada, use o seguinte comando para criar a política de acesso do Cofre de Chaves para sua identidade gerenciada:
az keyvault set-policy \
--name <your-key-vault-name> \
--object-id <object-id-of-your-managed-identity> \
--secret-permissions get list \
--certificate-permissions get list \
--key-permissions get list
Observação
A ID do objeto da identidade gerenciada também é chamada de ID principal ao usar uma identidade gerenciada atribuída pelo usuário.
Exemplos de TLS/SSL do lado do cliente/servidor
Para obter exemplos de TLS/SSL do lado do cliente/servidor, consulte a seção Exemplos da biblioteca de cliente JCA do Cofre de Chaves do Azure para Java.