Compartir a través de


Biblioteca de administración de Azure Key Vault para Java

HSM administrado de Azure Key Vault es un servicio en la nube totalmente administrado, de alta disponibilidad, de un solo inquilino y compatible con estándares que le permite proteger las claves criptográficas de las aplicaciones en la nube mediante HSM validados por FIPS 140-2 nivel 3.

Los clientes de la biblioteca de administración de Azure Key Vault admiten tareas administrativas, como la copia de seguridad o restauración completa y el control de acceso basado en rol (RBAC) de nivel de clave.

Código fuente | Documentación de referencia de API | Documentación del producto | Ejemplos

Introducción

Inclusión del paquete

Inclusión del archivo BOM

Incluya al azure-sdk-bom proyecto para que dependa de la versión de disponibilidad general (GA) de la biblioteca. En el fragmento de código siguiente, reemplace el marcador de posición {bom_version_to_target} por el número de versión. Para más información sobre la lista de materiales, consulte el archivo Léame bom del SDK de AZURE.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

y, a continuación, incluya la dependencia directa en la sección de dependencias sin la etiqueta de versión, como se muestra a continuación.

<dependencies>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-security-keyvault-administration</artifactId>
    </dependency>
</dependencies>

Inclusión de dependencias directas

Si desea depender de una versión determinada de la biblioteca que no está presente en la lista de materiales, agregue la dependencia directa al proyecto como se indica a continuación.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-security-keyvault-administration</artifactId>
    <version>4.4.1</version>
</dependency>

Requisitos previos

Autenticar el cliente

Para interactuar con el servicio Azure Key Vault, deberá crear una instancia de la KeyVaultAccessControlClientclase o la KeyVaultBackupClient clase , así como una dirección URL del almacén (que puede ver como "Nombre DNS" en Azure Portal) y un objeto de credencial. Los ejemplos que se muestran en este documento usan un objeto de credencial denominado DefaultAzureCredential, que es adecuado para la mayoría de los escenarios, incluidos los entornos de desarrollo y producción locales. Además, se recomienda usar una identidad administrada para la autenticación en entornos de producción.

Puede encontrar más información sobre las distintas formas de autenticación y sus tipos de credenciales correspondientes en la documentación de Azure Identity.

Creación de un cliente de control de acceso

Una vez que realice la configuración de autenticación que mejor se adapte a su dirección URL administrada y reemplazada por la dirección URL del almacén de claves, puede crear :KeyVaultAccessControlClient

KeyVaultAccessControlClient keyVaultAccessControlClient = new KeyVaultAccessControlClientBuilder()
    .vaultUrl("<your-managed-hsm-url>")
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

NOTA: Para usar un cliente asincrónico, use KeyVaultAccessControlAsyncClient en lugar de KeyVaultAccessControlClient y llame a buildAsyncClient().

Creación de un cliente de copia de seguridad

Una vez que realice la configuración de autenticación que mejor se adapte a su dirección URL administrada y reemplazada por la dirección URL del almacén de claves, puede crear :KeyVaultBackupClient

KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
    .vaultUrl("<your-managed-hsm-url>")
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

NOTA: Para usar un cliente asincrónico, use KeyVaultBackupAsyncClient en lugar de KeyVaultBackupClient y llame a buildAsyncClient().

Creación de un cliente de configuración

Una vez que realice la configuración de autenticación que mejor se adapte a su dirección URL administrada y reemplazada por la dirección URL del almacén de claves, puede crear :KeyVaultSettingsClient

KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
    .vaultUrl("<your-managed-hsm-url>")
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

NOTA: Para usar un cliente asincrónico, use KeyVaultSettingsAsyncClient en lugar de KeyVaultSettingsClient y llame a buildAsyncClient().

Conceptos clave

cliente de Key Vault Access Control

El cliente Key Vault Access Control realiza las interacciones con el servicio Azure Key Vault para obtener, establecer, eliminar y enumerar asignaciones de roles, así como enumerar definiciones de roles. Los clientes asincrónicos (KeyVaultAccessControlAsyncClient) y sincrónicos (KeyVaultAccessControlClient) existen en el SDK, lo que permite seleccionar un cliente en función del caso de uso de una aplicación. Una vez que haya inicializado una asignación de roles, puede interactuar con los tipos de recursos principales en Key Vault.

