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

Autenticar o cliente

Para interagir com o serviço de Key Vault do Azure, você precisará criar uma instância da KeyVaultAccessControlClientclasse 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 de KeyVaultAccessControlClient e chame buildAsyncClient().

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 de KeyVaultBackupClient e chame buildAsyncClient().

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 de KeyVaultSettingsClient e chame buildAsyncClient().

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

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:

Observação: você deve adicionar System.in.read() ou Thread.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:

Observação: você deve adicionar System.in.read() ou Thread.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.

Impressões