Partilhar via


Guia de início rápido: biblioteca de cliente secreta do Azure Key Vault para Java

Introdução à biblioteca de cliente do Azure Key Vault Secret para Java. Siga estas etapas para instalar o pacote e experimentar o código de exemplo para tarefas básicas.

Tip

Se estiveres a trabalhar com recursos do Azure Key Vault Secrets numa aplicação Spring, recomendamos considerar o Spring Cloud Azure como alternativa. O Spring Cloud Azure é um projeto de código aberto que fornece integração perfeita do Spring com os serviços do Azure. Para saber mais sobre o Spring Cloud Azure e ver um exemplo usando Segredos do Key Vault, consulte Carregar um segredo do Azure Key Vault num aplicativo Spring Boot.

Recursos adicionais:

Prerequisites

Este início rápido pressupõe que tu estejas a executar a CLI do Azure e o Apache Maven num terminal Linux.

Preparação

Este guia de início rápido está usando a biblioteca de Identidade do Azure com a CLI do Azure para autenticar o usuário nos Serviços do Azure. Os desenvolvedores também podem usar o Visual Studio ou o Visual Studio Code para autenticar as suas chamadas; para obter mais informações, consulte Autenticar o cliente com a biblioteca de cliente do Azure Identity.

Iniciar sessão no Azure

  1. Execute o comando login.

    az login
    

    Se a CLI puder abrir seu navegador padrão, ela fará isso e carregará uma página de entrada do Azure.

    Caso contrário, abra uma página do navegador em https://aka.ms/devicelogin e insira o código de autorização exibido no seu terminal.

  2. Inicie sessão com as credenciais da sua conta no browser.

Criar um novo aplicativo de console Java

Em uma janela do console, use o comando mvn para criar um novo aplicativo de console Java com o nome akv-secrets-java.

mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
                       -DartifactId=akv-secrets-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

O resultado da geração do projeto será algo parecido com isto:

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-secrets-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------

Altere o seu diretório para a pasta recém-criada akv-secrets-java/.

cd akv-secrets-java

Instalar o pacote

** Abra o ficheiro pom.xml no editor de texto. Adicione os seguintes elementos de dependência ao grupo de dependências.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-secrets</artifactId>
      <version>4.2.3</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.0</version>
    </dependency>

Criar um grupo de recursos e um cofre de chaves

Este quickstart usa um cofre de chaves do Azure pré-configurado. Você pode criar um cofre de chaves seguindo as etapas nestes guias rápidos:

Como alternativa, você pode executar esses comandos da CLI do Azure.

Important

Cada cofre de chaves deve ter um nome exclusivo. Substitua <your-unique-keyvault-name> pelo nome do seu cofre de chaves nos exemplos seguintes.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Conceder acesso ao seu cofre de chaves

Para obter permissões para o seu cofre de chaves por meio do Controle de Acesso Baseado em Funções (RBAC), atribua uma função ao seu "Nome Principal do Usuário" (UPN) usando o comando da Azure CLI `az role assignment create`.

az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Substitua <upn>, <subscription-id>, <resource-group-name> e <your-unique-keyvault-name> pelos seus valores reais. O seu UPN normalmente estará no formato de um endereço de e-mail (por exemplo, username@domain.com).

Definir variáveis de ambiente

Este aplicação está a usar o nome do seu cofre de chaves como uma variável de ambiente chamada KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<vault-name>"

macOS ou Linux

export KEY_VAULT_NAME=<vault-name>

Modelo de objeto

A biblioteca de cliente do Azure Key Vault Secret para Java permite gerenciar segredos. A seção Código Exemplos mostra como criar um cliente, definir um segredo, recuperar um segredo e excluir um segredo.

Exemplos de código

Adicionar diretivas

Adicione as seguintes diretivas à parte superior do seu código:

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;

Autenticar e criar um cliente

