Tutorial: Menggunakan referensi Key Vault di aplikasi Java Spring

Dalam tutorial ini, Anda mempelajari cara menggunakan layanan Azure App Configuration bersama dengan Azure Key Vault. App Configuration dan Key Vault adalah layanan pelengkap yang digunakan berdampingan di sebagian besar penyebaran aplikasi.

App Configuration membantu Anda menggunakan layanan bersama-sama dengan membuat kunci yang mereferensikan nilai yang disimpan di Key Vault. Saat App Configuration membuat kunci tersebut, App Configuration menyimpan URI nilai Vault Utama daripada nilai itu sendiri.

Aplikasi Anda menggunakan penyedia klien App Configuration untuk mengambil referensi Key Vault, seperti halnya untuk kunci lain yang disimpan dalam App Configuration. Dalam hal ini, nilai yang disimpan dalam App Configuration adalah URI yang mereferensikan nilai di Key Vault. Nilai ini bukan nilai Key Vault atau info masuk. Karena penyedia klien mengenali kunci sebagai referensi Key Vault, penyedia klien menggunakan Key Vault untuk mengambil nilainya.

Aplikasi Anda bertanggung jawab untuk mengautentikasi dengan benar ke App Configuration dan Key Vault. Dua layanan tersebut tidak berkomunikasi secara langsung.

Tutorial ini menunjukkan kepada Anda cara mengimplementasikan referensi Key Vault dalam kode Anda. Tutorial dibangun pada aplikasi web yang diperkenalkan di mulai cepat. Sebelum melanjutkan, selesaikan Membuat aplikasi Java Spring dengan Azure App Configuration terlebih dahulu.

Anda dapat menggunakan penyunting kode apa pun untuk melakukan langkah-langkah dalam tutorial ini. Misalnya, Visual Studio Code adalah editor kode lintas platform yang tersedia untuk sistem operasi Windows, macOS, dan Linux.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat kunci Azure App Configuration yang mereferensikan nilai yang disimpan di Key Vault.
  • Akses nilai kunci ini dari aplikasi Java Spring.

Prasyarat

Membuat vault

  1. Pilih opsi Buat sumber daya di pojok kiri atas portal Microsoft Azure:

    Cuplikan layar memperlihatkan opsi Buat sumber daya di portal Microsoft Azure.

  2. Dalam kotak pencarian, masukkan Key Vault.

  3. Dari daftar hasil, pilih Key Vaultsi di sebelah kiri.

  4. Di Brankas kunci, pilih Tambahkan.

  5. Pada bagian kanan Buat brankas kunci, berikan informasi berikut:

    • Pilih Langganan untuk memilih langganan.
    • Di Grup Sumber Daya, pilih Buat baru lalu masukkan nama grup sumber daya.
    • Di Nama brankas kunci, nama unik diperlukan. Untuk tutorial ini, masukkan Contoso-vault2.
    • Di daftar menurun Wilayah, pilih lokasi.
  6. Tinggalkan opsi Buat brankas kunci lainnya dengan nilai defaultnya.

  7. Pilih Buat.

Saat ini, akun Azure Anda adalah satu-satunya akun yang berwenang untuk mengakses brankas baru ini.

Cuplikan layar menunjukkan brankas kunci Anda.

Menambahkan rahasia ke Key Vault

Untuk menambahkan rahasia ke vault, Anda perlu mengambil hanya beberapa langkah tambahan. Dalam kasus ini, tambahkan pesan yang dapat Anda gunakan untuk menguji pengambilan Key Vault. Pesan bernama Pesan, dan Anda menyimpan nilai "Halo dari Key Vault" di dalamnya.

  1. Dari halaman properti Key Vault, pilih Rahasia.
  2. Pilih Hasilkan/Impor.
  3. Di panel Buat rahasia, masukkan nilai berikut ini:
    • Opsi unggah: Masukkan Manual.
    • Nama: Masukkan Pesan.
    • Nilai: Masukkan Halo dari Key Vault.
  4. Biarkan properti Buat rahasia yang lain dengan nilai defaultnya.
  5. Pilih Buat.

