Mulai menggunakan kunci Azure Key Vault di JavaScript

Artikel ini memperlihatkan kepada Anda cara menyambungkan ke Azure Key Vault dengan menggunakan pustaka klien kunci Azure Key Vault untuk JavaScript. Setelah tersambung, kode Anda dapat beroperasi pada kunci di brankas.

Paket referensi | API (npm) | Sampel | kode | sumber pustaka Berikan umpan balik

Prasyarat

Menyiapkan proyek Anda

  1. Buka perintah dan ubah ke folder proyek Anda. Ubah YOUR-DIRECTORY ke nama folder Anda:

    cd YOUR-DIRECTORY
    
  2. Jika Anda belum memiliki file package.json di direktori Anda, inisialisasi proyek untuk membuat file:

    npm init -y
    
  3. Instal pustaka klien kunci Azure Key Vault untuk JavaScript:

    npm install @azure/keyvault-keys
    
  4. Jika Anda ingin menggunakan koneksi tanpa kata sandi menggunakan ID Microsoft Entra, instal pustaka klien Azure Identity untuk JavaScript:

    npm install @azure/identity
    

Mengotorisasi akses dan menyambungkan ke Key Vault

MICROSOFT Entra ID menyediakan koneksi yang paling aman dengan mengelola identitas koneksi (identitas terkelola). Fungsionalitas tanpa kata sandi ini memungkinkan Anda mengembangkan aplikasi yang tidak memerlukan kunci apa pun yang disimpan dalam kode.

Sebelum mengautentikasi secara terprogram ke Azure untuk menggunakan kunci Azure Key Vault, pastikan Anda menyiapkan lingkungan Anda.

Diagram of Azure SDK for JavaScript credential flow.

Pengembang harus menginstal Azure CLI dan masuk secara interaktif dengan perintah az login untuk masuk ke Azure sebelum menggunakan DefaultAzureCredential dalam kode.

az login

Bangun aplikasi Anda

Saat Anda membangun aplikasi, kode Anda berinteraksi dengan dua jenis sumber daya:

  • KeyVaultKey, yang meliputi:
    • ID, nama, dan nilai.
    • Operasi yang diizinkan.
    • Ketik seperti EC, , EC-HSMRSA, RSA-HSM, oct, oct-HSM.
    • Properti sebagai KeyProperties
  • KeyProperties, yang mencakup metadata kunci, seperti nama, versi, tag, data kedaluwarsa, dan apakah itu diaktifkan.

Jika Anda memerlukan nilai KeyVaultKey, gunakan metode yang mengembalikan KeyVaultKey:

Model objek

Pustaka klien kunci Azure Key Vault untuk JavaScript menyertakan klien berikut:

  • KeyClient: Objek KeyClient adalah objek teratas di SDK. Klien ini memungkinkan Anda untuk melakukan tugas manajemen kunci seperti membuat, memutar, menghapus, dan mencantumkan kunci.
  • CryptographyClient memungkinkan Anda mengenkripsi, mendekripsi, menandatangani, memverifikasi, membungkus, dan membongkar kunci.

Conceptual diagram showing the relationship within the client library between the KeyClient and CryptographyClient.

Membuat objek KeyClient

Setelah lingkungan lokal dan otorisasi Key Vault Anda disiapkan, buat file JavaScript, yang mencakup @azure/identitas dan paket kunci @azure/keyvault . Buat kredensial, seperti DefaultAzureCredential, untuk menerapkan koneksi tanpa kata sandi ke vault Anda. Gunakan kredensial tersebut untuk mengautentikasi dengan objek KeyClient .

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import { KeyClient } from '@azure/keyvault-keys';  

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  );

// Get key
const key = await client.getKey("MyKeyName");

Membuat objek CryptographyClient

Objek CryptographyClient adalah objek operasional di SDK, menggunakan kunci Anda untuk melakukan tindakan seperti mengenkripsi, mendekripsi, menandatangani dan memverifikasi, membungkus, dan membuka bungkus.

Gunakan kredensial Identitas Anda dari KeyClient Anda, bersama dengan nama kunci, untuk membuat CryptographyClient untuk melakukan operasi.

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import {
  CryptographyClient,
  KeyClient,
  KnownEncryptionAlgorithms,
  RsaEncryptParameters
} from '@azure/keyvault-keys'; 

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  ); 

// Get key
const key = await client.getKey("MyKeyName");

if (key?.name) {

    // get encryption client
    const encryptClient = new CryptographyClient(key, credential);

    // encrypt data
    const encryptParams = { 
        algorithm: KnownEncryptionAlgorithms.RSAOaep256,
        plaintext: Buffer.from("Hello world!")
    }
    const encryptResult = await encryptClient.encrypt(encryptParams);
}

Baca juga

Langkah berikutnya