Usar o Azure Key Vault para entregar certificados TLS/SSL à JVM
Este artigo descreve como integrar o Azure Key Vault à JVM para fornecer certificados TLS/SSL.
Adicione o provedor JCA ao arquivo java.security
Para registrar o provedor JCA, a JVM precisa saber sobre ele. 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 como my.java.security.
Dentro do arquivo, procure a linha
security.provider.<maximum-value>
. Substitua o espaço reservado<maximum-value>
pelo valor máximo nesta posição entre todas as entradas. Por exemplo:security.provider.13=SunPKCS11
.Incremente o número desta entrada em 1. Por exemplo,
security.provider.13
deve tornar-sesecurity.provider.14
.Adicione a seguinte linha:
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Nota
Certifique-se de que cada security.provider.<X>
entrada tem um valor de número diferente para , e mantenha-os ordenados incrementalmente começando <X>
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ê quiser 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 Azure Key Vault 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 ao 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 principais de aplicativo e serviço no Microsoft Entra ID 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
, , tenant
password
.
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 da Chave 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
Utilizar uma identidade gerida
Para habilitar uma identidade gerenciada atribuída ao 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 o ID do objeto da identidade gerenciada, use o seguinte comando para criar a política de acesso do Cofre da Chave 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
Nota
O ID do objeto da identidade gerenciada também é chamado 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 Azure Key Vault para Java.