Compartilhar via

开始使用 JavaScript 中的 Azure Key Vault 密钥

本文介绍如何使用适用于 JavaScript 的 Azure Key Vault 密钥客户端库连接到Azure Key Vault。 连接后,你的代码可以操作保管库中的密钥。

API 参考文档 | Package (npm) | 库源代码 | 示例 | 反馈

先决条件

设置您的项目

  1. 打开命令提示符并切换至项目文件夹。 将 YOUR-DIRECTORY 更改为你的文件夹名称:

    cd YOUR-DIRECTORY
    
  2. 如果目录中没有 package.json 文件,请初始化project以创建该文件:

    npm init -y
    
  3. 安装适用于 JavaScript 的Azure Key Vault密钥客户端库:

    npm install @azure/keyvault-keys
    
  4. 如果要使用 Microsoft Entra ID 的无密码连接,请安装适用于 JavaScript 的标识客户端库Azure:

    npm install @azure/identity
    

授权访问和连接到密钥保管库

Microsoft Entra ID通过管理连接标识(托管标识)提供最安全的连接。 这种无密码功能使你可以开发不需要存储在代码中的任何密钥的应用程序。

在以编程方式对Azure进行身份验证以使用Azure Key Vault密钥之前,请确保设置环境。

Azure SDK for JavaScript 凭据流图表。

开发人员应安装 Azure CLI,并使用 az login 命令以交互方式登录Azure,之后再在代码中使用 DefaultAzureCredential。

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

生成应用程序

当你生成应用程序时,你的代码将与两种类型的资源交互:

  • KeyVaultKey,其中包括:
    • ID、名称和值。
    • 允许的操作。
    • 类型,如ECEC-HSMRSARSA-HSMoctoct-HSM
    • 将属性作为关键属性
  • KeyProperties,其中包括密钥的元数据,例如其名称、版本、标记、过期数据以及是否启用密钥。

如果需要 KeyVaultKey 的值,请使用返回 KeyVaultKey的方法:

对象模型

适用于 JavaScript 的Azure Key Vault密钥客户端库包含以下客户端:

  • KeyClient:KeyClient 对象是 SDK 中的顶部对象。 此客户端可用于执行密钥管理任务,例如创建、轮换、删除和列出密钥。
  • CryptographyClient允许加密、解密、签名、验证、包装和解包密钥。

显示客户端库中 KeyClient 和 CryptographicClient 之间关系的概念图。

创建 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.cn`,
    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.cn`,
    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);
}

另请参阅

后续步骤