Delen via


Quickstart: Azure Key Vault Secret-clientbibliotheek voor Java

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

Tip

Als u werkt met Azure Key Vault Secrets bronnen in een Spring-toepassing, raden we u aan om Spring Cloud Azure als alternatief te overwegen. Spring Cloud Azure is een opensource-project dat naadloze Spring-integratie met Azure-services biedt. Zie Een geheim laden vanuit Azure Key Vault in een Spring Boot-toepassing voor meer informatie over Spring Cloud Azure en een voorbeeld van Key Vault-geheimen.

Aanvullende bronnen:

Prerequisites

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

Installeren

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 authenticeren. Voor meer informatie, raadpleeg De client authenticeren met de Azure Identity-clientbibliotheek (Engelstalig).

Aanmelden bij Azure

  1. Voer de login opdracht uit.

    az login
    

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

    Anders opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in uw 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 naar de zojuist aangemaakte 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>

Maak een resourcegroep en een sleutelkluis aan

In deze quickstart wordt een vooraf gemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken door de stappen in deze quickstarts te volgen:

U kunt deze Azure CLI-opdrachten ook uitvoeren.

Important

Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Toegang verlenen tot uw sleutelkluis

Om machtigingen te verkrijgen voor uw sleutelkluis via Role-Based Access Control (RBAC), wijst u een rol toe aan uw "User Principal Name" (UPN) met behulp van de Azure CLI-opdracht az role assignment create.

az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Vervang <upn>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. Uw UPN heeft doorgaans de indeling van een e-mailadres (bijvoorbeeld username@domain.com).

Omgevingsvariabelen instellen

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

Windows

set KEY_VAULT_NAME=<vault-name>

Windows PowerShell

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

macOS of Linux

export KEY_VAULT_NAME=<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.

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

Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential klasse wordt aanbevolen voor het implementeren van wachtwoordloze verbindingen met Azure-services in uw code. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.

In deze quickstart authenticeert DefaultAzureCredential zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing naar Azure wordt uitgerold, kan dezelfde code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, een virtuele machine, of andere diensten. Voor meer informatie, zie Overzicht van beheerde identiteiten.

In dit voorbeeld wordt de naam van uw sleutelkluis uitgebreid naar de sleutelkluis-URI, in de indeling https://.vault.azure.net. Zie Gids voor ontwikkelaars voor meer informatie over het authenticeren bij een sleutelkluis.

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 door de secretClient.setSecret methode te gebruiken. Hiervoor is een naam voor het geheim vereist. In dit voorbeeld hebben we de waarde 'mySecret' toegewezen aan de secretName variabele.

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

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

az keyvault secret show --vault-name <vault-name> --name mySecret

Een geheim ophalen

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

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

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

Een geheim verwijderen

Laten we ten slotte het geheim uit uw sleutelkluis verwijderen 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();

Je kunt controleren of de sleutel is verwijderd met de az keyvault secret show opdracht:

az keyvault secret show --vault-name <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 "<resource-group>"
Remove-AzResourceGroup -Name "<resource-group>"

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, opgehaald en vervolgens verwijderd. Ga verder met deze artikelen voor meer informatie over Key Vault en hoe u deze integreert met uw toepassingen.