Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mulai menggunakan pustaka klien rahasia Azure Key Vault untuk JavaScript. Azure Key Vault adalah layanan awan yang menyediakan penyimpanan aman untuk rahasia. Anda dapat menyimpan kunci, kata sandi, sertifikat, dan rahasia lainnya dengan aman. Brankas kunci Azure dapat dibuat dan dikelola melalui portal Microsoft Azure. Dalam panduan memulai cepat ini, Anda mempelajari cara membuat, mengakses, dan menghapus rahasia dari brankas kunci Azure menggunakan pustaka klien JavaScript.
Sumber daya pustaka klien Key Vault:
Dokumentasi referensi API | Kode sumber pustaka | Paket (npm)
Untuk informasi selengkapnya tentang Key Vault dan rahasia, lihat:
Prasyarat
- Langganan Azure - buat satu secara gratis.
- Node.js LTS saat ini.
- Azure CLI
Prasyarat
- Langganan Azure - buat satu secara gratis.
- Node.js LTS saat ini.
- TypeScript 5+
- Azure CLI.
Panduan mulai cepat ini mengasumsikan bahwa Anda menjalankan Azure CLI.
Masuk ke Azure
Jalankan perintah
login.az loginJika 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.
Buat grup sumber daya dan Key Vault
Gunakan perintah
az group createuntuk membuat grup sumber daya:az group create --name "myResourceGroup" --location "EastUS"Anda dapat mengubah "EastUS" ke lokasi yang lebih dekat dengan Anda, jika Anda mau.
Gunakan
az keyvault createuntuk membuat key vault:az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection trueGanti
<vault-name>dengan nama yang unik di seluruh Azure. Anda biasanya menggunakan nama pribadi atau perusahaan bersama dengan nomor dan pengidentifikasi lain.
Memberikan akses ke key vault Anda
Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran untuk "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah az role assignment create Azure CLI.
az role assignment create --role "Key Vault Secrets 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).
Membuat aplikasi Node.js baru
Buat aplikasi Node.js yang menggunakan brankas kunci Anda.
Di terminal, buat folder bernama
key-vault-node-appdan ubah ke folder itu:mkdir key-vault-node-app && cd key-vault-node-appBuat proyek Node.js baru:
npm init -y
Menginstal paket Key Vault
Menggunakan terminal, instal pustaka klien rahasia Azure Key Vault, @azure/keyvault-secrets untuk Node.js.
npm install @azure/keyvault-secretsInstal pustaka klien Azure Identity, @azure/identity untuk mengautentikasi ke Key Vault.
npm install @azure/identity
Atur variabel lingkungan
Aplikasi ini menggunakan titik akhir brankas kunci sebagai variabel lingkungan yang disebut KEY_VAULT_URL.
set KEY_VAULT_URL=<key-vault-endpoint>
Mengautentikasi dan membuat klien
Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi.
Menggunakan metode DefaultAzureCredential yang disediakan oleh pustaka klien Azure Identity 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 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 melakukan autentikasi ke Key Vault menggunakan kredensial pengguna 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 kode ini, titik akhir brankas kunci Anda digunakan untuk membuat klien brankas kunci. Format titik akhir terlihat seperti https://<vault-name>.vault.azure.net tetapi dapat berubah untuk sovereign cloud. Untuk informasi selengkapnya tentang mengautentikasi ke brankas kunci, lihat Panduan Pengembang.
Contoh kode
Sampel kode di bawah ini akan memperlihatkan cara membuat klien, mengatur rahasia, menampilkan rahasia, dan menghapus rahasia.
Kode ini menggunakan kelas dan metode Rahasia Key Vault berikut:
Menyiapkan kerangka kerja aplikasi
Buat file teks baru dan tempel kode berikut ke file index.js.
const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // DefaultAzureCredential automatically uses managed identity in Azure environments. // For local development, it uses credentials from Azure CLI, Azure PowerShell, or environment variables. // See: https://learn.microsoft.com/javascript/api/@azure/identity/defaultazurecredential const credential = new DefaultAzureCredential(); const keyVaultUrl = process.env["KEY_VAULT_URL"]; if(!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); const client = new SecretClient(keyVaultUrl, credential); // Create a secret // The secret can be a string of any kind. For example, // a multiline text block such as an RSA private key with newline characters, // or a stringified JSON object, like `JSON.stringify({ mySecret: 'MySecretValue'})`. const uniqueString = new Date().getTime(); const secretName = `secret${uniqueString}`; const result = await client.setSecret(secretName, "MySecretValue"); console.log("result: ", result); // Read the secret we created const secret = await client.getSecret(secretName); console.log("secret: ", secret); // Update the secret with different attributes const updatedSecret = await client.updateSecretProperties(secretName, result.properties.version, { enabled: false }); console.log("updated secret: ", updatedSecret); // Delete the secret immediately without ability to restore or purge. await client.beginDeleteSecret(secretName); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Jalankan aplikasi sampel
Jalankan aplikasi:
node index.jsMetode buat dan dapatkan menghasilkan objek JSON lengkap untuk rahasia:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Metode pembaruan menghasilkan pasangan nama/nilai properti:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Buat file teks baru dan tempelkan kode berikut ke dalam file index.ts .
import { SecretClient, KeyVaultSecret, SecretProperties, } from "@azure/keyvault-secrets"; import { DefaultAzureCredential } from "@azure/identity"; import "dotenv/config"; // Passwordless credential const credential = new DefaultAzureCredential(); // Get Key Vault name from environment variables // such as `https://${keyVaultName}.vault.azure.net` const keyVaultUrl = process.env.KEY_VAULT_URL; if (!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); function printSecret(secret: KeyVaultSecret): void { const { name, value, properties } = secret; const { enabled, expiresOn, createdOn } = properties; console.log("Secret: ", { name, value, enabled, expiresOn, createdOn }); } function printSecretProperties(secret: SecretProperties): void { const { name, enabled, expiresOn, createdOn } = secret; console.log("Secret: ", { name, enabled, expiresOn, createdOn }); } async function main(): Promise<void> { // Create a new SecretClient const client = new SecretClient(keyVaultUrl, credential); // Create a unique secret name const uniqueString = new Date().getTime().toString(); const secretName = `secret${uniqueString}`; // Create a secret const createSecretResult = await client.setSecret( secretName, "MySecretValue" ); printSecret(createSecretResult); // Get the secret by name const getSecretResult = await client.getSecret(secretName); printSecret(getSecretResult); // Update properties const updatedSecret = await client.updateSecretProperties( secretName, getSecretResult.properties.version, { enabled: false, } ); printSecretProperties(updatedSecret); // Delete secret (without immediate purge) const deletePoller = await client.beginDeleteSecret(secretName); await deletePoller.pollUntilDone(); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Jalankan aplikasi sampel
Buat aplikasi TypeScript:
tscJalankan aplikasi:
node index.jsMetode buat dan dapatkan menghasilkan objek JSON lengkap untuk rahasia:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Metode pembaruan menghasilkan pasangan nama/nilai properti:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Mengintegrasikan dengan App Configuration
SDK Azure menyediakan metode pembantu, parseKeyVaultSecretIdentifier, untuk mengurai ID Rahasia Key Vault yang diberikan. Ini diperlukan jika Anda menggunakan referensi App Configuration ke Key Vault. App Config menyimpan ID Rahasia Key Vault. Anda memerlukan metode parseKeyVaultSecretIdentifier untuk menguraikan ID tersebut agar mendapatkan nama rahasia. Setelah mendapatkan nama rahasia, Anda dapat memperoleh nilai rahasia saat ini menggunakan kode dari panduan memulai cepat ini.
Langkah berikutnya
Dalam panduan cepat ini, Anda telah membuat brankas kunci, menyimpan rahasia, dan mengambil kembali rahasia tersebut. Untuk mempelajari selengkapnya tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lihat artikel di bawah ini.