Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
Prerequisites
- 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.
Instalace
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 loginPokud 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. Pro vytvoření úložiště klíčů postupujte podle kroků uvedených v těchto rychlých úvodech.
Případně můžete tyto příkazy Azure CLI spustit.
Important
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íčů