Начало работы с ключами Azure Key Vault в JavaScript
В этой статье показано, как подключиться к Azure Key Vault с помощью клиентской библиотеки ключей Azure Key Vault для JavaScript. После подключения код может работать с ключами в хранилище.
Примеры | исходного кода | библиотеки с справочником | по API (npm) | Дают отзыв
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Экземпляр Azure Key Vault . Просмотрите политики доступа в Key Vault, чтобы включить разрешения, необходимые для конкретных задач, выполняемых в коде.
- Node.js версии LTS
Настройка проекта
Откройте командную строку и перейдите в папку проекта. Измените
YOUR-DIRECTORY
имя папки:cd YOUR-DIRECTORY
Если у вас в каталоге еще нет файла
package.json
, инициализируйте проект, чтобы создать файл:npm init -y
Установите клиентскую библиотеку ключей Azure Key Vault для JavaScript:
npm install @azure/keyvault-keys
Если вы хотите использовать бессерверные подключения с помощью идентификатора Microsoft Entra, установите клиентскую библиотеку удостоверений Azure для JavaScript:
npm install @azure/identity
Авторизация доступа и подключение к Key Vault
Идентификатор Microsoft Entra предоставляет наиболее безопасное подключение, управляя удостоверением подключения (управляемым удостоверением). Эта функция без пароля позволяет разрабатывать приложение, которое не требует ключей, хранящихся в коде.
Перед программной проверкой подлинности в Azure для использования ключей Azure Key Vault убедитесь, что вы настроили среду.
Разработчик должен установить Azure CLI и войти в интерактивном режиме с помощью команды az login , чтобы войти в Azure, прежде чем использовать DefaultAzureCredential в коде.
az login
Сборка приложения
При создании приложения код взаимодействует с двумя типами ресурсов:
- KeyVaultKey, который включает в себя:
- Идентификатор, имя и значение.
- Разрешенные операции.
- Тип, например
EC
, ,RSA
EC-HSM
RSA-HSM
,oct
, .oct-HSM
- Свойства как KeyProperties
- KeyProperties, которые включают метаданные ключей, такие как его имя, версия, теги, данные окончания срока действия и включена ли она.
Если вам нужно значение KeyVaultKey, используйте методы, возвращающие KeyVaultKey:
Объектная модель
Клиентская библиотека ключей Azure Key Vault для JavaScript включает следующие клиенты:
- KeyClient: объект KeyClient является главным объектом в пакете SDK. Этот клиент позволяет выполнять такие задачи управления ключами, как создание, смена, удаление и перечисление ключей.
- 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);
}