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