Menambahkan referensi Key Vault ke Azure App Configuration

  1. Masuk ke portal Microsoft Azure. Pilih Semua sumber daya, lalu pilih instans penyimpanan Azure App Configuration yang Anda buat di mulai cepat.

  2. Pilih Penjelajah Konfigurasi.

  3. Pilih + Buat>Referensi brankas kunci, lalu tetapkan nilai berikut:

    • Kunci: Pilih /application/config.keyvaultmessage
    • Label: Biarkan nilai ini kosong.
    • Langganan, Grup sumber daya, dan Brankas kunci: Masukkan nilai yang terkait dengan nilai yang ada di brankas kunci yang Anda buat di bagian sebelumnya.
    • Rahasia: Pilih rahasia bernama Pesan yang Anda buat di bagian sebelumnya.

Menyambungkan ke Key Vault

  1. Dalam tutorial ini, Anda menggunakan perwakilan layanan untuk autentikasi ke Key Vault. Untuk membuat perwakilan layanan, gunakan perintah az ad sp create-for-rbacAzure CLI:

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    Operasi ini menghasilkan serangkaian pasangan kunci/nilai:

    {
    "clientId": "7da18cae-779c-41fc-992e-0527854c6583",
    "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002",
    "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3",
    "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77",
    "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
    "resourceManagerEndpointUrl": "https://management.azure.com/",
    "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
    "galleryEndpointUrl": "https://gallery.azure.com/",
    "managementEndpointUrl": "https://management.core.windows.net/"
    }
    
  2. Jalankan perintah berikut untuk memungkinkan perwakilan layanan mengakses brankas kunci Anda:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Jalankan perintah berikut untuk mendapatkan ID objek Anda, lalu tambahkan ke Azure App Configuration.

    az ad sp show --id <clientId-of-your-service-principal>
    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. Buat variabel lingkungan AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, dan AZURE_TENANT_ID. Menggunakan nilai untuk perwakilan layanan yang ditampilkan di langkah-langkah sebelumnya. Di baris perintah, jalankan perintah berikut dan hidupkan ulang perintah untuk memungkinkan perubahan diterapkan:

    setx AZURE_CLIENT_ID "clientId"
    setx AZURE_CLIENT_SECRET "clientSecret"
    setx AZURE_TENANT_ID "tenantId"
    

    Jika Anda menggunakan Windows PowerShell, jalankan perintah berikut:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    Jika Anda menggunakan macOS atau Linux, jalankan perintah berikut:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

Catatan

Info masuk Key Vault ini hanya digunakan dalam aplikasi Anda. Aplikasi Anda diautentikasi langsung dengan Key Vault menggunakan info masuk ini tanpa melibatkan layanan Azure App Configuration. Key Vault memberikan autentikasi untuk aplikasi dan layanan Azure App Configuration Anda tanpa berbagi atau mengekspos kunci.

Perbarui kode Anda untuk menggunakan referensi Key Vault

  1. Buat variabel lingkungan bernama APP_CONFIGURATION_ENDPOINT. Mengatur nilainya ke titik akhir penyimpanan Azure App Configuration Anda. Anda dapat menemukan titik akhir pada bilah Kunci Akses di portal Microsoft Azure. Hidupkan ulang perintah untuk mengizinkan perubahan.

  2. Buka file konfigurasi Anda di folder sumber daya . Perbarui file ini untuk menggunakan nilai APP_CONFIGURATION_ENDPOINT. Hapus referensi ke string koneksi di file ini.

spring:
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

Catatan

Anda juga dapat menggunakan konfigurasi global Spring Cloud Azure untuk menyambungkan ke Key Vault.

  1. Buka MessageProperties.java. Tambahkan variabel baru bernama keyVaultMessage:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. Buka HelloController.java. Perbarui metode getMessage untuk menyertakan pesan yang diambil dari Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Bangun aplikasi Spring Boot Anda dengan Maven dan jalankan aplikasi, misalnya:

    mvn clean package
    mvn spring-boot:run
    
  4. Setelah aplikasi Anda berjalan, gunakan curl untuk menguji aplikasi Anda, misalnya:

    curl -X GET http://localhost:8080/
    

    Anda melihat pesan yang dimasukkan di penyimpanan Azure App Configuration. Anda juga melihat pesan yang dimasukkan di Key Vault.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak dapat dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.

Langkah berikutnya

Dalam tutorial ini, Anda membuat kunci Azure App Configuration yang mereferensikan nilai yang disimpan di Key Vault. Untuk pertanyaan lebih lanjut, lihat dokumentasi referensi, dokumentasi ini berisi semua detail tentang cara kerja pustaka Spring Cloud Azure App Configuration. Untuk mempelajari cara menggunakan fitur bendera di aplikasi Java Spring, lanjutkan ke tutorial berikutnya.