在 JavaScript 中開始使用 Azure Key Vault 金鑰

本文說明如何使用適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫連線到 Azure Key Vault。 連線後,您的程式碼就可以在保存庫中的金鑰上運作。

API 參考 | 套件 (npm) | 程式庫原始程式碼 | 範例 | 提供意見反應

必要條件

設定您的專案

  1. 開啟命令提示字元並變更至您的專案資料夾。 將 YOUR-DIRECTORY 變更為您的資料夾名稱:

    cd YOUR-DIRECTORY
    
  2. 如果您的目錄中還沒有 package.json 檔案,請初始化該專案以建立檔案:

    npm init -y
    
  3. 安裝適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫:

    npm install @azure/keyvault-keys
    
  4. 如果您想要透過 Microsoft Entra ID 使用無密碼連線,請安裝適用於 JavaScript 的 Azure 身分識別用戶端程式庫:

    npm install @azure/identity
    

授權存取並連線到 Key Vault

Microsoft Entra ID 藉由管理連線身分識別 (受控識別) 提供最安全的連線。 此無密碼功能可讓您開發不需要在程式碼中儲存任何金鑰的應用程式。

在以程式設計方式向 Azure 進行驗證以使用 Azure Key Vault 金鑰之前,請確定您已設定環境。

Diagram of Azure SDK for JavaScript credential flow.

開發人員應該安裝 Azure CLI,並使用 az login 命令以互動方式登入 Azure,然後在程式碼中使用 DefaultAzureCredential。

az login

建置您的 應用程式

當您建置應用程式時,您的程式碼會與兩種類型的資源互動:

  • KeyVaultKey,其中包括:
    • 識別碼、名稱和值。
    • 允許的作業。
    • ECEC-HSMRSARSA-HSMoctoct-HSM 等類型。
    • KeyProperties 等屬性
  • KeyProperties,其中包含金鑰的中繼資料,例如其名稱、版本、標籤、到期日,以及是否啟用。

如果您需要 KeyVaultKey 的值,請使用可傳回 KeyVaultKey 的方法:

物件模型

適用於 JavaScript 的 Azure Key Vault 金鑰用戶端程式庫包含下列用戶端:

  • KeyClient:KeyClient 物件是 SDK 中的最上層物件。 此用戶端可讓您執行金鑰管理工作,例如建立、輪替、刪除和列出金鑰。
  • CryptographyClient 可讓您加密、解密、簽署、驗證、包裝和解除包裝金鑰。

Conceptual diagram showing the relationship within the client library between the KeyClient and 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);
}

另請參閱

下一步