Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozpocznij pracę z biblioteką klienta tajemnic usługi Azure Key Vault do języka Java. Wykonaj następujące kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla podstawowych zadań.
Tip
Jeśli pracujesz z zasobami sekretów Azure Key Vault w aplikacji Spring, zalecamy rozważenie Spring Cloud Azure jako alternatywy. Spring Cloud Azure to projekt typu open source, który zapewnia bezproblemową integrację platformy Spring z usługami platformy Azure. Aby dowiedzieć się więcej na temat Spring Cloud Azure i zapoznać się z przykładem użycia tajnych haseł usługi Key Vault, zobacz przykład Ładowanie tajnego hasła z usługi Azure Key Vault w aplikacji Spring Boot.
Dodatkowe zasoby:
- Kod źródłowy
- Dokumentacja referencyjna interfejsu API
- dokumentacja produktu
- Samples
Prerequisites
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Java Development Kit (JDK) w wersji 8 lub nowszej
- Apache Maven
- "Azure CLI"
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
Uruchom polecenie
login.az loginJeś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.
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-secrets-java.
mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
-DartifactId=akv-secrets-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.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] ------------------------------------------------------------------------
Zmień katalog na nowo utworzony folder akv-secrets-java/.
cd akv-secrets-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-secrets</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.2.0</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:
- Szybki start korzystania z interfejsu wiersza polecenia platformy Azure
- Szybki start Azure PowerShell
- Szybki start w usłudze Portal Azure
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 Secrets 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 platformy Java umożliwia zarządzanie tajemnicami. W sekcji Przykłady kodu pokazano, jak utworzyć klienta, ustawić tajemnicę, pobrać tajemnicę i usunąć tajemnicę.
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.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;
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";
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Zapisz tajemnicę
Po uwierzytelnieniu aplikacji możesz umieścić sekret w magazynie kluczy przy użyciu metody umieszczonej w placeholderze secretClient.setSecret. Wymaga to nazwy dla tajemnicy — przypisaliśmy wartość "mySecret" do zmiennej secretName w tym przykładzie.
secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));
Możesz sprawdzić, czy sekret został ustawiony za pomocą polecenia az keyvault secret show.
az keyvault secret show --vault-name <vault-name> --name mySecret
Pobierz sekret
Teraz możesz pobrać wcześniej ustawioną tajemnicę za pomocą metody secretClient.getSecret.
KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);
Teraz możesz uzyskać dostęp do wartości pobranego tajnego za pomocą retrievedSecret.getValue().
Usuń sekret
Na koniec usuńmy sekret z magazynu kluczy za pomocą metody `secretClient.beginDeleteSecret`.
Usuwanie wpisu tajnego to długotrwała operacja, dla której można sondować jego postęp lub czekać na jego zakończenie.
SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();
Możesz sprawdzić, czy tajemnica została usunięta za pomocą polecenia az keyvault secret show:
az keyvault secret show --vault-name <vault-name> --name mySecret
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.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.");
}
}
Dalsze kroki
W tym przewodniku szybkiego startu utworzono magazyn kluczy, zapisano tajemnicę, odczytano ją, a następnie usunięto. Aby dowiedzieć się więcej o usłudze Key Vault i sposobie jej integracji z aplikacjami, przejdź do tych artykułów.
- Przeczytaj przegląd usługi Azure Key Vault
- Zobacz przewodnik dla deweloperów usługi Azure Key Vault
- Jak zabezpieczyć dostęp do magazynu kluczy
- Przegląd najlepszych praktyk dotyczących zabezpieczeń specyficznych dla tajemnic