Panduan Memulai: Pustaka klien Azure Key Vault Key untuk Java

Mulailah dengan pustaka klien kunci Azure Key Vault untuk Java. Ikuti langkah-langkah berikut untuk menginstal paket dan mencoba contoh kode untuk tugas dasar.

Sumber daya tambahan:

Prerequisites

Panduan memulai cepat ini mengasumsikan Anda menjalankan Azure CLI dan Apache Maven di jendela terminal Linux.

Persiapan

Panduan memulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI untuk mengautentikasi pengguna ke Layanan Azure. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi lebih lanjut, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

  1. Jalankan perintah login.

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.

    Jika tidak, buka halaman peramban di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

  2. 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-keys-java.

mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
                       -DartifactId=akv-keys-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.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] ------------------------------------------------------------------------

Ubah direktori Anda ke folder akv-keys-java/ yang baru dibuat.

cd akv-keys-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-keys</artifactId>
      <version>4.10.6</version>
    </dependency>

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

Buat grup sumber daya dan Key Vault

Panduan cepat ini menggunakan brankas kunci Azure yang dibuat sebelumnya. Anda dapat membuat brankas kunci dengan mengikuti langkah-langkah dalam panduan cepat ini:

Atau, Anda dapat menjalankan perintah Azure CLI ini.

Important

Setiap key vault harus memiliki nama yang unik. Ganti <vault-name> dengan nama brankas kunci Anda dalam contoh berikut.

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

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

Memberikan akses ke key vault 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 Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Ganti <upn>, <subscription-id>, dan <vault-name> dengan nilai aktual Anda. Jika Anda menggunakan nama grup sumber daya yang berbeda, ganti "myResourceGroup" juga. 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=<vault-name>

Windows PowerShell

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

macOS atau Linux

export KEY_VAULT_NAME=<vault-name>

Model objek

Pustaka klien Kunci Azure Key Vault untuk Java memungkinkan Anda mengelola kunci. Bagian Contoh kode memperlihatkan cara membuat klien, membuat kunci, mengambil kunci, dan menghapus kunci.

Seluruh aplikasi konsol disediakan dalam Sample code.

Contoh kode

Menambahkan direktif

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.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;

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 mana yang harus digunakan pada saat runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan.

Dalam panduan cepat ini, DefaultAzureCredential mengautentikasi ke brankas kunci menggunakan kredensial dari 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, Mesin Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.

Dalam contoh ini, nama brankas kunci Anda diperluas menjadi URI brankas kunci, dalam format https://.vault.azure.net. Untuk informasi selengkapnya tentang autentikasi ke Key Vault, lihat Panduan Pengembang.

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

Membuat kunci

Setelah aplikasi diautentikasi, Anda dapat membuat kunci di brankas kunci menggunakan metode keyClient.createKey. Ini memerlukan nama untuk kunci dan jenis kunci. Kami telah menetapkan nilai "myKey" ke keyName variabel dan menggunakan RSA KeyType dalam sampel ini.

keyClient.createKey(keyName, KeyType.RSA);

Anda dapat memverifikasi bahwa kunci telah diatur dengan perintah az keyvault key show:

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

Mengambil kunci

Kini Anda dapat mengambil kembali kunci yang sebelumnya telah dibuat dengan metode keyClient.getKey.

KeyVaultKey retrievedKey = keyClient.getKey(keyName);

Anda sekarang dapat mengakses detail kunci yang diambil dengan operasi seperti retrievedKey.getProperties, retrievedKey.getKeyOperations dan lain-lain.

Menghapus kunci

Terakhir, mari kita hapus kunci dari brankas kunci Anda dengan metode keyClient.beginDeleteKey.

Penghapusan kunci adalah operasi yang berlangsung lama. Anda dapat memeriksa kemajuannya atau menunggunya hingga selesai.

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

Anda dapat memverifikasi bahwa kunci telah dihapus dengan perintah az keyvault key show:

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

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"

Contoh kode

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

Langkah selanjutnya

Dalam panduan cepat ini, Anda telah membuat brankas kunci, membuat kunci, mengambilnya, dan kemudian menghapusnya. Untuk mempelajari lebih lanjut tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lanjutkan ke artikel ini.