在 JavaScript 中開始使用 Azure Key Vault 金鑰
本文說明如何使用適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫連線到 Azure Key Vault。 連線後,您的程式碼就可以在保存庫中的金鑰上運作。
API 參考 | 套件 (npm) | 程式庫原始程式碼 | 範例 | 提供意見反應
必要條件
- Azure 訂用帳戶 - 建立免費帳戶。
- Azure Key Vault 執行個體。 檢閱 Key Vault 上的存取原則,以包含程式碼中執行的特定工作所需權限。
- Node.js 版本 LTS
設定您的專案
開啟命令提示字元,並變更至您的專案資料夾。 將
YOUR-DIRECTORY
變更為您的資料夾名稱:cd YOUR-DIRECTORY
如果您的目錄中還沒有
package.json
檔案,請初始化該專案以建立檔案:npm init -y
安裝適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫:
npm install @azure/keyvault-keys
如果您想要透過 Microsoft Entra ID 使用無密碼連線,請安裝適用於 JavaScript 的 Azure 身分識別用戶端程式庫:
npm install @azure/identity
授權存取並連線至 Key Vault
Microsoft Entra ID 藉由管理連線身分識別 (受控識別) 提供最安全的連線。 此無密碼功能可讓您開發不需要在程式碼中儲存任何金鑰的應用程式。
在以程式設計方式向 Azure 進行驗證以使用 Azure Key Vault 金鑰之前,請確定您已設定環境。
建置您的 應用程式
當您建置應用程式時,您的程式碼會與兩種類型的資源互動:
- KeyVaultKey,其中包括:
- 識別碼、名稱和值。
- 允許的作業。
EC
、EC-HSM
、RSA
、RSA-HSM
、oct
、oct-HSM
等類型。- KeyProperties 等屬性
- KeyProperties,其中包含金鑰的中繼資料,例如其名稱、版本、標籤、到期日,以及是否啟用。
如果您需要 KeyVaultKey 的值,請使用可傳回 KeyVaultKey 的方法:
物件模型
適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫包含下列用戶端:
- KeyClient:KeyClient 物件是 SDK 中的最上層物件。 此用戶端可讓您執行金鑰管理工作,例如建立、輪替、刪除和列出金鑰。
- CryptographyClient 可讓您加密、解密、簽署、驗證、包裝和解除包裝金鑰。
建立 KeyClient 物件
設定本機環境和 Key Vault 授權之後,請建立 JavaScript 檔案,其中包含 @azure/identity 和 @azure/keyvault-keys 套件。 建立例如 DefaultAzureCredential 等認證,以實作對保存庫的無密碼連線。 使用該認證向 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");
建立 CryptographyClient 物件
CryptographyClient 物件是 SDK 中的操作物件,使用您的金鑰來執行加密、解密、簽署和驗證、包裝和解除包裝等動作。
使用 KeyClient 的身分識別認證及金鑰名稱來建立 CryptographyClient,以執行作業。
// 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);
}