Tutorial: Usar as referências do Key Vault em um aplicativo Java Spring
Neste tutorial, você aprenderá a usar o serviço de Configuração de Aplicativos do Azure junto com o Azure Key Vault. A Configuração de Aplicativos e o Key Vault são serviços complementares usados lado a lado na maioria das implantações de aplicativo.
A Configuração de Aplicativos ajuda você a usar os serviços juntos por meio da criação de chaves que fazem referência a valores armazenados no Key Vault. Quando a Configuração de Aplicativos cria essas chaves, ela armazena os URIs de valores do Key Vault em vez dos valores propriamente ditos.
Seu aplicativo usa o provedor do cliente da Configuração de Aplicativos para recuperar referências do Key Vault, assim como faz para quaisquer outras chaves armazenadas na Configuração de Aplicativos. Nesse caso, os valores armazenados na Configuração de Aplicativos são URIs que fazem referência aos valores no Key Vault. Eles não são valores nem credenciais do Key Vault. Já que o provedor do cliente reconhece as chaves como referências do Key Vault, ele usa o Key Vault para recuperar os valores delas.
Seu aplicativo é responsável por autenticar corretamente, tanto na Configuração de Aplicativos quanto no Key Vault. Os dois serviços não se comunicam diretamente.
Este tutorial mostra a você como implementar referências do Key Vault em seu código. Ele se baseia no aplicativo Web introduzido nos Inícios Rápidos. Antes de continuar, primeiro conclua Criar um aplicativo Java Spring com a Configuração de Aplicativos.
Você pode usar qualquer editor de código para executar as etapas deste tutorial. Por exemplo, o Visual Studio Code é um editor de código multiplataforma disponível para os sistemas operacionais Windows, macOS e Linux.
Neste tutorial, você aprenderá como:
- Criar uma chave da Configuração de Aplicativos que referencia um valor armazenado no Key Vault.
- Acessar o valor dessa chave em um aplicativo Java Spring.
Pré-requisitos
- Assinatura do Azure - criar uma gratuitamente
- Um JDK (Kit de Desenvolvimento do Java) com suporte na versão 11.
- Apache Maven, versão 3.0 ou posterior.
Criar um cofre
Selecione a opção Criar um recurso no canto superior esquerdo do portal do Azure:
Digite Key Vault na caixa de pesquisa.
Na lista de resultados, selecione Cofres de chaves à esquerda.
Em Cofres de chaves, selecione Adicionar.
À direita, na seção Criar cofre de chaves, forneça as seguintes informações:
- Selecione Assinatura para escolher uma assinatura.
- Em Grupo de Recursos, selecione Criar novo e digite um nome para o grupo de recursos.
- Em Nome do cofre de chaves, é necessário um nome exclusivo. Para este tutorial, insira Contoso-vault2.
- Na lista suspensa Região, escolha uma localização.
Deixe as outras opções de Criar cofre de chaves com os valores padrão.
Selecione Criar.
Nesse ponto, sua conta do Azure é a única autorizada a acessar esse novo cofre.
Adicionar um segredo ao Key Vault
Para adicionar um segredo ao cofre, basta executar algumas etapas adicionais. Nesse caso, adicione uma mensagem que você possa usar para testar a recuperação do Key Vault. A mensagem é chamada de Mensagem e você armazena nela o valor de "Olá do Key Vault".
- Na página de propriedades do Key Vault, selecione Segredos.
- Selecione Gerar/Importar.
- No painel Criar um segredo, insira os seguintes valores:
- Opções de upload: insira Manual.
- Name: insira Mensagem.
- Valor: insira Olá do Key Vault.
- Deixe as outras propriedades de Criar um segredo com os valores padrão.
- Selecione Criar.
Adicionar uma referência do Key Vault à Configuração de Aplicativos
Entre no portal do Azure. Escolha Todos os recursos e depois escolha a instância do repositório de Configurações de Aplicativos que você criou no início rápido.
Selecione Gerenciador de Configurações.
Clique em + Criar>Referência do Key Vault e especifique os seguintes valores:
- Chave: Selecione /application/config.keyvaultmessage
- Rótulo: deixe esse valor em branco.
- Assinatura, Grupo de recursos e Cofre de chaves: Insira os valores correspondentes aos valores no cofre de chaves que você criou na seção anterior.
- Segredo: selecione o segredo chamado Mensagem criado na seção anterior.
Conectar-se ao Key Vault
Neste tutorial, você usará uma entidade de serviço para autenticação no Key Vault. Para criar uma entidade de serviço, use o comando az ad sp create-for-rbac da CLI do Azure:
az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
Essa operação retorna uma série de pares de chave/valor:
{ "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecret": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333", "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }
Execute o comando a seguir para permitir que a entidade de serviço acesse o cofre de chaves:
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
Execute o comando a seguir para obter sua object-id e adicioná-la à Configuração de Aplicativos.
az ad sp show --id <clientId-of-your-service-principal> az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
Crie as variáveis de ambiente AZURE_CLIENT_ID, AZURE_CLIENT_SECRET e AZURE_TENANT_ID. Use os valores da entidade de serviço que foram exibidos nas etapas anteriores. Na linha de comando, execute os seguintes comandos e reinicie o prompt de comando para permitir que a alteração entre em vigor:
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"
Se você usa o Windows PowerShell, execute o comando a seguir:
$Env:AZURE_CLIENT_ID = "clientId" $Env:AZURE_CLIENT_SECRET = "clientSecret" $Env:AZURE_TENANT_ID = "tenantId"
Se você usa macOS ou Linux, execute o comando a seguir:
export AZURE_CLIENT_ID ='clientId' export AZURE_CLIENT_SECRET ='clientSecret' export AZURE_TENANT_ID ='tenantId'
Observação
Essas credenciais do Key Vault são usadas somente dentro do seu aplicativo. Seu aplicativo se autentica diretamente com o Key Vault usando essas credenciais sem envolver o serviço de Configuração de Aplicativos. O Key Vault oferece autenticação para seu aplicativo e o serviço de Configuração de Aplicativos sem compartilhar ou expor chaves.
Atualizar o código para usar uma referência do Key Vault
Crie uma variável de ambiente chamada APP_CONFIGURATION_ENDPOINT. Defina seu valor como o ponto de extremidade do repositório de Configuração de Aplicativos. Você pode encontrar o ponto de extremidade na folha Chaves de Acesso no portal do Azure. Reinicie o prompt de comando para permitir que a alteração entre em vigor.
Abra o arquivo de configuração na pasta recursos. Atualize esse arquivo para usar o valor APP_CONFIGURATION_ENDPOINT. Remova todas as referências a uma cadeia de conexão neste arquivo.
spring:
cloud:
azure:
appconfiguration:
stores:
- endpoint: ${APP_CONFIGURATION_ENDPOINT}
Observação
Você também pode usar as configurações globais do Azure Spring Cloud para se conectar ao Key Vault.
Abra MessageProperties.java. Adicione uma nova variável chamada keyVaultMessage:
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }
Abra HelloController.java. Atualize o método getMessage para incluir a mensagem recuperada do Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }
Compile o aplicativo Spring Boot com Maven e execute-o, por exemplo:
mvn clean package mvn spring-boot:run
Depois que o aplicativo estiver em execução, use curl para testar o aplicativo, por exemplo:
curl -X GET http://localhost:8080/
Você verá a mensagem inserida no repositório de Configuração de Aplicativos. Você também verá a mensagem que inseriu no Key Vault.
Limpar os recursos
Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.
Importante
A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
- Selecione Excluir grupo de recursos.
- Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.
Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.
Próximas etapas
Neste tutorial, você criou uma chave da Configuração de Aplicativos que referencia um valor armazenado no Key Vault. Para obter mais perguntas, confira a documentação de referência, ela tem todos os detalhes sobre como funciona a biblioteca de Configuração de Aplicativos do Azure do Spring Cloud. Para saber como usar os sinalizadores de recurso em seu aplicativo Java Spring, prossiga para o próximo tutorial.