Inicio rápido: Biblioteca cliente de claves de Azure Key Vault para Java
Comience a trabajar con la biblioteca cliente de claves de Azure Key Vault para Java. Siga estos pasos para instalar el paquete y probar el código de ejemplo para realizar tareas básicas.
Recursos adicionales:
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Kit de desarrollo de Java (JDK), versión 8 o posterior
- Apache Maven
- CLI de Azure
En esta guía de inicio rápido se supone que está ejecutando la CLI de Azure y Apache Maven en una ventana de terminal de Linux.
Instalación
En este inicio rápido se usa la biblioteca de identidades de Azure con la CLI de Azure para autenticar al usuario en Azure Services. Los desarrolladores también pueden usar Visual Studio o Visual Studio Code para autenticar sus llamadas. Para más información, consulte Autenticación del cliente mediante la biblioteca cliente Azure Identity.
Inicio de sesión en Azure
Ejecute el comando
login
.az login
Si la CLI puede abrir el explorador predeterminado, lo hará y cargará una página de inicio de sesión de Azure.
En caso contrario, abra una página del explorador en https://aka.ms/devicelogin y escriba el código de autorización que se muestra en el terminal.
Inicie sesión con las credenciales de su cuenta en el explorador.
Creación de una aplicación de consola de Java
En una ventana de consola, utilice el comando mvn
para crear una nueva aplicación de consola de Java con el nombre akv-keys-java
.
mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
-DartifactId=akv-keys-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
La salida a partir de la generación del proyecto será similar a la siguiente:
[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] ------------------------------------------------------------------------
Cambie el directorio a la carpeta akv-keys-java/
recién creada.
cd akv-keys-java
Instalar el paquete
Abra el archivo pom.xml en el editor de texto. Agregue los siguientes elementos de dependencia al grupo de dependencias.
<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>
Creación de un grupo de recursos y de un almacén de claves
En este inicio rápido se usa un almacén de claves de Azure creado previamente. Puede crear un almacén de claves siguiendo los pasos descritos en el inicio rápido de CLI de Azure, inicio rápido de Azure PowerShell o inicio rápido de Azure Portal.
Como alternativa, puede ejecutar estos comandos de la CLI de Azure o Azure PowerShell.
Importante
Cada almacén de claves debe tener un nombre único. Reemplace <nombre-almacén de claves-único> por el nombre del almacén de claves en los siguientes ejemplos.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Concesión de acceso al almacén de claves
Para obtener permisos para el almacén de claves mediante Control de acceso basado en roles (RBAC), asigne un rol a su "Nombre principal de usuario" (UPN) mediante el comando de la CLI de 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>"
Reemplace <upn>, <subscription-id>, <resource-group-name> y <your-unique-keyvault-name> por los valores reales. El UPN normalmente tendrá el formato de una dirección de correo electrónico (por ejemplo, username@domain.com).
Establecimiento de variables de entorno
Esta aplicación usa el nombre del almacén de claves como variable de entorno llamada KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS o Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Modelo de objetos
La biblioteca cliente de claves de Azure Key Vault para Java permite administrar las claves. En la sección Ejemplos de código se muestra cómo crear un cliente y cómo crear, recuperar y eliminar una clave.
Toda la aplicación de consola se proporciona en el código de ejemplo.
Ejemplos de código
Adición de directivas
Agregue las siguientes directivas al principio del 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;
Autenticación y creación de un cliente
Deben autorizarse las solicitudes de aplicación a la mayor parte de servicios de Azure. El uso de la clase DefaultAzureCredential es el enfoque recomendado para implementar conexiones sin contraseña a los servicios de Azure en el código. DefaultAzureCredential
admite varios métodos de autenticación y determina el que se debe usar en tiempo de ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos (local frente a producción) sin implementar código específico del entorno.
En este inicio rápido, DefaultAzureCredential
se autentica en el almacén de claves mediante las credenciales del usuario de desarrollo local que inició sesión en la CLI de Azure. Cuando la aplicación se implementa en Azure, el mismo código DefaultAzureCredential
puede detectar y usar automáticamente una identidad administrada asignada a una instancia de App Service, máquina virtual u otros servicios. Para más información, consulte Introducción a la identidad administrada.
En este ejemplo, el nombre del almacén de claves se expande al identificador URI del almacén de claves, con el formato https://<your-key-vault-name>.vault.azure.net
. Para más información sobre la autenticación en el almacén de claves, consulte la Guía del desarrollador.
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();
Crear una clave
Ahora que la aplicación se ha autenticado, puede crear una clave en el almacén de claves con el método keyClient.createKey
. Esto requiere un nombre para la clave y un tipo de clave. En este ejemplo, se ha asignado el valor "myKey" a la variable keyName
y se usa RSA para KeyType
.
keyClient.createKey(keyName, KeyType.RSA);
Puede comprobar que la clave se ha establecido con el comando az keyvault key show:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Recuperación de una clave
Ahora puede recuperar la clave creada anteriormente con el método keyClient.getKey
.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
Ahora puede acceder a los detalles de la clave recuperada con operaciones como retrievedKey.getProperties
, retrievedKey.getKeyOperations
, etc.
Eliminación de una clave
Por último, vamos a eliminar la clave del almacén de claves con el método keyClient.beginDeleteKey
.
La eliminación de claves es una operación de larga duración cuyo progreso puede sondear, o bien puede esperar a que se complete.
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
Puede comprobar que la clave se ha eliminado con el comando az keyvault key show:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Limpieza de recursos
Cuando ya no lo necesite, puede usar la CLI de Azure o Azure PowerShell para quitar el almacén de claves y el grupo de recursos correspondiente.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Código de ejemplo
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.");
}
}
Pasos siguientes
En este inicio rápido ha creado un almacén de claves, ha creado una clave, la ha recuperado y, a continuación, la ha eliminado. Para más información sobre Key Vault y cómo integrarlo con las aplicaciones, vaya a estos artículos.
- Lea una introducción a Azure Key Vault.
- Consulte Introducción a la seguridad de Azure Key Vault.
- Consulte la guía del desarrollador de Azure Key Vault.
- Procedimientos para proteger el acceso a un almacén de claves