Partilhar via


Tutorial: Usar referências do Key Vault em um aplicativo Java Spring

Neste tutorial, você aprenderá a usar o serviço de Configuração de Aplicativo do Azure junto com o Cofre da Chave do Azure. A Configuração do Aplicativo e o Cofre da Chave são serviços complementares usados lado a lado na maioria das implantações de aplicativos.

A Configuração do Aplicativo ajuda você a usar os serviços juntos criando chaves que fazem referência a valores armazenados no Cofre de Chaves. Quando a Configuração do Aplicativo cria essas chaves, ela armazena os URIs dos valores do Cofre de Chaves em vez dos valores em si.

Seu aplicativo usa o provedor de cliente de Configuração de Aplicativo para recuperar referências do Cofre de Chaves, assim como faz para quaisquer outras chaves armazenadas na Configuração do Aplicativo. Nesse caso, os valores armazenados na Configuração do Aplicativo são URIs que fazem referência aos valores no Cofre da Chave. Não são valores ou credenciais do Cofre de Chaves. Como o provedor do cliente reconhece as chaves como referências do Cofre da Chave, ele usa o Cofre da Chave para recuperar seus valores.

Seu aplicativo é responsável por autenticar corretamente na Configuração do Aplicativo e no Cofre da Chave. Os dois serviços não se comunicam diretamente.

Este tutorial mostra 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, conclua primeiro Criar um aplicativo Java Spring com Configuração de Aplicativo.

Você pode usar qualquer editor de código para executar as etapas neste 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, irá aprender a:

  • Crie uma chave de Configuração do Aplicativo que faça referência a um valor armazenado no Cofre da Chave.
  • Acesse o valor dessa chave a partir de um aplicativo Java Spring.

Pré-requisitos

Criar um cofre

  1. Selecione a opção Criar um recurso no canto superior esquerdo do portal do Azure:

    A captura de tela mostra a opção Criar um recurso no portal do Azure.

  2. Na caixa de pesquisa, introduza Key Vault.

  3. Na lista de resultados, selecione Cofres de chaves.

  4. Em Cofres de chaves, selecione Adicionar.

  5. À direita, em Criar cofre de chaves, forneça as seguintes informações:

    • Selecione Assinatura para escolher uma assinatura.
    • Em Grupo de Recursos, selecione Criar novo e insira um nome de grupo de recursos.
    • No Nome do cofre de chaves, é necessário um nome exclusivo. Para este tutorial, insira Contoso-vault2.
    • Na lista suspensa Região, escolha um local.
  6. Deixe as outras opções Criar cofre de chaves com seus valores padrão.

  7. Selecione Criar.

Neste ponto, sua conta do Azure é a única autorizada a acessar esse novo cofre.

A captura de ecrã mostra o cofre das chaves.

Adicionar um segredo ao Key Vault

Para adicionar um segredo ao cofre, você precisa seguir apenas mais algumas etapas. Nesse caso, adicione uma mensagem que você possa usar para testar a recuperação do Cofre da Chave. A mensagem é chamada de Mensagem e você armazena o valor "Olá do Cofre da Chave" nela.

  1. Nas páginas de propriedades do Cofre da Chave, selecione Segredos.
  2. Selecione Gerar/Importar.
  3. No painel Criar um segredo, insira os seguintes valores:
    • Opções de upload: Entre no Manual.
    • Nome: Digite a mensagem.
    • Valor: Digite Hello do Cofre da Chave.
  4. Deixe o outro Crie propriedades secretas com seus valores padrão.
  5. Selecione Criar.

Adicionar uma referência do Cofre da Chave à Configuração do Aplicativo

  1. Inicie sessão no portal do Azure. Selecione Todos os recursos e, em seguida, selecione a instância da App Configuration Store que criou no início rápido.

  2. Selecione Configuration Explorer.

  3. Selecione + Criar>referência do cofre da chave e especifique os seguintes valores:

    • Chave: Selecione /application/config.keyvaultmessage
    • Label: Deixe este valor em branco.
    • Subscrição, Grupo de recursos e Cofre de chaves: introduza os valores correspondentes aos valores no cofre de chaves que criou na secção anterior.
    • Segredo: Selecione o segredo chamado Mensagem que você criou na seção anterior.

Conectar-se ao Cofre da Chave

  1. Neste tutorial, você usa uma entidade de serviço para autenticação no Cofre de Chaves. Para criar essa entidade de serviço, use o comando create-for-rbac da CLI az ad sp do Azure:

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    Esta operação retorna uma série de pares 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/"
    }
    
  2. Execute o seguinte comando para permitir que a entidade de serviço acesse seu cofre de chaves:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Execute o seguinte comando para obter sua id de objeto e, em seguida, adicione-a à Configuração do aplicativo.

    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>
    
  4. Crie as variáveis de ambiente AZURE_CLIENT_ID, AZURE_CLIENT_SECRET e AZURE_TENANT_ID. Use os valores para a 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ê usar o Windows PowerShell, execute o seguinte comando:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    Se você usa macOS ou Linux, execute o seguinte comando:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

Nota

Essas credenciais do Cofre da Chave são usadas apenas em seu aplicativo. Seu aplicativo é autenticado diretamente com o Cofre da Chave usando essas credenciais sem envolver o serviço de Configuração do Aplicativo. O Cofre da Chave fornece autenticação para seu aplicativo e seu serviço de Configuração de Aplicativo sem compartilhar ou expor chaves.

Atualize seu código para usar uma referência do Cofre da Chave

  1. Crie uma variável de ambiente chamada APP_CONFIGURATION_ENDPOINT. Defina seu valor para o ponto de extremidade da sua loja 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.

  2. Abra o arquivo de configuração na pasta de recursos . Atualize este 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}

Nota

Você também pode usar as configurações globais do Spring Cloud Azure para se conectar ao Cofre da Chave.

  1. 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;
    }
    
  2. Abra HelloController.java. Atualize o método getMessage para incluir a mensagem recuperada do Cofre da Chave.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Crie seu aplicativo Spring Boot com o Maven e execute-o, por exemplo:

    mvn clean package
    mvn spring-boot:run
    
  4. Depois que seu aplicativo estiver em execução, use curl para testar seu aplicativo, por exemplo:

    curl -X GET http://localhost:8080/
    

    Vê a mensagem que introduziu na App Configuration Store. Também vê a mensagem que introduziu no Cofre da Chave.

Clean up resources (Limpar recursos)

Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
  4. Selecione Eliminar grupo de recursos.
  5. É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.

Após alguns momentos, o grupo de recursos e todos os seus recursos são excluídos.

Próximos passos

Neste tutorial, você criou uma chave de Configuração do Aplicativo que faz referência a um valor armazenado no Cofre da Chave. Para mais perguntas, consulte a documentação de referência, que contém todos os detalhes sobre como funciona a biblioteca de Configuração de Aplicativos do Azure do Spring Cloud. Para saber como usar sinalizadores de recursos em seu aplicativo Java Spring, continue para o próximo tutorial.