Definición de roles

Una definición de roles es una colección de permisos. Define las operaciones que se pueden realizar, como lectura, escritura y eliminación. También puede definir las operaciones que se excluyen de las operaciones permitidas.

Las definiciones de roles se pueden enumerar y especificar como parte de una asignación de roles.

Asignación de roles

Una asignación de roles es la asociación de una definición de roles a una entidad de servicio. Se pueden crear, enumerar, capturar individualmente y eliminar.

cliente de copia de seguridad de Key Vault

El cliente de copia de seguridad de Key Vault proporciona operaciones sincrónicas y asincrónicas para realizar copias de seguridad de claves completas, restauraciones de claves completas y restauraciones selectivas de claves. Los clientes asincrónicos (KeyVaultBackupAsyncClient) y sincrónicos (KeyVaultBackupClient) existen en el SDK, lo que permite seleccionar un cliente en función del caso de uso de una aplicación.

NOTA: El almacén de respaldo para las copias de seguridad de claves es un contenedor de almacenamiento de blobs mediante la autenticación de firma de acceso compartido. Para más información sobre cómo crear un token de SAS mediante BlobServiceClient, consulte el archivo Léame del cliente de Blobs de Azure Storage. Como alternativa, es posible generar un token de SAS en Explorador de Storage.

Operación de copia de seguridad

Una operación de copia de seguridad representa una operación de ejecución prolongada para una copia de seguridad de clave completa.

Operación de restauración

Una operación de restauración representa una operación de larga duración para una restauración de clave completa y selectiva.

cliente de configuración de Key Vault

El cliente de Key Vault Access Control permite la manipulación de la configuración de una cuenta de Azure Key Vault, con operaciones como: obtener, actualizar y enumerar. Los clientes asincrónicos (KeyVaultSettingsAsyncClient) y sincrónicos (KeyVaultSettingsClient) existen en el SDK, lo que permite seleccionar un cliente en función del caso de uso de una aplicación.

Operaciones de control de acceso

Ejemplos

API de sincronización

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de servicio de Azure Key Vault Access Control más comunes, entre las que se incluyen:

Lista de definiciones de roles

Enumere las definiciones de roles en el almacén de claves mediante una llamada a listRoleDefinitions().

PagedIterable<KeyVaultRoleDefinition> roleDefinitions =
    keyVaultAccessControlClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL);

roleDefinitions.forEach(roleDefinition ->
    System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Creación o actualización de una definición de roles

Cree o actualice una definición de rol en el almacén de claves. En el ejemplo siguiente se muestra cómo crear una definición de roles con un nombre generado aleatoriamente.

KeyVaultRoleDefinition roleDefinition = keyVaultAccessControlClient.setRoleDefinition(KeyVaultRoleScope.GLOBAL);

System.out.printf("Created role definition with randomly generated name '%s' and role name '%s'.%n",
    roleDefinition.getName(), roleDefinition.getRoleName());
Recuperación de una definición de roles

Obtiene una definición de rol existente. Para ello, se requieren el ámbito y la propiedad "name" de una definición de rol existente.

String roleDefinitionName = "<role-definition-name>";
KeyVaultRoleDefinition roleDefinition =
    keyVaultAccessControlClient.getRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName);

System.out.printf("Retrieved role definition with name '%s' and role name '%s'.%n", roleDefinition.getName(),
    roleDefinition.getRoleName());
Eliminación de una definición de roles

Elimina una definición de rol. Para ello, se requiere la propiedad de propiedad scope y 'name' de una definición de rol existente.

String roleDefinitionName = "<role-definition-name>";

keyVaultAccessControlClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName);

System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName);
Lista de asignaciones de roles

Enumere las asignaciones de roles en el almacén de claves mediante una llamada a listRoleAssignments().

PagedIterable<KeyVaultRoleAssignment> roleAssignments =
    keyVaultAccessControlClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL);