As solicitações de aplicativo para a maioria dos serviços do Azure devem ser autorizadas. Usar a classe DefaultAzureCredential é a abordagem recomendada para implementar conexões sem senha aos serviços do Azure no seu código. DefaultAzureCredential suporta vários métodos de autenticação e determina qual método deve ser usado em tempo de execução. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes em ambientes diferentes (local versus produção) sem implementar código específico do ambiente.

Neste início rápido, DefaultAzureCredential autentica-se no Key Vault usando as credenciais do utilizador de desenvolvimento local conectado à CLI do Azure. Quando a aplicação é implantada no Azure, o mesmo código DefaultAzureCredential pode descobrir e usar automaticamente uma identidade gerida atribuída a um App Service, Virtual Machine ou outros serviços. Para obter mais informações, consulte Visão Geral de Identidade Gerida.

Neste exemplo, o nome do cofre de chaves é expandido para o URI do cofre de chaves, no formato https://<vault-name>.vault.azure.net. Para obter mais informações sobre como autenticar para o cofre de chaves, consulte o Guia do Programador.

String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

SecretClient secretClient = new SecretClientBuilder()
    .vaultUrl(keyVaultUri)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Guarde um segredo

Agora que a sua aplicação está autenticada, pode colocar um segredo no seu cofre de chaves usando o método secretClient.setSecret. Isso requer um nome para o segredo — atribuímos o valor "mySecret" à secretName variável neste exemplo.

secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

Pode verificar que o segredo foi armazenado com o comando az keyvault secret show:

az keyvault secret show --vault-name <vault-name> --name mySecret

Recuperar um segredo

Pode agora recuperar o segredo definido anteriormente com o método secretClient.getSecret.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

Agora você pode acessar o valor do segredo recuperado com retrievedSecret.getValue().

Eliminar um segredo

Finalmente, vamos eliminar o segredo do cofre de chaves com o secretClient.beginDeleteSecret método.

A exclusão secreta é uma operação de longa duração, para a qual pode-se verificar o seu progresso ou esperar que ela seja concluída.

SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();

Você pode verificar se o segredo foi eliminado com o comando az keyvault secret show:

az keyvault secret show --vault-name <vault-name> --name mySecret

Limpar recursos

Quando não for mais necessário, você poderá usar a CLI do Azure ou o Azure PowerShell para remover seu cofre de chaves e o grupo de recursos correspondente.

az group delete -g "<resource-group>"
Remove-AzResourceGroup -Name "<resource-group>"

Código de exemplo

package com.keyvault.secrets.quickstart;

import java.io.Console;

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;

public class App {
    public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
        String keyVaultName = System.getenv("KEY_VAULT_NAME");
        String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

        System.out.printf("key vault name = %s and key vault URI = %s \n", keyVaultName, keyVaultUri);

        SecretClient secretClient = new SecretClientBuilder()
            .vaultUrl(keyVaultUri)
            .credential(new DefaultAzureCredentialBuilder().build())
            .buildClient();

        Console con = System.console();

        String secretName = "mySecret";

        System.out.println("Please provide the value of your secret > ");

        String secretValue = con.readLine();

        System.out.print("Creating a secret in " + keyVaultName + " called '" + secretName + "' with value '" + secretValue + "' ... ");

        secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

        System.out.println("done.");
        System.out.println("Forgetting your secret.");

        secretValue = "";
        System.out.println("Your secret's value is '" + secretValue + "'.");

        System.out.println("Retrieving your secret from " + keyVaultName + ".");

        KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

        System.out.println("Your secret's value is '" + retrievedSecret.getValue() + "'.");
        System.out.print("Deleting your secret from " + keyVaultName + " ... ");

        SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
        deletionPoller.waitForCompletion();

        System.out.println("done.");
    }
}

Próximos passos

Neste início rápido, criou um cofre de chaves, armazenou um segredo, recuperou-o e, em seguida, eliminou-o. Para saber mais sobre o Key Vault e como integrá-lo com seus aplicativos, continue nestes artigos.