Szybki start: biblioteka klienta kluczy usługi Azure Key Vault dla języka Java

Rozpocznij pracę z biblioteką klienta kluczy usługi Azure Key Vault dla języka Java. Wykonaj następujące kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla podstawowych zadań.

Dodatkowe zasoby:

Prerequisites

W przewodniku szybkiego startu założono, że używasz Azure CLI i Apache Maven w terminalu w Linuxie.

Konfigurowanie

Ten Szybki Start używa biblioteki Azure Identity z interfejsem wiersza polecenia platformy Azure do uwierzytelniania użytkownika do usług platformy Azure. Deweloperzy mogą również używać Visual Studio oraz Visual Studio Code do uwierzytelniania swoich wywołań. Aby uzyskać więcej informacji, zobacz Uwierzytelnij klienta za pomocą biblioteki Azure Identity.

Logowanie się do platformy Azure

  1. Uruchom polecenie login.

    az login
    

    Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure.

    W przeciwnym razie otwórz stronę przeglądarki pod https://aka.ms/devicelogin i wprowadź kod autoryzacji wyświetlany w terminalu.

  2. Zaloguj się w przeglądarce przy użyciu poświadczeń swojego konta.

Tworzenie nowej aplikacji konsolowej Java

W oknie konsoli użyj polecenia mvn , aby utworzyć nową aplikację konsolową Java o nazwie akv-keys-java.

mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
                       -DartifactId=akv-keys-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

Dane wyjściowe generowania projektu będą wyglądać mniej więcej tak:

[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] ------------------------------------------------------------------------

Zmień katalog na nowo utworzony akv-keys-java/.

cd akv-keys-java

Instalowanie pakietu

Otwórz plik pom.xml w edytorze tekstów. Dodaj następujące elementy zależności do grupy zależności.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-keys</artifactId>
      <version>4.10.6</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.18.2</version>
    </dependency>

Utwórz grupę zasobów i magazyn kluczy

Ten szybki start wykorzystuje wstępnie utworzony magazyn kluczy Azure. Można utworzyć magazyn kluczy, wykonując kroki opisane w tych szybkich przewodnikach startowych:

Alternatywnie możesz uruchomić te polecenia Azure CLI.

Important

Każdy magazyn kluczy musi mieć unikatową nazwę. Zastąp <vault-name> nazwą magazynu kluczy w poniższych przykładach.

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

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Udzielanie dostępu do magazynu kluczy

Aby uzyskać uprawnienia do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę do głównej nazwy użytkownika (UPN) przy użyciu polecenia interfejsu wiersza polecenia platformy Azure az role assignment create.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Zastąp <upn>, <subscription-id> i <vault-name> rzeczywistymi wartościami. Jeśli użyto innej nazwy grupy zasobów, zastąp "myResourceGroup" również. Nazwa UPN będzie zwykle mieć format adresu e-mail (np. username@domain.com).

Ustawianie zmiennych środowiskowych

Ta aplikacja używa nazwy magazynu kluczy jako zmiennej środowiskowej o nazwie KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<vault-name>"

macOS lub Linux

export KEY_VAULT_NAME=<vault-name>

Model obiektów

Biblioteka klienta usługi Azure Key Vault dla języka Java umożliwia zarządzanie kluczami. W sekcji Przykłady kodu pokazano, jak utworzyć klienta oraz utworzyć, pobrać i usunąć klucz.

Cała aplikacja konsolowa jest dostarczana w przykładowym kodzie.

Przykłady kodu

Dodawanie dyrektyw

Dodaj następujące dyrektywy na początku kodu:

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;

Uwierzytelnianie i tworzenie klienta

Żądania aplikacji do większości usług platformy Azure muszą być autoryzowane. Użycie klasy DefaultAzureCredential jest zalecaną metodą implementowania połączeń bez hasła z usługami platformy Azure w kodzie. DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa, która metoda powinna być używana podczas uruchamiania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych i produkcyjnych) bez implementowania kodu specyficznego dla środowiska.

W tym szybkim starcie DefaultAzureCredential uwierzytelnia się w magazynie kluczy przy użyciu poświadczeń lokalnego użytkownika dewelopera zalogowanego do Azure CLI. Po wdrożeniu aplikacji na platformie Azure ten sam kod może automatycznie odnajdywać i używać tożsamości zarządzanej przypisanej do usługi App Service, maszyny wirtualnej lub innych usług. Aby uzyskać więcej informacji, zobacz Omówienie tożsamości zarządzanej.

W tym przykładzie nazwa magazynu kluczy jest rozwijana do identyfikatora URI magazynu kluczy, w formacie https://<vault-name>.vault.azure.net. Aby uzyskać więcej informacji na temat uwierzytelniania w magazynie kluczy, zobacz Przewodnik Dewelopera.

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();

Utwórz klucz

Po uwierzytelnieniu aplikacji, możesz utworzyć klucz w magazynie kluczy, używając metody `keyClient.createKey`. Wymaga to nazwy klucza i typu klucza. Do zmiennej przypisano wartość "myKey" keyName i użyto funkcji RSA KeyType w tym przykładzie.

keyClient.createKey(keyName, KeyType.RSA);

Możesz zweryfikować, czy klucz został ustawiony za pomocą polecenia az keyvault key show.

az keyvault key show --vault-name <vault-name> --name myKey

Pobieranie klucza

Teraz możesz pobrać utworzony wcześniej klucz za pomocą keyClient.getKey metodą.

KeyVaultKey retrievedKey = keyClient.getKey(keyName);

Teraz możesz uzyskać dostęp do szczegółów pobranego klucza za pomocą operacji, takich jak `retrievedKey.getProperties()`, `retrievedKey.getKeyOperations()`, itp.

Usuń klucz

Na koniec usuńmy klucz z magazynu kluczy za pomocą metody keyClient.beginDeleteKey.

Usuwanie klucza to długotrwała operacja, dla której można monitorować jej postęp lub czekać na jej zakończenie.

SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();

Możesz sprawdzić, czy klucz został usunięty za pomocą polecenia az keyvault key show:

az keyvault key show --vault-name <vault-name> --name myKey

Czyszczenie zasobów

Kiedy magazyn kluczy i odpowiednia grupa zasobów nie będą już potrzebne, możesz usunąć je, używając interfejsu wiersza polecenia Azure lub programu Azure PowerShell.

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

Przykładowy kod

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.");
    }
}

Dalsze kroki

W tym szybkim przewodniku utworzyłeś magazyn kluczy, stworzyłeś klucz, pobrałeś go, a następnie usunąłeś. Aby dowiedzieć się więcej o usłudze Key Vault i sposobie jej integracji z aplikacjami, przejdź do tych artykułów.