roleAssignments.forEach(roleAssignment ->
    System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Crear una asignación de rol

Cree una asignación de roles en el almacén de claves. Para ello, se requiere un identificador de definición de rol y un identificador de objeto de entidad de servicio.

Se puede obtener un identificador de definición de rol de la propiedad 'id' de una de las definiciones de roles devueltas de listRoleDefinitions().

Consulte la sección Create/Get Credentials (Crear y obtener credenciales ) para obtener vínculos e instrucciones sobre cómo generar una nueva entidad de servicio y obtener su identificador de objeto. También puede obtener el identificador de objeto de la cuenta que ha iniciado sesión actualmente mediante la ejecución del siguiente comando de la CLI de Azure:

az ad signed-in-user show --query objectId
String roleDefinitionId = "<role-definition-id>";
String servicePrincipalId = "<service-principal-id>";
KeyVaultRoleAssignment roleAssignment =
    keyVaultAccessControlClient.createRoleAssignment(KeyVaultRoleScope.GLOBAL, roleDefinitionId,
        servicePrincipalId);

System.out.printf("Created role assignment with randomly generated name '%s' for principal with id '%s'.%n",
    roleAssignment.getName(), roleAssignment.getProperties().getPrincipalId());
Recuperación de una asignación de roles

Obtener una asignación de roles existente. Para ello, se requiere la propiedad "name" de una asignación de roles existente.

String roleAssignmentName = "<role-assignment-name>";
KeyVaultRoleAssignment roleAssignment =
    keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);

System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName());
Eliminación de una asignación de roles

Para quitar una asignación de roles de una entidad de servicio, se debe eliminar la asignación de roles. Para ello, se requiere la propiedad "name" de una asignación de roles existente.

String roleAssignmentName = "<role-assignment-name>";

keyVaultAccessControlClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);

System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName);

API asincrónica

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de servicio asincrónicas más comunes de Azure Key Vault Access Control, entre las que se incluyen:

Nota: Debe agregar System.in.read() o Thread.sleep() después de las llamadas de función en la clase o subproceso principal para permitir que las funciones o operaciones asincrónicas se ejecuten y finalicen antes de que se cierre la aplicación o subproceso principal.

Enumerar definiciones de roles de forma asincrónica

Enumere las definiciones de roles en el almacén de claves mediante una llamada a listRoleDefinitions().

keyVaultAccessControlAsyncClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL)
    .subscribe(roleDefinition ->
        System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Crear o actualizar una definición de rol de forma asincrónica

Cree o actualice una definición de rol en el almacén de claves. En el ejemplo siguiente se muestra cómo crear una definición de rol con un nombre generado aleatoriamente.

keyVaultAccessControlAsyncClient.setRoleDefinition(KeyVaultRoleScope.GLOBAL)
    .subscribe(roleDefinition ->
        System.out.printf("Created role definition with randomly generated name '%s' and role name '%s'.%n",
            roleDefinition.getName(), roleDefinition.getRoleName()));
Recuperar una definición de rol de forma asincrónica

Obtenga una definición de rol existente. Para ello, se requiere la propiedad 'name' de una definición de rol existente.

String roleDefinitionName = "<role-definition-name>";

keyVaultAccessControlAsyncClient.getRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName)
    .subscribe(roleDefinition ->
        System.out.printf("Retrieved role definition with name '%s' and role name '%s'.%n",
            roleDefinition.getName(), roleDefinition.getRoleName()));
Eliminar una definición de rol de forma asincrónica

Elimine una definición de rol. Para ello, se requiere la propiedad 'name' de una definición de rol existente.

String roleDefinitionName = "<role-definition-name>";

keyVaultAccessControlAsyncClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName)
    .subscribe(unused -> System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName));
Enumeración de asignaciones de roles de forma asincrónica

Enumere las asignaciones de roles en el almacén de claves mediante una llamada a listRoleAssignments().

keyVaultAccessControlAsyncClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL)
    .subscribe(roleAssignment ->
        System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Creación de una asignación de roles de forma asincrónica

Cree una asignación de roles en el almacén de claves. Para ello, se requiere un identificador de definición de rol y un identificador de objeto de entidad de servicio.

Se puede obtener un identificador de definición de rol de la propiedad 'id' de una de las definiciones de roles devueltas de listRoleDefinitions().

Consulte la sección Create/Get Credentials (Crear/obtener credenciales ) para obtener vínculos e instrucciones sobre cómo generar una nueva entidad de servicio y obtener su identificador de objeto. También puede obtener el identificador de objeto de la cuenta que ha iniciado sesión actualmente ejecutando el siguiente comando de la CLI de Azure:

az ad signed-in-user show --query objectId
String roleDefinitionId = "<role-definition-id>";
String servicePrincipalId = "<service-principal-id>";

keyVaultAccessControlAsyncClient.createRoleAssignment(KeyVaultRoleScope.GLOBAL, roleDefinitionId,
    servicePrincipalId).subscribe(roleAssignment ->
        System.out.printf("Created role assignment with randomly generated name '%s' for principal with id"
            + "'%s'.%n", roleAssignment.getName(), roleAssignment.getProperties().getPrincipalId()));
Recuperar una asignación de roles de forma asincrónica

Obtenga una asignación de roles existente. Para ello, se requiere la propiedad 'name' de una asignación de roles existente.

String roleAssignmentName = "<role-assignment-name>";

keyVaultAccessControlAsyncClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
    .subscribe(roleAssignment ->
        System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Eliminar una asignación de roles de forma asincrónica

Para quitar una asignación de roles de una entidad de servicio, se debe eliminar la asignación de roles. Para ello, se requiere la propiedad 'name' de una asignación de roles existente.

String roleAssignmentName = "<role-assignment-name>";

keyVaultAccessControlAsyncClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
    .subscribe(unused ->
        System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName));

Operaciones de copia de seguridad y restauración

Ejemplos

API de sincronización

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de cliente de Azure Key Vault Backup más comunes, entre las que se incluyen:

Copia de seguridad de una colección de claves

Realice una copia de seguridad de toda una colección de claves mediante beginBackup().

String blobStorageUrl = "https://myaccount.blob.core.windows.net/myContainer";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";

SyncPoller<KeyVaultBackupOperation, String> backupPoller =
    keyVaultBackupClient.beginBackup(blobStorageUrl, sasToken);

PollResponse<KeyVaultBackupOperation> pollResponse = backupPoller.poll();

System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus());

PollResponse<KeyVaultBackupOperation> finalPollResponse = backupPoller.waitForCompletion();

if (finalPollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) {
    String folderUrl = backupPoller.getFinalResult();

    System.out.printf("Backup completed. The storage location of this backup is: %s.%n", folderUrl);
} else {
    KeyVaultBackupOperation operation = backupPoller.poll().getValue();

    System.out.printf("Backup failed with error: %s.%n", operation.getError().getMessage());
}
Restauración de una colección de claves

Restaure una colección completa de claves a partir de una copia de seguridad mediante beginRestore().

String folderUrl = "https://myaccount.blob.core.windows.net/myContainer/mhsm-myaccount-2020090117323313";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";

SyncPoller<KeyVaultRestoreOperation, KeyVaultRestoreResult> backupPoller =
    keyVaultBackupClient.beginRestore(folderUrl, sasToken);

PollResponse<KeyVaultRestoreOperation> pollResponse = backupPoller.poll();

System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus());

PollResponse<KeyVaultRestoreOperation> finalPollResponse = backupPoller.waitForCompletion();

if (finalPollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) {
    System.out.printf("Backup restored successfully.%n");
} else {
    KeyVaultRestoreOperation operation = backupPoller.poll().getValue();

    System.out.printf("Restore failed with error: %s.%n", operation.getError().getMessage());
}
Restauración selectiva de una clave

Restaure una clave específica desde una copia de seguridad mediante beginSelectiveRestore().

String folderUrl = "https://myaccount.blob.core.windows.net/myContainer/mhsm-myaccount-2020090117323313";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";
String keyName = "myKey";

SyncPoller<KeyVaultSelectiveKeyRestoreOperation, KeyVaultSelectiveKeyRestoreResult> backupPoller =
    keyVaultBackupClient.beginSelectiveKeyRestore(folderUrl, sasToken, keyName);

