Snabbstart: Azure Key Vault hemligt klientbibliotek för Java
Kom igång med Azure Key Vault Secret-klientbiblioteket för Java. Följ stegen nedan för att installera paketet och prova exempelkoden för grundläggande uppgifter.
Ytterligare resurser:
Förutsättningar
- En Azure-prenumeration – skapa en utan kostnad.
- Java Development Kit (JDK) version 8 eller senare
- Apache Maven
- Azure CLI
Den här snabbstarten förutsätter att du kör Azure CLI och Apache Maven i ett Linux-terminalfönster.
Inrätta
Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI för att autentisera användare till Azure-tjänster. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. Mer information finns i Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör kommandot
login.az loginOm CLI kan öppna din standardwebbläsare gör den det och läser in en Inloggningssida för Azure.
Annars öppnar du en webbläsarsida på och https://aka.ms/devicelogin anger auktoriseringskoden som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Skapa en ny Java-konsolapp
I ett konsolfönster använder du kommandot mvn för att skapa en ny Java-konsolapp med namnet akv-secrets-java .
mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
-DartifactId=akv-secrets-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Utdata från genereringen av projektet ser ut ungefär så här:
[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] ------------------------------------------------------------------------
Ändra katalogen till den nyligen skapade akv-secrets-java/ mappen.
cd akv-secrets-java
Installera paketet
Öppna pom.xml i textredigeraren. Lägg till följande beroendeelement i gruppen med beroenden.
<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>
Skapa en resursgrupp och ett nyckelvalv
I den här snabbstarten används ett azure-nyckelvalv som har skapats i förväg. Du kan skapa ett nyckelvalv genom att följa stegen i Snabbstartför Azure CLI, Azure PowerShell snabbstarteller Azure Portal snabbstart.
Du kan också köra Azure CLI eller köra Azure PowerShell nedan.
Viktigt
Varje nyckelvalv måste ha ett unikt namn. Ersätt <your-unique-keyvault-name> med namnet på ditt nyckelvalv i följande exempel.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"
Bevilja åtkomst till ditt nyckelvalv
Skapa en åtkomstprincip för ditt nyckelvalv som beviljar hemliga behörigheter till ditt användarkonto.
az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --secret-permissions delete get list set purge
Ange miljövariabler
Det här programmet använder nyckelvalvsnamnet som en miljövariabel med namnet KEY_VAULT_NAME .
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS eller Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektmodell
Med Azure Key Vault Secret-klientbiblioteket för Java kan du hantera hemligheter. Avsnittet Kodexempel visar hur du skapar en klient, anger en hemlighet, hämtar en hemlighet och tar bort en hemlighet.
Hela konsolappen finns under.
Kodexempel
Lägga till direktiv
Lägg till följande -direktiv överst i koden:
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;
Autentisera och skapa en klient
I den här snabbstarten används en inloggad användare för att autentisera till Key Vault, vilket är den bästa metoden för lokal utveckling. För program som distribueras till Azure ska en hanterad identitet tilldelas till en App Service eller virtuell dator. Mer information finns i Översikt över hanterad identitet.
I exemplet nedan expanderas namnet på ditt nyckelvalv till nyckelvalvs-URI i formatet https://\<your-key-vault-name\>.vault.azure.net . Det här exemplet använder klassen "DefaultAzureCredential()" som gör att du kan använda samma kod i olika miljöer med olika alternativ för att tillhandahålla identitet. Mer information finns i Standardautentisering med Azure-autentiseringsuppgifter.
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();
Spara en hemlighet
Nu när programmet har autentiserats kan du placera en hemlighet i nyckelvalvet med hjälp av secretClient.setSecret metoden . Detta kräver ett namn för hemligheten – vi har tilldelat värdet "mySecret" till variabeln secretName i det här exemplet.
secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));
Du kan kontrollera att hemligheten har angetts med kommandot az keyvault secret show:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Hämta en hemlighet
Nu kan du hämta den tidigare konfigurerade hemligheten med secretClient.getSecret metoden .
KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);
Nu kan du komma åt värdet för den hämtade hemligheten med retrievedSecret.getValue() .
Ta bort en hemlighet
Slutligen tar vi bort hemligheten från nyckelvalvet med secretClient.beginDeleteSecret metoden .
Borttagning av hemligheter är en långvarig åtgärd som du kan avse förloppet för eller vänta tills den har slutförts.
SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();
Du kan kontrollera att hemligheten har tagits bort med kommandot az keyvault secret show:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Rensa resurser
När det inte längre behövs kan du använda Azure CLI eller Azure PowerShell för att ta bort nyckelvalvet och motsvarande resursgrupp.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Exempelkod
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.");
}
}
Nästa steg
I den här snabbstarten har du skapat ett nyckelvalv, lagrat en hemlighet, hämtat det och sedan tagit bort det. Mer information om Key Vault och hur du integrerar det med dina program finns i artiklarna nedan.