Bibliothèque d’administration Azure Key Vault pour Java
Azure Key Vault HSM managé est un service cloud entièrement managé, hautement disponible, monolocataire et conforme aux normes qui vous permet de protéger les clés de chiffrement pour vos applications cloud à l’aide de HSM validés FIPS 140-2 De niveau 3.
Les clients de la bibliothèque Azure Key Vault Administration prennent en charge les tâches d’administration telles que la sauvegarde/restauration complète et le contrôle d’accès en fonction du rôle (RBAC) au niveau des clés.
Code source | Documentation de référence de l’API | Documentation du produit | Exemples
Prise en main
Inclure le package
Inclure le fichier de nomenclature
Incluez le azure-sdk-bom
dans votre projet pour qu’il soit dépendant de la version en disponibilité générale de la bibliothèque. Dans l’extrait de code suivant, remplacez l’espace réservé {bom_version_to_target} par le numéro de version. Pour en savoir plus sur la nomenclature, consultez le README BOM du KIT DE DÉVELOPPEMENT LOGICIEL 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>
puis incluez la dépendance directe dans la section dépendances sans la balise de version, comme indiqué ci-dessous.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-administration</artifactId>
</dependency>
</dependencies>
Inclure une dépendance directe
Si vous souhaitez dépendre d’une version particulière de la bibliothèque qui n’est pas présente dans la nomenclature, ajoutez la dépendance directe à votre projet comme suit.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-administration</artifactId>
<version>4.4.1</version>
</dependency>
Prérequis
- Un Kit de développement Java (JDK), version 8 ou ultérieure.
- Un abonnement Azure.
- Un HSM managé Azure Key Vault existant. Si vous devez créer un HSM managé, vous pouvez le faire à l’aide d’Azure CLI en suivant les étapes décrites dans ce document.
Authentifier le client
Pour interagir avec le service Azure Key Vault, vous devez créer un instance de la classe ou de la KeyVaultAccessControlClient
KeyVaultBackupClient
classe, ainsi qu’une URL de coffre (que vous pouvez voir sous le nom DNS dans le portail Azure) et un objet d’informations d’identification. Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential
, qui convient à la plupart des scénarios, notamment aux environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser une identité managée pour l’authentification dans les environnements de production.
Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity.
Créer un client de contrôle d’accès
Une fois que vous avez effectué la configuration d’authentification qui vous convient le mieux et que vous avez remplacé your-managed-hsm-url par l’URL de votre coffre de clés, vous pouvez créer le KeyVaultAccessControlClient
:
KeyVaultAccessControlClient keyVaultAccessControlClient = new KeyVaultAccessControlClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
REMARQUE : Pour utiliser un client asynchrone, utilisez
KeyVaultAccessControlAsyncClient
au lieu deKeyVaultAccessControlClient
et appelezbuildAsyncClient()
.
Créer un client de sauvegarde
Une fois que vous avez effectué la configuration d’authentification qui vous convient le mieux et que vous avez remplacé your-managed-hsm-url par l’URL de votre coffre de clés, vous pouvez créer le KeyVaultBackupClient
:
KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
REMARQUE : Pour utiliser un client asynchrone, utilisez
KeyVaultBackupAsyncClient
au lieu deKeyVaultBackupClient
et appelezbuildAsyncClient()
.
Créer un client de paramètres
Une fois que vous avez effectué la configuration d’authentification qui vous convient le mieux et que vous avez remplacé your-managed-hsm-url par l’URL de votre coffre de clés, vous pouvez créer le KeyVaultSettingsClient
:
KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
REMARQUE : Pour utiliser un client asynchrone, utilisez
KeyVaultSettingsAsyncClient
au lieu deKeyVaultSettingsClient
et appelezbuildAsyncClient()
.
Concepts clés
client Key Vault Access Control
Le client Key Vault Access Control effectue les interactions avec le service Azure Key Vault pour obtenir, définir, supprimer et répertorier les attributions de rôles, ainsi que pour répertorier les définitions de rôle. Les clients asynchrones (KeyVaultAccessControlAsyncClient
) et synchrones (KeyVaultAccessControlClient
) existent dans le Kit de développement logiciel (SDK) ce qui permet de sélectionner un client en fonction du cas d’usage d’une application. Une fois que vous avez initialisé une attribution de rôle, vous pouvez interagir avec les types de ressources principaux dans Key Vault.
Définition de rôle
Une définition de rôle est une collection d’autorisations. Il définit les opérations qui peuvent être effectuées, telles que la lecture, l’écriture et la suppression. Il peut également définir les opérations qui sont exclues des opérations autorisées.
Les définitions de rôle peuvent être répertoriées et spécifiées dans le cadre d’une attribution de rôle.
Attribution de rôle
Une attribution de rôle est l’association d’une définition de rôle à un principal de service. Ils peuvent être créés, listés, extraits individuellement et supprimés.
client de sauvegarde Key Vault
Le client de sauvegarde Key Vault fournit des opérations synchrones et asynchrones pour effectuer des sauvegardes de clés complètes, des restaurations de clés complètes et des restaurations de clés sélectives. Les clients asynchrones (KeyVaultBackupAsyncClient
) et synchrones (KeyVaultBackupClient
) existent dans le Kit de développement logiciel (SDK) ce qui permet de sélectionner un client en fonction du cas d’usage d’une application.
REMARQUE : Le magasin de stockage pour les sauvegardes de clés est un conteneur de stockage d’objets blob utilisant l’authentification par signature d’accès partagé. Pour plus d’informations sur la création d’un jeton SAS à l’aide de
BlobServiceClient
, consultez le fichier LISEZ-moi du client Blobs de stockage Azure. Vous pouvez également générer un jeton SAP dans Explorateur Stockage.
Opération de sauvegarde
Une opération de sauvegarde représente une opération de longue durée pour une sauvegarde de clé complète.
Opération de restauration
Une opération de restauration représente une opération de longue durée pour une restauration de clé complète et sélective.
client paramètres Key Vault
Le client Key Vault Access Control permet la manipulation des paramètres d’un compte Azure Key Vault, avec des opérations telles que : obtention, mise à jour et référencement. Les clients asynchrones (KeyVaultSettingsAsyncClient
) et synchrones (KeyVaultSettingsClient
) existent dans le Kit de développement logiciel (SDK) ce qui permet de sélectionner un client en fonction du cas d’usage d’une application.
Opérations de contrôle d’accès
Exemples
API synchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches de service Azure Key Vault Access Control les plus courantes, notamment :
- Lister les définitions de rôles
- Créer ou mettre à jour une définition de rôle
- Récupérer une définition de rôle
- Répertorier les attributions de rôles
- Création d'une affectation de rôle
- Récupérer une attribution de rôle
- Supprimer une attribution de rôle
Lister les définitions de rôles
Répertoriez les définitions de rôle dans le coffre de clés en appelant listRoleDefinitions()
.
PagedIterable<KeyVaultRoleDefinition> roleDefinitions =
keyVaultAccessControlClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL);
roleDefinitions.forEach(roleDefinition ->
System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Créer ou mettre à jour une définition de rôle
Créer ou mettre à jour une définition de rôle dans le coffre de clés. L’exemple suivant montre comment créer une définition de rôle avec un nom généré de manière aléatoire.
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());
Récupérer une définition de rôle
Obtenir une définition de rôle existante. Pour ce faire, l’étendue et la propriété « name » d’une définition de rôle existante sont requises.
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());
Supprimer une définition de rôle
Supprimer une définition de rôle. Pour ce faire, l’étendue et la propriété « name » d’une définition de rôle existante sont requises.
String roleDefinitionName = "<role-definition-name>";
keyVaultAccessControlClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName);
System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName);
Répertorier les attributions de rôles
Répertoriez les attributions de rôles dans le coffre de clés en appelant listRoleAssignments()
.
PagedIterable<KeyVaultRoleAssignment> roleAssignments =
keyVaultAccessControlClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL);
roleAssignments.forEach(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Création d'une affectation de rôle
Créez une attribution de rôle dans le coffre de clés. Pour ce faire, un ID de définition de rôle et un ID d’objet de principal de service sont requis.
Un ID de définition de rôle peut être obtenu à partir de la propriété « id » de l’une des définitions de rôle retournées par listRoleDefinitions()
.
Consultez la section Créer/obtenir des informations d’identification pour obtenir des liens et des instructions sur la façon de générer un nouveau principal de service et d’obtenir son ID d’objet. Vous pouvez également obtenir l’ID d’objet de votre compte actuellement connecté en exécutant la commande Azure CLI suivante :
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());
Récupérer une attribution de rôle
Obtenir une attribution de rôle existante. Pour ce faire, la propriété « name » d’une attribution de rôle existante est requise.
String roleAssignmentName = "<role-assignment-name>";
KeyVaultRoleAssignment roleAssignment =
keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName());
Supprimer une attribution de rôle
Pour supprimer une attribution de rôle d’un principal de service, l’attribution de rôle doit être supprimée. Pour ce faire, la propriété « name » d’une attribution de rôle existante est requise.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);
System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName);
API asynchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches de service asynchrones Azure Key Vault Access Control les plus courantes, notamment :
- Répertorier les définitions de rôle de manière asynchrone
- Créer ou mettre à jour une définition de rôle de manière asynchrone
- Récupérer une définition de rôle de manière asynchrone
- Supprimer une définition de rôle de manière asynchrone
- Répertorier les attributions de rôles de manière asynchrone
- Créer une attribution de rôle de manière asynchrone
- Récupérer une attribution de rôle de manière asynchrone
- Supprimer une attribution de rôle de manière asynchrone
Remarque : Vous devez ajouter
System.in.read()
ouThread.sleep()
après les appels de fonction dans le main classe/thread pour permettre aux fonctions/opérations asynchrones de s’exécuter et de se terminer avant que le main’application/thread se termine.
Répertorier les définitions de rôle de manière asynchrone
Répertoriez les définitions de rôle dans le coffre de clés en appelant listRoleDefinitions()
.
keyVaultAccessControlAsyncClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL)
.subscribe(roleDefinition ->
System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Créer ou mettre à jour une définition de rôle de manière asynchrone
Créez ou mettez à jour une définition de rôle dans le coffre de clés. L’exemple suivant montre comment créer une définition de rôle avec un nom généré de manière aléatoire.
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()));
Récupérer une définition de rôle de manière asynchrone
Obtenir une définition de rôle existante. Pour ce faire, la propriété « name » d’une définition de rôle existante est requise.
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()));
Supprimer une définition de rôle de manière asynchrone
Supprimer une définition de rôle. Pour ce faire, la propriété « name » d’une définition de rôle existante est requise.
String roleDefinitionName = "<role-definition-name>";
keyVaultAccessControlAsyncClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName)
.subscribe(unused -> System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName));
Répertorier les attributions de rôles de manière asynchrone
Répertoriez les attributions de rôles dans le coffre de clés en appelant listRoleAssignments()
.
keyVaultAccessControlAsyncClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL)
.subscribe(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Créer une attribution de rôle de manière asynchrone
Créez une attribution de rôle dans le coffre de clés. Pour ce faire, un ID de définition de rôle et un ID d’objet principal de service sont requis.
Un ID de définition de rôle peut être obtenu à partir de la propriété « id » de l’une des définitions de rôle retournées à partir de listRoleDefinitions()
.
Consultez la section Créer/obtenir des informations d’identification pour obtenir des liens et des instructions sur la façon de générer un nouveau principal de service et d’obtenir son ID d’objet. Vous pouvez également obtenir l’ID d’objet de votre compte actuellement connecté en exécutant la commande Azure CLI suivante :
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()));
Récupérer une attribution de rôle de manière asynchrone
Obtenir une attribution de rôle existante. Pour ce faire, la propriété « name » d’une attribution de rôle existante est requise.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlAsyncClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
.subscribe(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Supprimer une attribution de rôle de manière asynchrone
Pour supprimer une attribution de rôle d’un principal de service, l’attribution de rôle doit être supprimée. Pour ce faire, la propriété « name » d’une attribution de rôle existante est requise.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlAsyncClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
.subscribe(unused ->
System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName));
Opérations de sauvegarde et de restauration
Exemples
API synchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches clientes Azure Key Vault Backup les plus courantes, notamment :
Sauvegarder une collection de clés
Sauvegardez une collection entière de clés à l’aide beginBackup()
de .
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());
}
Restaurer une collection de clés
Restaurez une collection entière de clés à partir d’une sauvegarde à l’aide beginRestore()
de .
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());
}
Restaurer de manière sélective une clé
Restaurez une clé spécifique à partir d’une sauvegarde à l’aide de 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 asynchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches clientes asynchrones Azure Key Vault Backup les plus courantes, notamment :
- Sauvegarder un Key Vault de manière asynchrone
- Restaurer un Key Vault de manière asynchrone
- Restaurer une clé de manière asynchrone
Remarque : Vous devez ajouter
System.in.read()
ouThread.sleep()
après les appels de fonction dans le main classe/thread pour permettre aux fonctions/opérations asynchrones de s’exécuter et de se terminer avant que le main’application/thread se termine.
Sauvegarder une collection de clés de manière asynchrone
Sauvegardez une collection entière de clés à l’aide beginBackup()
de .
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));
Restaurer une collection de clés de manière asynchrone
Restaurez une collection entière de clés à partir d’une sauvegarde à l’aide beginRestore()
de .
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"));
Restaurer de manière sélective une clé de manière asynchrone
Restaurez une collection entière de clés à partir d’une sauvegarde à l’aide beginSelectiveRestore()
de .
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"));
Opérations de paramètres
Exemples
API synchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches clientes Azure Key Vault Settings les plus courantes, notamment :
Obtenir tous les paramètres
Répertoriez tous les paramètres d’un compte 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());
}
Récupérer un paramètre spécifique
Récupérer un paramètre spécifique.
String settingName = "<setting-to-get>";
KeyVaultSetting setting = keyVaultSettingsClient.getSetting(settingName);
System.out.printf("Retrieved setting '%s' with value '%s'.%n", setting.getName(),
setting.asBoolean());
Mettre à jour un paramètre spécifique
Mettez à jour un paramètre spécifique.
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 asynchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches clientes asynchrones azure Key Vault paramètres les plus courantes, notamment :
Obtenir tous les paramètres de manière asynchrone
Répertoriez tous les paramètres d’un compte 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())));
Récupérer un paramètre spécifique de manière asynchrone
Récupérer un paramètre spécifique.
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()));
Mettre à jour un paramètre spécifique de manière asynchrone
Mettez à jour un paramètre spécifique.
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()));
Dépannage
Consultez notre guide de résolution des problèmes pour plus d’informations sur la façon de diagnostiquer différents scénarios d’échec.
Général
Les clients Azure Key Vault Access Control lèvent des exceptions. Par exemple, si vous essayez de récupérer une attribution de rôle après sa suppression, une 404
erreur est retournée, indiquant que la ressource est introuvable. Dans l’extrait suivant, l’erreur est prise en charge correctement via l’interception de l’exception et l’affichage d’informations supplémentaires sur l’erreur en question.
try {
keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, "<role-assginment-name>");
} catch (HttpResponseException e) {
System.out.println(e.getMessage());
}
Client HTTP par défaut
Toutes les bibliothèques de client utilisent par défaut le client HTTP Netty. L’ajout de la dépendance ci-dessus configure automatiquement la bibliothèque de client pour utiliser le client HTTP Netty. La configuration ou la modification du client HTTP sont détaillées dans le wiki pour clients HTTP.
Bibliothèque SSL par défaut
Toutes les bibliothèques de client utilisent par défaut la bibliothèque BoringSSL Tomcat native pour permettre des performances de niveau natif pour les opérations SSL. La bibliothèque SSL Boring est un fichier JAR Uber contenant des bibliothèques natives pour Linux / macOS / Windows, et offre de meilleures performances par rapport à l’implémentation SSL par défaut dans le JDK. Pour plus d’informations, notamment sur la réduction de la taille des dépendances, consultez la section du wiki consacrée à l’optimisation des performances.
Étapes suivantes
Plusieurs exemples Key Vault sdk Java sont disponibles dans le référentiel GitHub du SDK. Ces exemples fournissent un exemple de code pour d’autres scénarios couramment rencontrés lors de l’utilisation d’Azure Key Vault.
Documentation complémentaire
Pour obtenir une documentation plus complète sur Azure Key Vault, consultez la documentation de référence sur l’API.
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.