PollResponse<KeyVaultSelectiveKeyRestoreOperation> pollResponse = backupPoller.poll();

System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus());

PollResponse<KeyVaultSelectiveKeyRestoreOperation> finalPollResponse = backupPoller.waitForCompletion();

if (finalPollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) {
    System.out.printf("Key restored successfully.%n");
} else {
    KeyVaultSelectiveKeyRestoreOperation operation = backupPoller.poll().getValue();

    System.out.printf("Key restore failed with error: %s.%n", operation.getError().getMessage());
}

API asincrónica

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de cliente asincrónicas más comunes de Azure Key Vault Backup, entre las que se incluyen:

Nota: Debe agregar System.in.read() o Thread.sleep() después de las llamadas de función en la clase o subproceso principal para permitir que las funciones o operaciones asincrónicas se ejecuten y finalicen antes de que se cierre la aplicación o subproceso principal.

Copia de seguridad de una colección de claves de forma asincrónica

Realice una copia de seguridad de toda una colección de claves mediante beginBackup().

String blobStorageUrl = "https://myaccount.blob.core.windows.net/myContainer";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";

keyVaultBackupAsyncClient.beginBackup(blobStorageUrl, sasToken)
    .setPollInterval(Duration.ofSeconds(1)) // You can set a custom polling interval.
    .doOnError(e -> System.out.printf("Backup failed with error: %s.%n", e.getMessage()))
    .doOnNext(pollResponse ->
        System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus()))
    .filter(pollResponse -> pollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED)
    .flatMap(AsyncPollResponse::getFinalResult)
    .subscribe(folderUrl ->
        System.out.printf("Backup completed. The storage location of this backup is: %s.%n", folderUrl));
Restauración de una colección de claves de forma asincrónica

Restaure una colección completa de claves a partir de una copia de seguridad mediante beginRestore().

String folderUrl = "https://myaccount.blob.core.windows.net/myContainer/mhsm-myaccount-2020090117323313";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";

keyVaultBackupAsyncClient.beginRestore(folderUrl, sasToken)
    .setPollInterval(Duration.ofSeconds(1)) // You can set a custom polling interval.
    .doOnError(e -> System.out.printf("Restore failed with error: %s.%n", e.getMessage()))
    .doOnNext(pollResponse ->
        System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus()))
    .filter(pollResponse -> pollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED)
    .flatMap(AsyncPollResponse::getFinalResult)
    .subscribe(unused -> System.out.printf("Backup restored successfully.%n"));
Restauración selectiva de una clave de forma asincrónica

Restaure una colección completa de claves a partir de una copia de seguridad mediante beginSelectiveRestore().

String folderUrl = "https://myaccount.blob.core.windows.net/myContainer/mhsm-myaccount-2020090117323313";
String sasToken = "sv=2020-02-10&ss=b&srt=o&sp=rwdlactfx&se=2021-06-17T07:13:07Z&st=2021-06-16T23:13:07Z&spr=https&sig=n5V6fnlkViEF9b7ij%2FttTHNwO2BdFIHKHppRxGAyJdc%3D";
String keyName = "myKey";

keyVaultBackupAsyncClient.beginSelectiveKeyRestore(folderUrl, sasToken, keyName)
    .setPollInterval(Duration.ofSeconds(1)) // You can set a custom polling interval.
    .doOnError(e -> System.out.printf("Key restoration failed with error: %s.%n", e.getMessage()))
    .doOnNext(pollResponse ->
        System.out.printf("The current status of the operation is: %s.%n", pollResponse.getStatus()))
    .filter(pollResponse -> pollResponse.getStatus() == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED)
    .flatMap(AsyncPollResponse::getFinalResult)
    .subscribe(unused -> System.out.printf("Key restored successfully.%n"));

Operaciones de configuración

Ejemplos

API de sincronización

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de cliente de Azure Key Vault Settings más comunes, entre las que se incluyen:

Obtener toda la configuración

Enumere toda la configuración de una cuenta de Key Vault.

KeyVaultGetSettingsResult getSettingsResult = keyVaultSettingsClient.getSettings();

