Início Rápido: biblioteca de clientes da Chave do Azure Key Vault para Java
Introdução à biblioteca de clientes da Chave do Azure Key Vault para Java. Siga estas etapas para instalar o pacote e experimentar o código de exemplo para tarefas básicas.
Recursos adicionais:
Pré-requisitos
- Uma assinatura do Azure – crie uma gratuitamente.
- Java Development Kit (JDK) versão 8 ou superior
- Apache Maven
- CLI do Azure
Este início rápido pressupõe que você está executando a CLI do Azure e o Apache Maven em uma janela do terminal do Linux.
Configurando
Este início rápido usa a biblioteca de Identidades do Azure com a CLI do Azure para autenticar usuários nos Serviços do Azure. Os desenvolvedores também podem usar o Visual Studio ou o Visual Studio Code para autenticar as chamadas. Para saber mais, confira Autenticar o cliente na biblioteca de clientes do Azure Idendity.
Entrar no Azure
Execute o comando
login
.az login
Se a CLI puder abrir o navegador padrão, ela o fará e carregará uma página de entrada do Azure.
Caso contrário, abra uma página de navegador em https://aka.ms/devicelogin e insira o código de autorização exibido no terminal.
Entre com suas credenciais de conta no navegador.
Criar um aplicativo de console Java
Em uma janela de console, use o comando mvn
para criar um novo aplicativo do console do Java com o nome akv-keys-java
.
mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
-DartifactId=akv-keys-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
O resultado da geração do projeto deve ser algo similar a:
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-keys-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 diretório para a pasta akv-keys-java/
recém-criada.
cd akv-keys-java
Instalar o pacote
Abra o arquivo pom.xml no seu editor de texto. Adicione os seguintes elementos de dependência ao grupo de dependências.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-keys</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 início rápido usa um Azure Key Vault pré-criado. Você pode criar um cofre de chaves seguindo as etapas no Início rápido da CLI do Azure, no Início rápido do Azure PowerShell ou no Início rápido do portal do Azure.
Como alternativa, você pode executar esses comandos da CLI do Azure ou do Azure PowerShell.
Importante
Cada cofre de chaves deve ter um nome exclusivo. Substitua <seu-nome-de cofre-de-chaves-exclusivo> pelo nome do seu cofre de chaves nos exemplos a seguir.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Permitir acesso ao cofre de chaves
Para obter permissões para o cofre de chaves por meio do RBAC (controle de acesso baseado em função), atribua uma função ao seu UPN (nome principal do usuário) usando o comando da CLI do Azure az role assignment create.
az role assignment create --role "Key Vault Crypto 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 valores reais. Seu UPN normalmente estará no formato de um endereço de email (por exemplo, username@domain.com).
Definir variáveis de ambiente
Este aplicativo usa o nome de seu cofre de chaves como uma variável de ambiente chamada KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS ou Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Modelo de objeto
A biblioteca de clientes da Chave do Azure Key Vault para Java permite gerenciar chaves. A seção Exemplos de código mostrará como criar um cliente e uma chave, bem como recuperar e excluir uma chave.
O aplicativo de console inteiro é fornecido em Código de exemplo.
Exemplos de código
Adicionar diretivas
Adicione as seguintes diretivas à parte superior de seu código:
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
Autenticar e criar um cliente
As solicitações do aplicativo para a maioria dos serviços do Azure precisam ser autorizadas. O uso da classe DefaultAzureCredential é a abordagem recomendada para implementar conexões sem senha com os serviços do Azure no código. DefaultAzureCredential
dá suporte a vários métodos de autenticação e determina quais métodos devem ser usados no runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente.
Neste guia de início rápido, DefaultAzureCredential
se autenticará no cofre de chaves usando as credenciais do usuário de desenvolvimento local conectado à CLI do Azure. Quando o aplicativo é implantado no Azure, o mesmo código DefaultAzureCredential
pode descobrir e usar automaticamente uma identidade gerenciada atribuída a um Serviço de Aplicativo, máquina virtual ou outros serviços. Para obter mais informações, confira Visão geral da Identidade Gerenciada.
Neste exemplo, o nome do cofre de chaves é expandido para o URI do cofre de chaves, no formato https://<your-key-vault-name>.vault.azure.net
. Para obter mais informações sobre como se autenticar no cofre de chaves, confira Guia do Desenvolvedor.
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Criar uma chave
Agora que seu aplicativo está autenticado, será possível criar uma chave no cofre de chaves usando o método keyClient.createKey
. Isso requer um nome para a chave e um tipo de chave. Neste exemplo, atribuímos o valor "myKey" à variável keyName
e usamos um KeyType
RSA.
keyClient.createKey(keyName, KeyType.RSA);
Confirme se a chave foi definida com o comando az keyvault key show:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Recuperar uma chave
Agora você pode recuperar a chave criada anteriormente com o método keyClient.getKey
.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
Agora é possível acessar detalhes da chave recuperada usando operações como retrievedKey.getProperties
, retrievedKey.getKeyOperations
etc.
Excluir uma chave
Por fim, vamos excluir a chave do cofre de chaves usando o método keyClient.beginDeleteKey
.
A exclusão de chave é uma operação de execução prolongada, na qual será possível examinar o progresso ou aguardar a conclusão da execução.
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
É possível verificar se a chave foi excluída usando o comando az keyvault key show:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Limpar os recursos
Quando o cofre de chaves e o grupo de recursos correspondente não forem mais necessários, use a CLI do Azure ou o Azure PowerShell para removê-los.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Código de exemplo
package com.keyvault.keys.quickstart;
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
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);
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
String keyName = "myKey";
System.out.print("Creating a key in " + keyVaultName + " called '" + keyName + " ... ");
keyClient.createKey(keyName, KeyType.RSA);
System.out.print("done.");
System.out.println("Retrieving key from " + keyVaultName + ".");
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
System.out.println("Your key's ID is '" + retrievedKey.getId() + "'.");
System.out.println("Deleting your key from " + keyVaultName + " ... ");
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
System.out.print("done.");
}
}
Próximas etapas
Neste guia de início rápido, você criou um cofre de chaves e uma chave, depois recuperou e excluiu a chave. Para saber mais sobre o Key Vault e como integrá-lo aos aplicativos, continue lendo estes artigos.