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
- Een Azure-abonnement (u kunt een gratis abonnement maken).
- Java Development Kit (JDK)-versie 8 of hoger
- Apache Maven
- Azure-CLI
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
Voer de opdracht
loginuit.az loginAls 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.
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.
- Lees een Overzicht van Azure Key Vault
- Zie de Gids voor Azure Key Vault-ontwikkelaars
- Instructies voor veilige toegang tot een sleutelkluis