Tutorial: Menggunakan Azure Key Vault dengan komputer virtual di JavaScript

Azure Key Vault membantu Anda melindungi kunci, rahasia, dan sertifikat, seperti kunci API dan string koneksi database.

Dalam tutorial ini, Anda menyiapkan aplikasi Node.js untuk membaca informasi dari Azure Key Vault dengan menggunakan identitas terkelola untuk sumber daya Azure. Anda akan mempelajari cara untuk:

  • Buat penyimpanan kunci
  • Menyimpan rahasia di Key Vault
  • Membuat komputer virtual Linux Azure
  • Mengaktifkan identitas terkelola untuk komputer virtual
  • Berikan izin yang diperlukan untuk aplikasi konsol untuk membaca data dari Key Vault
  • Mengambil data rahasia dari Key Vault

Sebelum memulai, baca konsep dasar Key Vault.

Jika Anda tidak memiliki langganan Azure, buat akun free.

Prerequisites

Untuk Windows, Mac, dan Linux:

  • Git
  • Versi Azure CLI saat ini. Jalankan az --version untuk memeriksa versi yang diinstal.

Masuk ke Azure

Masuk ke Azure dengan Azure CLI:

az login

Buat grup sumber daya dan Key Vault.

Panduan mulai cepat ini menggunakan brankas kunci Azure yang sudah 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

Mengisi brankas kunci Anda dengan rahasia

Mari membuat rahasia yang disebut mySecret, dengan nilai Berhasil!. Rahasia mungkin berupa kata sandi, string koneksi SQL, atau informasi lain yang Anda butuhkan untuk menjaga keamanan dan ketersediaan aplikasi Anda.

Untuk menambahkan rahasia ke brankas kunci yang baru dibuat, gunakan perintah berikut:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Membuat mesin virtual

Buat VM bernama myVM dengan menggunakan salah satu metode berikut:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Portal Azure Portal Azure

Untuk membuat VM Linux dengan menggunakan Azure CLI, gunakan perintah az vm create. Contoh berikut menambahkan akun pengguna bernama azureuser. Parameter --generate-ssh-keys menghasilkan kunci SSH dan menyimpannya di lokasi kunci default (~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Catat nilai publicIpAddress dalam output.

Menetapkan identitas ke komputer virtual

Buat identitas terkelola yang ditetapkan sistem untuk VM dengan menggunakan perintah az vm identity assign :

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Perhatikan identitas yang ditetapkan sistem dalam output:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Menetapkan izin ke identitas komputer virtual

Berikan peran Key Vault Secrets User kepada identitas terkelola VM pada Key Vault:

az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>

Masuk ke VM

Untuk masuk ke VM, ikuti instruksi di Sambungkan dan masuk ke komputer virtual Azure yang menjalankan Linux atau Sambungkan dan masuk ke komputer virtual Azure yang berjalan Windows.

Untuk masuk ke VM Linux, gunakan ssh dengan <public-ip-address> dari langkah Buat komputer virtual :

ssh azureuser@<public-ip-address>

Pasang Node.js dan pustaka npm pada VM

Pada VM, instal dua pustaka npm yang digunakan skrip sampel: @azure/keyvault-secrets dan @azure/identity.

  1. Di terminal SSH, instal Node.js dan npm:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Buat direktori aplikasi dan inisialisasi paket Node.js:

    mkdir app && cd app && npm init -y
    
  3. Instal paket Azure dengan npm:

    npm install @azure/keyvault-secrets @azure/identity
    

Membuat dan mengedit sampel file JavaScript

  1. Pada VM di app direktori, buat file JavaScript bernama index.js:

    touch index.js
    
  2. Buka file dengan editor teks Nano:

    nano index.js
    
  3. Tempelkan kode berikut ke editor, ganti <vault-name> dengan nama brankas kunci Anda:

    // index.js
    
    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    // Your Azure Key Vault name and secret name
    const keyVaultName = "<vault-name>";
    const keyVaultUri = `https://${keyVaultName}.vault.azure.net`;
    const secretName = "mySecret";
    
    // Authenticate to Azure
    const credential = new DefaultAzureCredential();
    const client = new SecretClient(keyVaultUri, credential);
    
    // Get Secret with Azure SDK for JS
    const getSecret = async (secretName) => {
    
        return (await client.getSecret(secretName)).value;
    }
    
    getSecret(secretName).then(secretValue => {
        console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`);
    }).catch(err => {
        console.log(err);
    })
    
  4. Simpan file dengan Ctrl+X.

  5. Pada prompt Save modified buffer?, masukkan y.

  6. Pada prompt File Name to Write: index.js, tekan Enter.

Jalankan contoh Node.js

Jalankan index.js. Jika semuanya dikonfigurasi dengan benar, aplikasi akan mencetak nilai rahasia:

node index.js

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Membersihkan sumber daya

Ketika Anda tidak lagi membutuhkannya, hapus VM dan brankas kunci. Cara tercepat adalah menghapus grup sumber daya milik mereka:

az group delete -g "myResourceGroup"

Langkah selanjutnya

Azure Key Vault REST API