Начало работы с ключами Azure Key Vault в JavaScript

В этой статье показано, как подключиться к Azure Key Vault с помощью клиентской библиотеки ключей Azure Key Vault для JavaScript. После подключения код может работать с ключами в хранилище.

Примеры | исходного кода | библиотеки с справочником | по API (npm) | Дают отзыв

Необходимые компоненты

Настройка проекта

  1. Откройте командную строку и перейдите в папку проекта. Измените YOUR-DIRECTORY имя папки:

    cd YOUR-DIRECTORY
    
  2. Если у вас в каталоге еще нет файла package.json, инициализируйте проект, чтобы создать файл:

    npm init -y
    
  3. Установите клиентскую библиотеку ключей Azure Key Vault для JavaScript:

    npm install @azure/keyvault-keys
    
  4. Если вы хотите использовать бессерверные подключения с помощью идентификатора Microsoft Entra, установите клиентскую библиотеку удостоверений Azure для JavaScript:

    npm install @azure/identity
    

Авторизация доступа и подключение к Key Vault

Идентификатор Microsoft Entra предоставляет наиболее безопасное подключение, управляя удостоверением подключения (управляемым удостоверением). Эта функция без пароля позволяет разрабатывать приложение, которое не требует ключей, хранящихся в коде.

Перед программной проверкой подлинности в Azure для использования ключей Azure Key Vault убедитесь, что вы настроили среду.

Diagram of Azure SDK for JavaScript credential flow.

Разработчик должен установить Azure CLI и войти в интерактивном режиме с помощью команды az login , чтобы войти в Azure, прежде чем использовать DefaultAzureCredential в коде.

az login

Сборка приложения

При создании приложения код взаимодействует с двумя типами ресурсов:

  • KeyVaultKey, который включает в себя:
    • Идентификатор, имя и значение.
    • Разрешенные операции.
    • Тип, например EC, , RSAEC-HSMRSA-HSM, oct, . oct-HSM
    • Свойства как KeyProperties
  • KeyProperties, которые включают метаданные ключей, такие как его имя, версия, теги, данные окончания срока действия и включена ли она.

Если вам нужно значение KeyVaultKey, используйте методы, возвращающие KeyVaultKey:

Объектная модель

Клиентская библиотека ключей Azure Key Vault для JavaScript включает следующие клиенты:

  • 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-keyvault . Создайте учетные данные, такие как 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);
}

См. также

Следующие шаги