Rychlý Start: Azure Key Vaulta tajná Klientská knihovna pro Java

Začínáme s klientskou knihovnou Azure Key Vault tajných klíčů pro Java Postupujte podle následujících kroků a nainstalujte balíček a vyzkoušejte ukázkový kód pro základní úlohy.

Další prostředky:

Požadavky

V tomto rychlém startu se předpokládá, že používáte Azure CLI a Apache Maven v okně terminálu pro Linux.

Nastavení

V tomto rychlém startu se k ověření uživatele do služeb Azure používá knihovna Azure identity s rozhraním příkazového řádku Azure. vývojáři můžou k ověřování hovorů použít taky Visual Studio nebo Visual Studio Code, další informace najdete v tématu ověření klienta pomocí klientské knihovny Azure Identity.

Přihlášení k Azure

  1. Spusťte příkaz login.

    az login
    

    Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, bude to mít za následek a načíst přihlašovací stránku Azure.

    V opačném případě otevřete stránku prohlížeče na adrese https://aka.ms/devicelogin a zadejte autorizační kód zobrazený v terminálu.

  2. Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.

Vytvoření nové konzolové aplikace v jazyce Java

V okně konzoly pomocí mvn příkazu vytvořte novou konzolovou aplikaci v jazyce 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

Instalace balíčku

Otevřete pom.xml soubor v textovém editoru. Přidejte následující prvky závislosti do skupiny 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 podle postupu v rychlém startu k Azure CLI,Azure PowerShell rychlém startunebo Azure Portal rychlého startu.

Alternativně můžete jednoduše spustit Azure CLI nebo Azure PowerShell příkazy níže.

Důležité

Každý trezor klíčů musí mít jedinečný název. V <your-unique-keyvault-name> následujících příkladech nahraďte názvem vašeho trezoru klíčů.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Udělení přístupu k trezoru klíčů

Vytvořte zásady přístupu pro váš Trezor klíčů, který uděluje oprávnění tajnosti k vašemu uživatelskému účtu.

az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --secret-permissions delete get list set purge

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 Azure Key Vault tajných klíčů pro Java umožňuje správu tajných kódů. V části Příklady kódu se dozvíte, jak vytvořit klienta, nastavit tajný klíč, načíst tajný klíč a odstranit tajný klíč.

Celá Konzolová aplikace je níže.

Příklady kódu

Přidat direktivy

Do horní části 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

V tomto rychlém startu se přihlášený uživatel používá k ověření Key Vault, což je upřednostňovaná metoda pro místní vývoj. Pro aplikace nasazené do Azure by se měla App Service nebo virtuální počítač přiřadit spravovaná identita. Další informace najdete v tématu Přehled spravované identity.

V následujícím příkladu se název trezoru klíčů rozšíří do identifikátoru URI trezoru klíčů ve formátu https://\<your-key-vault-name\>.vault.azure.net . Tento příklad používá třídu ' DefaultAzureCredential () ' , která umožňuje použít stejný kód v různých prostředích s různými možnostmi k poskytnutí identity. Další informace najdete v tématu výchozí ověřování pověření Azure.

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 klíče

Teď, když je vaše aplikace ověřená, můžete do trezoru klíčů vložit tajný klíč pomocí secretClient.setSecret metody. To vyžaduje název tajného kódu – k secretName proměnné v této ukázce přiřadíme hodnotu "mySecret".

secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

Můžete ověřit, jestli je tajný kód nastavený pomocí příkazu AZ klíčů trezor tajného zobrazení :

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Načtení tajného kódu

Nyní můžete načíst dříve nastavený tajný klíč pomocí secretClient.getSecret metody.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

Přístup k hodnotě načteného tajného kódu teď můžete získat pomocí retrievedSecret.getValue() .

Odstranění tajného klíče

Nakonec klíč odstraníme z vašeho trezoru klíčů pomocí secretClient.beginDeleteSecret metody.

Odstranění tajného klíče je dlouhodobá operace, pro kterou můžete dotazovat svůj průběh nebo počkat na jeho dokončení.

SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();

Můžete ověřit, zda byl tajný klíč odstraněn pomocí příkazu AZ klíčů trezor tajné zobrazení :

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Vyčištění prostředků

pokud už je nepotřebujete, můžete k odebrání trezoru klíčů a odpovídající skupiny prostředků použít Azure CLI nebo Azure PowerShell.

az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"

Ukázka kódu

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 Key Vault a o tom, jak je integrovat s vašimi aplikacemi, najdete dál v článcích níže.