Snabbstart: Azure Key Vault Key-klientbibliotek för Java
Kom igång med Azure Key Vault Key-klientbiblioteket för Java. Följ de här stegen för att installera paketet och prova exempelkod för grundläggande uppgifter.
Ytterligare resurser:
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt.
- 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.
Konfigurera
Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI för att autentisera användare till Azure Services. 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 login
Om CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.
Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och 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 mvn
kommandot för att skapa en ny Java-konsolapp med namnet akv-keys-java
.
mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
-DartifactId=akv-keys-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.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-keys-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-keys-java/
mappen.
cd akv-keys-java
Installera -paketet
Öppna filen pom.xml i textredigeraren. Lägg till följande beroendeelement i gruppen med beroenden.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-keys</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
Den här snabbstarten använder ett förskapat Azure-nyckelvalv. Du kan skapa ett nyckelvalv genom att följa stegen i Azure CLI-snabbstarten, Azure PowerShell-snabbstarten eller Azure Portal snabbstart.
Du kan också köra dessa Azure CLI- eller Azure PowerShell-kommandon.
Viktigt!
Varje nyckelvalv måste ha ett unikt namn. Ersätt <ditt unika 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" --enable-rbac-authorization
Bevilja åtkomst till ditt nyckelvalv
Om du vill få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll till ditt UPN (User Principal Name) med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ersätt <upn>, <subscription-id>, <resource-group-name> och <your-unique-keyvault-name> med dina faktiska värden. Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).
Ange miljövariabler
Det här programmet använder ditt nyckelvalvnamn 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 Key-klientbiblioteket för Java kan du hantera nycklar. I avsnittet Kodexempel visas hur du skapar en klient, skapar en nyckel, hämtar en nyckel och tar bort en nyckel.
Hela konsolappen anges i Exempelkod.
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.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
Autentisera och skapa en klient
Programbegäranden till de flesta Azure-tjänster måste auktoriseras. Att använda klassen DefaultAzureCredential är den rekommenderade metoden för att implementera lösenordslösa anslutningar till Azure-tjänster i koden. DefaultAzureCredential
stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.
I den här snabbstarten DefaultAzureCredential
autentiserar du till nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändare som är inloggad i Azure CLI. När programmet distribueras till Azure kan samma DefaultAzureCredential
kod automatiskt identifiera och använda en hanterad identitet som har tilldelats till en App Service, virtuell dator eller andra tjänster. Mer information finns i Översikt över hanterad identitet.
I det här exemplet expanderas namnet på ditt nyckelvalv till nyckelvalvets URI i formatet https://<your-key-vault-name>.vault.azure.net
. Mer information om autentisering till nyckelvalv finns i Utvecklarguide.
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Skapa en nyckel
Nu när programmet har autentiserats keyClient.createKey
kan du skapa en nyckel i nyckelvalvet med hjälp av metoden . Detta kräver ett namn på nyckeln och en nyckeltyp. Vi har tilldelat värdet "myKey" till variabeln keyName
och använder en RSA KeyType
i det här exemplet.
keyClient.createKey(keyName, KeyType.RSA);
Du kan kontrollera att nyckeln har angetts med kommandot az keyvault key show :
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Hämta en nyckel
Nu kan du hämta den tidigare skapade nyckeln med keyClient.getKey
-metoden.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
Nu kan du komma åt information om den hämtade nyckeln med åtgärder som retrievedKey.getProperties
, retrievedKey.getKeyOperations
osv.
Ta bort en nyckel
Slutligen tar vi bort nyckeln från nyckelvalvet med keyClient.beginDeleteKey
metoden .
Nyckelborttagning är en tidskrävande åtgärd som du kan avsöka dess förlopp för eller vänta tills den har slutförts.
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
Du kan kontrollera att nyckeln har tagits bort med kommandot az keyvault key show :
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Rensa resurser
När det inte längre behövs kan du använda Azure CLI eller Azure PowerShell för att ta bort ditt nyckelvalv och motsvarande resursgrupp.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Exempelkod
package com.keyvault.keys.quickstart;
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
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);
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
String keyName = "myKey";
System.out.print("Creating a key in " + keyVaultName + " called '" + keyName + " ... ");
keyClient.createKey(keyName, KeyType.RSA);
System.out.print("done.");
System.out.println("Retrieving key from " + keyVaultName + ".");
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
System.out.println("Your key's ID is '" + retrievedKey.getId() + "'.");
System.out.println("Deleting your key from " + keyVaultName + " ... ");
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
System.out.print("done.");
}
}
Nästa steg
I den här snabbstarten skapade du ett nyckelvalv, skapade en nyckel, hämtade den och tog sedan bort den. Om du vill veta mer om Key Vault och hur du integrerar det med dina program fortsätter du till de här artiklarna.
- Läs en översikt över Azure Key Vault
- Läs säkerhetsöversikten för Key Vault
- Se utvecklarguiden för Azure Key Vault
- Skydda åtkomst till ett nyckelvalv