Quickstart: Clientbibliotheek Azure Key Vault voor geheimen voor Java

Aan de slag met de clientbibliotheek Azure Key Vault voor geheimen voor Java. Volg de onderstaande stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen.

Aanvullende bronnen:

Vereisten

In deze quickstart wordt ervan uitgegaan dat u Azure CLI en Apache Maven uitvoert in een Linux-terminalvenster.

Instellen

Deze quickstart maakt gebruik van de Azure Identity-bibliotheek met Azure CLI om de gebruiker te verifiëren bij Azure-services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun oproepen te verifiëren: zie De client verifiëren met de Azure Identity-clientbibliotheek (Engelstalig) voor meer informatie.

Aanmelden bij Azure

  1. Voer de opdracht login uit.

    az login
    

    Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.

    Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal.

  2. Meldt u zich in de browser aan met uw accountreferenties.

Nieuwe Java-console-app maken

Gebruik in een consolevenster de opdracht mvn om een nieuwe Java-console-app te maken met de naam akv-secrets-java.

mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
                       -DartifactId=akv-secrets-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

De uitvoer van het project ziet er ongeveer als volgt uit:

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-secrets-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------

Wijzig uw map in de zojuist gemaakte map akv-secrets-java/.

cd akv-secrets-java

Het pakket installeren

Open het bestand pom.xml in uw teksteditor. Voeg de volgende afhankelijkheidselementen toe aan de groep met afhankelijkheden.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-secrets</artifactId>
      <version>4.2.3</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.0</version>
    </dependency>

Een resourcegroep en sleutelkluis maken

In deze quickstart wordt gebruikgemaakt van een vooraf gemaakte Azure-sleutelkluis. U kunt een sleutelkluis maken met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.

U kunt ook de onderstaande Azure CLI- of Azure PowerShell-opdrachten uitvoeren.

Belangrijk

Elke sleutelkluis moet een unieke naam hebben. Vervang in de volgende voorbeelden door de naam van <your-unique-keyvault-name> uw sleutelkluis.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Toegang verlenen tot uw sleutelkluis

Maak toegangsbeleid voor de sleutelkluis waarmee geheimmachtigingen worden verleend aan uw gebruikersaccount.

az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --secret-permissions delete get list set purge

Omgevingsvariabelen instellen

In deze applicatie wordt de naam van uw sleutelkluis gebruikt als een omgevingsvariabele met de naam KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS of Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objectmodel

Met de clientbibliotheek Azure Key Vault voor geheimen voor Java kunt u geheimen beheren. In de sectie Codevoorbeelden ziet u hoe u een client maakt, een geheim instelt, een geheim ophaalt en een geheim verwijdert.

De volledige console-app is hieronder beschikbaar.

Codevoorbeelden

Instructies toevoegen

Voeg de volgende instructies toe aan het begin van de code:

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;

Een client verifiëren en maken

In deze quickstart wordt een aangemelde gebruiker gebruikt voor de verificatie bij Key Vault. Dit is de voorkeursmethode voor lokale ontwikkeling. Voor toepassingen die zijn geïmplementeerd in Azure, moet een beheerde identiteit worden toegewezen aan een App-service of een virtuele machine. Zie Overzicht van beheerde identiteiten voor meer informatie.

In het onderstaande voorbeeld wordt de naam van uw sleutelkluis uitgebreid naar de sleutelkluis-URI, in de indeling https://\<your-key-vault-name\>.vault.azure.net . In dit voorbeeld wordt de klasse DefaultAzureCredential() gebruikt, waarmee u dezelfde code kunt gebruiken in verschillende omgevingen met verschillende opties om identiteiten te bieden. Zie het artikel over standaardverificatie van Azure-referenties (Engelstalig) voor meer informatie.

String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

SecretClient secretClient = new SecretClientBuilder()
    .vaultUrl(keyVaultUri)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Een geheim opslaan

Nu uw toepassing is geverifieerd, kunt u een geheim toevoegen aan uw sleutelkluis met behulp van de methode secretClient.setSecret. Hiervoor is een naam voor het geheim vereist: we hebben in dit voorbeeld de waarde 'mySecret' toegewezen aan de variabele secretName.

secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

U kunt controleren of het geheim is ingesteld met de opdracht az keyvault secret show:

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Een geheim ophalen

U kunt nu het eerder ingestelde geheim ophalen met de methode secretClient.getSecret.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

U hebt nu toegang tot de waarde van het opgehaalde geheim met retrievedSecret.getValue().

Een geheim verwijderen

Ten slotte verwijderen we het geheim uit uw sleutelkluis met de secretClient.beginDeleteSecret-methode.

Het verwijderen van een geheim is een langdurige bewerking, waarvan u de voortgang kunt controleren of wachten totdat deze is voltooid.

SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();

U kunt controleren of het geheim is verwijderd met de opdracht az keyvault secret show:

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Resources opschonen

Wanneer u de sleutelkluis en de bijbehorende resourcegroep niet meer nodig hebt, kunt u Azure CLI of Azure PowerShell gebruiken om ze te verwijderen.

az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"

Voorbeeldcode

package com.keyvault.secrets.quickstart;

import java.io.Console;

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret

public class App {
    public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
        String keyVaultName = System.getenv("KEY_VAULT_NAME");
        String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

        System.out.printf("key vault name = %s and key vault URI = %s \n", keyVaultName, keyVaultUri);

        SecretClient secretClient = new SecretClientBuilder()
            .vaultUrl(keyVaultUri)
            .credential(new DefaultAzureCredentialBuilder().build())
            .buildClient();

        Console con = System.console();  

        String secretName = "mySecret";

        System.out.println("Please provide the value of your secret > ");
        
        String secretValue = con.readLine();

        System.out.print("Creating a secret in " + keyVaultName + " called '" + secretName + "' with value '" + secretValue + "` ... ");

        secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

        System.out.println("done.");
        System.out.println("Forgetting your secret.");
        
        secretValue = "";
        System.out.println("Your secret's value is '" + secretValue + "'.");

        System.out.println("Retrieving your secret from " + keyVaultName + ".");

        KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

        System.out.println("Your secret's value is '" + retrievedSecret.getValue() + "'.");
        System.out.print("Deleting your secret from " + keyVaultName + " ... ");

        SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
        deletionPoller.waitForCompletion();

        System.out.println("done.");
    }
}

Volgende stappen

In deze quickstart hebt u een sleutelkluis gemaakt, een geheim opgeslagen en dat geheim vervolgens verwijderd. Voor meer informatie over Key Vault en hoe u Key Vault integreert met uw toepassingen gaat u verder naar de artikelen hieronder.