Rychlý start: Klientská knihovna tajných klíčů služby Azure Key Vault pro Javu
Začínáme s klientskou knihovnou tajných klíčů služby Azure Key Vault pro Javu Pomocí těchto kroků nainstalujte balíček a vyzkoušejte si ukázkový kód pro základní úlohy.
Tip
Pokud pracujete s prostředky tajných kódů služby Azure Key Vault v aplikaci Spring, doporučujeme jako alternativu zvážit Spring Cloud Azure . Spring Cloud Azure je opensourcový projekt, který poskytuje bezproblémovou integraci Spring se službami Azure. Další informace o Službě Spring Cloud Azure a ukázku použití tajných kódů služby Key Vault najdete v tématu Načtení tajného kódu ze služby Azure Key Vault v aplikaci Spring Boot.
Další prostředky:
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Java Development Kit (JDK) verze 8 nebo novější
- Apache Maven
- Azure CLI
V tomto rychlém startu se předpokládá, že používáte Azure CLI a Apache Maven v okně terminálu s Linuxem.
Nastavení
Tento rychlý start používá knihovnu identit Azure s Azure CLI k ověření uživatele ve službách Azure. Vývojáři můžou také k ověřování volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.
Přihlášení k Azure
Spusťte příkaz
login
.az login
Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.
V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.
Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.
Vytvoření nové konzolové aplikace v Javě
V okně konzoly pomocí mvn
příkazu vytvořte novou konzolovou aplikaci Java s názvem akv-secrets-java
.
mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
-DartifactId=akv-secrets-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Výstup z generování projektu bude vypadat přibližně takto:
[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] ------------------------------------------------------------------------
Změňte adresář na nově vytvořenou akv-secrets-java/
složku.
cd akv-secrets-java
Nainstalujte balíček .
Otevřete soubor pom.xml v textovém editoru. Do skupiny závislostí přidejte následující prvky závislostí.
<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>
Vytvoření skupiny prostředků a trezoru klíčů
V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Trezor klíčů můžete vytvořit pomocí kroků v rychlém startu Azure CLI, rychlém startu Azure PowerShellu nebo rychlém startu webu Azure Portal.
Alternativně můžete spustit tyto příkazy Azure CLI nebo Azure PowerShellu.
Důležité
Každý trezor klíčů musí mít jedinečný název. Nahraďte <název-unique-keyvault-name> názvem vašeho trezoru klíčů v následujících příkladech.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Udělení přístupu k trezoru klíčů
Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI 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>"
Nahraďte <upn>, <subscription-id>, <resource-group-name> a <your-unique-keyvault-name> skutečnými hodnotami. Hlavní název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např username@domain.com. ).
Nastavení proměnných prostředí
Tato aplikace používá název trezoru klíčů jako proměnnou prostředí s názvem KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS nebo Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektový model
Klientská knihovna tajných kódů služby Azure Key Vault pro Javu umožňuje spravovat tajné kódy. Část Příklady kódu ukazuje, jak vytvořit klienta, nastavit tajný klíč, načíst tajný klíč a odstranit tajný klíč.
Příklady kódu
Přidání direktiv
Na začátek kódu přidejte následující direktivy:
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;
Ověření a vytvoření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití DefaultAzureCredential třídy je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential
podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.
V tomto rychlém startu DefaultAzureCredential
se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential
kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.
V tomto příkladu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://<your-key-vault-name>.vault.azure.net
. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.
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();
Uložení tajného kódu
Teď, když je vaše aplikace ověřená, můžete tajný kód vložit do trezoru klíčů pomocí této secretClient.setSecret
metody. To vyžaduje název tajného kódu – k proměnné v této ukázce jsme přiřadili hodnotu mySecret secretName
.
secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));
Pomocí příkazu az keyvault secret show můžete ověřit, že je tajný klíč nastavený:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Načtení tajného kódu
Teď můžete pomocí metody načíst dříve nastavený tajný kód secretClient.getSecret
.
KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);
Nyní můžete získat přístup k hodnotě načteného tajného kódu pomocí retrievedSecret.getValue()
.
Odstranění tajného kódu
Nakonec pomocí metody odstraníme tajný klíč z trezoru secretClient.beginDeleteSecret
klíčů.
Odstranění tajného kódu je dlouhotrvající operace, pro kterou můžete dotazovat jeho průběh nebo počkat na dokončení.
SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();
Pomocí příkazu az keyvault secret show můžete ověřit, že se tajný klíč odstranil:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Vyčištění prostředků
Pokud už nepotřebujete, můžete pomocí Azure CLI nebo Azure PowerShellu odebrat trezor klíčů a odpovídající skupinu prostředků.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Ukázkový kód
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.");
}
}
Další kroky
V tomto rychlém startu jste vytvořili trezor klíčů, uložili tajný klíč, načetli ho a pak ho odstranili. Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v těchto článcích.
- Přehled služby Azure Key Vault
- Prohlédni si průvodce vývojářem ve službě Azure Key Vault.
- Zabezpečení přístupu k trezoru klíčů