開始使用 JavaScript 中的 Azure Key Vault 鍵

本文將示範如何利用 Azure Key Vault 的 JavaScript 用戶端函式庫連接 Azure Key Vault。 一旦連接,你的程式碼就能在保險庫裡的鑰匙上操作。

API reference | Package (npm) | 函式庫原始碼 | Samples | Give feedback

先決條件

設定您的專案

  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 Identity 用戶端函式庫:

    npm install @azure/identity
    

授權存取並連接至金鑰保管庫

Microsoft Entra ID 透過管理連線身分識別(受控身分識別)來提供最安全的連線。 這種 無密碼 功能讓你能開發出不需要程式碼中任何金鑰的應用程式。

在程式化認證 Azure 以使用 Azure Key Vault 金鑰之前,務必先設定好環境。

Azure SDK for JavaScript 憑證流程圖。

開發者應該安裝 Azure CLI,並以 az login 指令在 Azure 中互動式登入,然後才能在程式碼中使用 DefaultAzureCredential。

az login

建置您的 應用程式

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

  • KeyVaultKey,包含:
    • ID、姓名和價值。
    • 允許的操作
    • 類型如 ECEC-HSMRSARSA-HSMoctoct-HSM、 。
    • 屬性作為 KeyProperties
  • KeyProperties,包含金鑰的元資料,例如名稱、版本、標籤、到期日資料,以及是否啟用。

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

物件模型

Azure Key Vault 的 JavaScript 客戶端庫中包含以下客戶端:

  • KeyClient:KeyClient 物件是 SDK 中的頂端物件。 此用戶端允許您執行鍵值管理任務,如建立、旋轉、刪除及列出鍵。
  • CryptographyClient 允許你加密、解密、簽署、驗證、封裝及展開金鑰。

概念圖顯示 KeyClient 與 CryptographyClient 在用戶端函式庫內的關係。

建立 KeyClient 物件

當你的本地環境和 金鑰保存庫 授權建立好後,建立一個 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);
}

另請參閱

後續步驟