Biblioteca de Administração de Key Vault do Azure para Java
O HSM Gerenciado do Azure Key Vault é um serviço de nuvem totalmente gerenciado, altamente disponível, de locatário único e compatível com padrões, que permite proteger chaves criptográficas para seus aplicativos de nuvem usando HSMs validados fips 140-2 nível 3.
Os clientes da biblioteca de Administração de Key Vault do Azure dão suporte a tarefas administrativas, como backup/restauração completo e RBAC (controle de acesso baseado em função) no nível da chave.
Código-fonte | Documentação de referência da API | Documentação do produto | Exemplos
Introdução
Incluir o pacote
Incluir o arquivo da BOM
Inclua o azure-sdk-bom
em seu projeto para assumir a dependência da versão ga (disponibilidade geral) da biblioteca. No trecho a seguir, substitua o espaço reservado {bom_version_to_target} pelo número de versão. Para saber mais sobre a BOM, consulte o BOM README do SDK do 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>
e inclua a dependência direta na seção dependências sem a marca de versão, conforme mostrado abaixo.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-administration</artifactId>
</dependency>
</dependencies>
Incluir dependência direta
Se você quiser assumir a dependência de uma versão específica da biblioteca que não está presente na BOM, adicione a dependência direta ao seu projeto da seguinte maneira.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-administration</artifactId>
<version>4.4.1</version>
</dependency>
Pré-requisitos
- Um Java Development Kit (JDK) versão 8 ou posterior.
- Uma assinatura do Azure.
- Um HSM gerenciado do Azure Key Vault existente. Se você precisar criar um HSM Gerenciado, poderá fazer isso usando a CLI do Azure seguindo as etapas neste documento.
Autenticar o cliente
Para interagir com o serviço de Key Vault do Azure, você precisará criar uma instância da KeyVaultAccessControlClient
classe ou da KeyVaultBackupClient
classe , bem como uma URL do cofre (que você pode ver como "Nome DNS" no Portal do Azure) e um objeto de credencial. Os exemplos mostrados neste documento usam um objeto de credencial chamado DefaultAzureCredential
, que é apropriado para a maioria dos cenários, incluindo ambientes locais de desenvolvimento e produção. Além disso, é recomendável usar uma identidade gerenciada para autenticação em ambientes de produção.
Você pode encontrar mais informações sobre diferentes maneiras de autenticação e seus tipos de credenciais correspondentes na documentação da Identidade do Azure.
Criar um cliente de controle de acesso
Depois de executar a configuração de autenticação que melhor se adapta a você e substituiu your-managed-hsm-url pela URL do cofre de chaves, você pode criar o KeyVaultAccessControlClient
:
KeyVaultAccessControlClient keyVaultAccessControlClient = new KeyVaultAccessControlClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
OBSERVAÇÃO: para usar um cliente assíncrono, use
KeyVaultAccessControlAsyncClient
em vez deKeyVaultAccessControlClient
e chamebuildAsyncClient()
.
Criar um cliente de backup
Depois de executar a configuração de autenticação que melhor se adapta a você e substituiu your-managed-hsm-url pela URL do cofre de chaves, você pode criar o KeyVaultBackupClient
:
KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
OBSERVAÇÃO: para usar um cliente assíncrono, use
KeyVaultBackupAsyncClient
em vez deKeyVaultBackupClient
e chamebuildAsyncClient()
.
Criar um cliente de configurações
Depois de executar a configuração de autenticação que melhor se adapta a você e substituiu your-managed-hsm-url pela URL do cofre de chaves, você pode criar o KeyVaultSettingsClient
:
KeyVaultBackupClient keyVaultBackupClient = new KeyVaultBackupClientBuilder()
.vaultUrl("<your-managed-hsm-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
OBSERVAÇÃO: para usar um cliente assíncrono, use
KeyVaultSettingsAsyncClient
em vez deKeyVaultSettingsClient
e chamebuildAsyncClient()
.
Principais conceitos
cliente Key Vault Controle de Acesso
O cliente Key Vault Controle de Acesso executa as interações com o serviço de Key Vault do Azure para obter, definir, excluir e listar atribuições de função, bem como listar definições de função. Existem clientes assíncronos (KeyVaultAccessControlAsyncClient
) e síncronos (KeyVaultAccessControlClient
) no SDK, permitindo a seleção de um cliente com base no caso de uso de um aplicativo. Depois de inicializar uma atribuição de função, você poderá interagir com os tipos de recursos primários no Key Vault.
Definição de função
Uma definição de função é uma coleção de permissões. Ele define as operações que podem ser executadas, como leitura, gravação e exclusão. Ele também pode definir as operações excluídas das operações permitidas.
As definições de função podem ser listadas e especificadas como parte de uma atribuição de função.
Atribuição de função
Uma atribuição de função é a associação de uma definição de função a uma entidade de serviço. Eles podem ser criados, listados, buscados individualmente e excluídos.
cliente de Backup do Key Vault
O cliente de backup do Key Vault fornece operações síncronas e assíncronas para executar backups de chave completa, restaurações de chave completa e restaurações seletivas de chave. Existem clientes assíncronos (KeyVaultBackupAsyncClient
) e síncronos (KeyVaultBackupClient
) no SDK, permitindo a seleção de um cliente com base no caso de uso de um aplicativo.
OBSERVAÇÃO: o repositório de backup para backups de chaves é um contêiner de armazenamento de blobs que usa a autenticação de Assinatura de Acesso Compartilhado. Para obter mais detalhes sobre como criar um token SAS usando o
BlobServiceClient
, consulte o LEIAME do cliente de Blobs de Armazenamento do Azure. Como alternativa, é possível gerar um token SAS no Gerenciador de Armazenamento.
Operação de backup
Uma operação de backup representa uma operação de execução longa para um backup de chave completa.
Operação de restauração
Uma operação de restauração representa uma operação de execução longa para uma restauração de chave completa e de chave seletiva.
cliente de configurações do Key Vault
O cliente Key Vault Controle de Acesso permite a manipulação das configurações de uma conta Key Vault do Azure, com operações como: obtenção, atualização e listagem. Existem clientes assíncronos (KeyVaultSettingsAsyncClient
) e síncronos (KeyVaultSettingsClient
) no SDK, permitindo a seleção de um cliente com base no caso de uso de um aplicativo.
Operações de controle de acesso
Exemplos
API síncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas de serviço mais comuns do Azure Key Vault Controle de Acesso, incluindo:
- Lista de definições de função
- Criar ou atualizar uma definição de função
- Recuperar uma definição de função
- Listar atribuições de função
- Criar uma atribuição de função
- Recuperar uma atribuição de função
- Excluir uma atribuição de função
Lista de definições de função
Liste as definições de função no cofre de chaves chamando listRoleDefinitions()
.
PagedIterable<KeyVaultRoleDefinition> roleDefinitions =
keyVaultAccessControlClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL);
roleDefinitions.forEach(roleDefinition ->
System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Criar ou atualizar uma definição de função
Criar ou atualizar uma definição de função no cofre de chaves. O exemplo a seguir mostra como criar uma definição de função com um nome gerado 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());
Recuperar uma definição de função
Obter uma definição de função existente. Para fazer isso, o escopo e a propriedade 'name' de uma definição de função existente são necessários.
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());
Excluir uma definição de função
Exclua uma definição de função. Para fazer isso, o escopo e a propriedade 'name' de uma definição de função existente são necessários.
String roleDefinitionName = "<role-definition-name>";
keyVaultAccessControlClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName);
System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName);
Listar atribuições de função
Liste as atribuições de função no cofre de chaves chamando listRoleAssignments()
.
PagedIterable<KeyVaultRoleAssignment> roleAssignments =
keyVaultAccessControlClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL);
roleAssignments.forEach(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Criar uma atribuição de função
Crie uma atribuição de função no cofre de chaves. Para fazer isso, é necessária uma ID de definição de função e uma ID de objeto da entidade de serviço.
Uma ID de definição de função pode ser obtida da propriedade 'id' de uma das definições de função retornadas de listRoleDefinitions()
.
Consulte a seção Criar/Obter Credenciais para obter links e instruções sobre como gerar uma nova entidade de serviço e obter sua ID de objeto. Você também pode obter a ID do objeto para sua conta atualmente conectado executando o seguinte comando da CLI do 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());
Recuperar uma atribuição de função
Obtenha uma atribuição de função existente. Para fazer isso, a propriedade 'name' de uma atribuição de função existente é necessária.
String roleAssignmentName = "<role-assignment-name>";
KeyVaultRoleAssignment roleAssignment =
keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName());
Excluir uma atribuição de função
Para remover uma atribuição de função de uma entidade de serviço, a atribuição de função deve ser excluída. Para fazer isso, a propriedade 'name' de uma atribuição de função existente é necessária.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName);
System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName);
API assíncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas de serviço do Azure Key Vault Controle de Acesso assíncronas mais comuns, incluindo:
- Listar definições de função de forma assíncrona
- Criar ou atualizar uma definição de função de forma assíncrona
- Recuperar uma definição de função de forma assíncrona
- Excluir uma definição de função de forma assíncrona
- Listar atribuições de função de forma assíncrona
- Criar uma atribuição de função de forma assíncrona
- Recuperar uma atribuição de função de forma assíncrona
- Excluir uma atribuição de função de forma assíncrona
Observação: você deve adicionar
System.in.read()
ouThread.sleep()
depois que a função chamar no main classe/thread para permitir que funções/operações assíncronas sejam executadas e concluídas antes que o main aplicativo/thread seja encerrado.
Listar definições de função de forma assíncrona
Liste as definições de função no cofre de chaves chamando listRoleDefinitions()
.
keyVaultAccessControlAsyncClient.listRoleDefinitions(KeyVaultRoleScope.GLOBAL)
.subscribe(roleDefinition ->
System.out.printf("Retrieved role definition with name '%s'.%n", roleDefinition.getName()));
Criar ou atualizar uma definição de função de forma assíncrona
Crie ou atualize uma definição de função no cofre de chaves. O exemplo a seguir mostra como criar uma definição de função com um nome gerado 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 uma definição de função de forma assíncrona
Obtenha uma definição de função existente. Para fazer isso, a propriedade 'name' de uma definição de função existente é necessária.
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()));
Excluir uma definição de função de forma assíncrona
Exclua uma definição de função. Para fazer isso, a propriedade 'name' de uma definição de função existente é necessária.
String roleDefinitionName = "<role-definition-name>";
keyVaultAccessControlAsyncClient.deleteRoleDefinition(KeyVaultRoleScope.GLOBAL, roleDefinitionName)
.subscribe(unused -> System.out.printf("Deleted role definition with name '%s'.%n", roleDefinitionName));
Listar atribuições de função de forma assíncrona
Liste as atribuições de função no cofre de chaves chamando listRoleAssignments()
.
keyVaultAccessControlAsyncClient.listRoleAssignments(KeyVaultRoleScope.GLOBAL)
.subscribe(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Criar uma atribuição de função de forma assíncrona
Crie uma atribuição de função no cofre de chaves. Para fazer isso, é necessária uma ID de definição de função e uma ID de objeto da entidade de serviço.
Uma ID de definição de função pode ser obtida da propriedade 'id' de uma das definições de função retornadas de listRoleDefinitions()
.
Consulte a seção Criar/Obter Credenciais para obter links e instruções sobre como gerar uma nova entidade de serviço e obter sua ID de objeto. Você também pode obter a ID do objeto para sua conta de entrada atualmente executando o seguinte comando da CLI do 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 uma atribuição de função de forma assíncrona
Obtenha uma atribuição de função existente. Para fazer isso, a propriedade 'name' de uma atribuição de função existente é necessária.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlAsyncClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
.subscribe(roleAssignment ->
System.out.printf("Retrieved role assignment with name '%s'.%n", roleAssignment.getName()));
Excluir uma atribuição de função de forma assíncrona
Para remover uma atribuição de função de uma entidade de serviço, a atribuição de função deve ser excluída. Para fazer isso, a propriedade 'name' de uma atribuição de função existente é necessária.
String roleAssignmentName = "<role-assignment-name>";
keyVaultAccessControlAsyncClient.deleteRoleAssignment(KeyVaultRoleScope.GLOBAL, roleAssignmentName)
.subscribe(unused ->
System.out.printf("Deleted role assignment with name '%s'.%n", roleAssignmentName));
Operações de backup e restauração
Exemplos
API síncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas mais comuns do cliente do Backup Key Vault do Azure, incluindo:
Fazer backup de uma coleção de chaves
Faça backup de uma coleção inteira de chaves usando 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());
}
Restaurar uma coleção de chaves
Restaure uma coleção inteira de chaves de um backup usando 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());
}
Restaurar seletivamente uma chave
Restaure uma chave específica de um backup usando 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 assíncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas de cliente assíncronas mais comuns do Azure Key Vault Backup, incluindo:
- Fazer backup de um Key Vault de forma assíncrona
- Restaurar um Key Vault de forma assíncrona
- Restaurar uma chave de forma assíncrona
Observação: você deve adicionar
System.in.read()
ouThread.sleep()
depois que a função chamar no main classe/thread para permitir que funções/operações assíncronas sejam executadas e concluídas antes que o main aplicativo/thread seja encerrado.
Fazer backup de uma coleção de chaves de forma assíncrona
Faça backup de uma coleção inteira de chaves usando 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));
Restaurar uma coleção de chaves de forma assíncrona
Restaure uma coleção inteira de chaves de um backup usando 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"));
Restaurar seletivamente uma chave de forma assíncrona
Restaure uma coleção inteira de chaves de um backup usando 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"));
Operações de configurações
Exemplos
API síncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas mais comuns do cliente do Azure Key Vault Settings, incluindo:
Obter todas as configurações
Liste todas as configurações de uma conta 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 uma configuração específica
Recupere uma configuração 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());
Atualizar uma configuração específica
Atualize uma configuração 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 assíncrona
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas de cliente assíncronas mais comuns do Azure Key Vault Settings, incluindo:
Obter todas as configurações de forma assíncrona
Liste todas as configurações de uma conta 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 uma configuração específica de forma assíncrona
Recupere uma configuração 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()));
Atualizar uma configuração específica de forma assíncrona
Atualize uma configuração 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()));
Solução de problemas
Consulte nosso guia de solução de problemas para obter detalhes sobre como diagnosticar vários cenários de falha.
Geral
Os clientes Key Vault Controle de Acesso do Azure geram exceções. Por exemplo, se você tentar recuperar uma atribuição de função depois que ela for excluída, um 404
erro será retornado, indicando que o recurso não foi encontrado. No snippet a seguir, o erro é tratado normalmente capturando a exceção e exibindo informações adicionais sobre o erro.
try {
keyVaultAccessControlClient.getRoleAssignment(KeyVaultRoleScope.GLOBAL, "<role-assginment-name>");
} catch (HttpResponseException e) {
System.out.println(e.getMessage());
}
Cliente HTTP padrão
Por padrão, todas as bibliotecas de cliente usam o cliente HTTP do Netty. Adicionar a dependência acima configurará automaticamente a biblioteca de cliente para usar o cliente HTTP do Netty. A configuração ou a alteração do cliente HTTP é detalhada no wiki de clientes HTTP.
Biblioteca SSL padrão
Todas as bibliotecas de cliente, por padrão, usam a biblioteca SSL com o uso do Tomcat nativo para habilitar o desempenho de nível nativo para operações SSL. A biblioteca SSL Chata é um JAR do Uber que contém bibliotecas nativas para Linux/macOS/Windows e fornece melhor desempenho em comparação com a implementação de SSL padrão no JDK. Para obter mais informações, incluindo como reduzir o tamanho da dependência, consulte a seção ajuste de desempenho da wiki.
Próximas etapas
Vários exemplos de SDK do Java Key Vault estão disponíveis para você no repositório GitHub do SDK. Esses exemplos fornecem código de exemplo para cenários adicionais comumente encontrados ao trabalhar com o Azure Key Vault.
Documentação adicional
Para obter uma documentação mais abrangente sobre Key Vault do Azure, consulte a documentação de referência da API.
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas Frequentes Sobre o Código de Conduta ou entre em contato pelo email opencode@microsoft.com para enviar outras perguntas ou comentários.