Mulai Cepat: Pustaka klien rahasia Azure Key Vault untuk Java
Mulai menggunakan Pustaka klien rahasia Azure Key Vault untuk Java. Ikuti langkah-langkah berikut untuk menginstal paket dan mencoba contoh kode untuk tugas dasar.
Tip
Jika Anda bekerja dengan sumber daya Rahasia Azure Key Vault dalam aplikasi Spring, sebaiknya pertimbangkan Spring Cloud Azure sebagai alternatif. Spring Cloud Azure adalah proyek sumber terbuka yang menyediakan integrasi Spring tanpa hambatan dengan layanan Azure. Untuk mempelajari selengkapnya tentang Spring Cloud Azure, dan untuk melihat contoh menggunakan Rahasia Key Vault, lihat Memuat rahasia dari Azure Key Vault di aplikasi Spring Boot.
Sumber daya tambahan:
Prasyarat
- Langganan Azure - membuat secara gratis.
- Java Development Kit (JDK) versi 8 atau yang lebih baru
- Apache Maven
- Azure CLI
Mulai cepat ini mengasumsikan Anda menjalankan Azure CLI dan Apache Maven di jendela terminal Linux.
Menyiapkan
Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI untuk mengautentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.
Masuk ke Azure
Jalankan perintah
login
.az login
Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.
Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.
Masuk menggunakan kredensial akun Anda di browser.
Membuat aplikasi konsol Java baru
Di jendela konsol, gunakan perintah mvn
untuk membuat aplikasi konsol Java baru dengan nama akv-secrets-java
.
mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
-DartifactId=akv-secrets-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Output dari pembuatan proyek akan terlihat seperti berikut:
[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] ------------------------------------------------------------------------
Ubah direktori Anda ke folder akv-secrets-java/
yang baru dibuat.
cd akv-secrets-java
Pasang paket
Buka file pom.xml di editor teks Anda. Tambahkan elemen dependensi berikut ke grup dependensi.
<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>
Buat grup sumber daya dan brankas kunci
Mulai cepat ini menggunakan brankas kunci Azure yang dibuat sebelumnya. Anda dapat membuat key vault dengan mengikuti langkah-langkah di mulai cepat Azure CLI, mulai cepat Azure PowerShell, atau mulai cepat portal Microsoft Azure.
Atau, Anda dapat menjalankan perintah Azure CLI atau Azure PowerShell ini.
Penting
Setiap key vault harus memiliki nama yang unik. Ganti <your-unique-keyvault-name> dengan nama brankas kunci Anda dalam contoh berikut.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Memberikan akses ke brankas kunci Anda
Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran ke "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah 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>"
Ganti <upn>, <subscription-id>, <resource-group-name> , dan <your-unique-keyvault-name> dengan nilai aktual Anda. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).
Atur variabel lingkungan
Aplikasi ini menggunakan nama brankas kunci Anda sebagai variabel lingkungan yang bernama KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS atau Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Model objek
Pustaka klien Rahasia Azure Key Vault Secret untuk Java memungkinkan Anda mengelola rahasia. Bagian Contoh kode memperlihatkan cara membuat klien, mengatur rahasia, menampilkan rahasia, dan menghapus rahasia.
Contoh kode
Menambahkan instruksi
Tambahkan instruksi berikut di bagian atas kode Anda:
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;
Mengautentikasi dan membuat klien
Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. Menggunakan kelas DefaultAzureCredential adalah pendekatan yang direkomendasikan untuk menerapkan koneksi tanpa kata sandi ke layanan Azure dalam kode Anda. DefaultAzureCredential
mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan.
Dalam mulai cepat ini, DefaultAzureCredential
autentikasi ke brankas kunci menggunakan kredensial pengguna pengembangan lokal yang masuk ke Azure CLI. Saat aplikasi disebarkan ke Azure, kode yang sama DefaultAzureCredential
dapat secara otomatis menemukan dan menggunakan identitas terkelola yang ditetapkan ke App Service, Komputer Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.
Dalam contoh ini, nama brankas kunci Anda diperluas ke URI brankas kunci, dalam format https://<your-key-vault-name>.vault.azure.net
. Untuk informasi selengkapnya tentang mengautentikasi ke brankas kunci, lihat Panduan Pengembang.
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();
Menyimpan rahasia
Setelah aplikasi diautentikasi, Anda dapat memasukkan rahasia ke brankas kunci menggunakan metode secretClient.setSecret
. Ini memerlukan nama untuk rahasia—kami telah menetapkan nilai "mySecret" ke secretName
variabel dalam sampel ini.
secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));
Anda dapat memverifikasi bahwa rahasia telah diatur dengan perintah az keyvault secret show:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Menampilkan rahasia
Kini Anda dapat menampilkan rahasia yang telah diatur sebelumnya dengan metode secretClient.getSecret
.
KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);
Kini Anda dapat mengakses nilai rahasia yang ditampilkan dengan retrievedSecret.getValue()
.
Menghapus rahasia
Terakhir, mari kita hapus rahasia dari brankas kunci Anda dengan metode secretClient.beginDeleteSecret
.
Penghapusan rahasia adalah operasi yang berlangsung lama. Anda dapat memeriksa kemajuannya atau menunggunya hingga selesai.
SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();
Anda dapat memverifikasi bahwa rahasia telah dihapus dengan perintah az keyvault secret show:
az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret
Membersihkan sumber daya
Jika sudah tidak diperlukan, Anda dapat menggunakan Azure CLI atau Azure PowerShell untuk menghapus brankas kunci dan grup sumber daya terkait.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Kode Sampel
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.");
}
}
Langkah berikutnya
Dalam mulai cepat ini, Anda membuat brankas kunci, menyimpan rahasia, mengambilnya, lalu menghapusnya. Untuk mempelajari lebih lanjut tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lanjutkan ke artikel ini.