for (KeyVaultSetting setting : getSettingsResult.getSettings()) {
    System.out.printf("Retrieved setting '%s' with value '%s'.%n", setting.getName(), setting.asBoolean());
}
Recuperar una configuración específica

Recuperar una configuración específica.

String settingName = "<setting-to-get>";
KeyVaultSetting setting = keyVaultSettingsClient.getSetting(settingName);

System.out.printf("Retrieved setting '%s' with value '%s'.%n", setting.getName(),
    setting.asBoolean());
Actualizar una configuración específica

Actualice una configuración específica.

String settingName = "<setting-to-update>";
KeyVaultSetting settingToUpdate = new KeyVaultSetting(settingName, true);
KeyVaultSetting updatedSetting = keyVaultSettingsClient.updateSetting(settingToUpdate);

System.out.printf("Updated setting '%s' to '%s'.%n", updatedSetting.getName(), updatedSetting.asBoolean());

API asincrónica

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas de cliente asincrónicas de Azure Key Vault Settings más comunes, entre las que se incluyen:

Obtener toda la configuración de forma asincrónica

Enumere toda la configuración de una cuenta de Key Vault.

keyVaultSettingsAsyncClient.getSettings()
    .subscribe(settingsResult ->
        settingsResult.getSettings().forEach(setting ->
            System.out.printf("Retrieved setting with name '%s' and value '%s'.%n", setting.getName(),
                setting.asBoolean())));
Recuperar una configuración específica de forma asincrónica

Recuperar una configuración específica.

String settingName = "<setting-to-get>";

keyVaultSettingsAsyncClient.getSetting(settingName)
    .subscribe(setting ->
        System.out.printf("Retrieved setting with name '%s' and value '%s'.%n", setting.getName(),
            setting.asBoolean()));
Actualizar una configuración específica de forma asincrónica

Actualice una configuración específica.

String settingName = "<setting-to-update>";
KeyVaultSetting settingToUpdate = new KeyVaultSetting(settingName, true);

keyVaultSettingsAsyncClient.updateSetting(settingToUpdate)
    .subscribe(updatedSetting ->
        System.out.printf("Updated setting with name '%s' and value '%s'.%n", updatedSetting.getName(),
            updatedSetting.asBoolean()));

Solución de problemas

Consulte nuestra guía de solución de problemas para obtener más información sobre cómo diagnosticar varios escenarios de error.

General

Los clientes de Azure Key Vault Access Control generan excepciones. Por ejemplo, si intenta recuperar una asignación de roles después de eliminarse, se devuelve un 404 error, lo que indica que no se encontró el recurso. En el siguiente fragmento, el error se controla correctamente al detectar la excepción y mostrar información adicional sobre el error.

try {
    keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, "<role-assginment-name>");
} catch (HttpResponseException e) {
    System.out.println(e.getMessage());
}

Cliente HTTP predeterminado

Todas las bibliotecas cliente usan de forma predeterminada el cliente HTTP de Netty. Al agregar la dependencia anterior, se configurará automáticamente la biblioteca cliente para usar el cliente HTTP de Netty. La configuración o el cambio del cliente HTTP se detalla en la wiki de clientes HTTP.

Biblioteca SSL predeterminada

De forma predeterminada, todas las bibliotecas cliente usan la biblioteca Boring SSL nativa de Tomcat para habilitar el rendimiento de nivel nativo para las operaciones SSL. La biblioteca SSL boring es un ARCHIVO JAR de Uber que contiene bibliotecas nativas para Linux / macOS / Windows, y proporciona un mejor rendimiento en comparación con la implementación SSL predeterminada dentro del JDK. Para obtener más información, incluido cómo reducir el tamaño de las dependencias, consulte la sección optimización del rendimiento de la wiki.

Pasos siguientes

Hay varios ejemplos de SDK de Java Key Vault disponibles en el repositorio de GitHub del SDK. Estos ejemplos proporcionan código de ejemplo para escenarios adicionales que se suelen encontrar al trabajar con Azure Key Vault.

Documentación adicional

Para obtener documentación más amplia sobre Azure Key Vault, consulte la documentación de referencia de API.

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

El proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones