Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Key Vault помогает защитить ключи, секреты и сертификаты, такие как ключи API и строки подключения к базе данных.
В этом руководстве вы настраиваете приложение Node.js для получения сведений из Azure Key Vault с помощью управляемого удостоверения для ресурсов Azure. Вы узнаете, как:
- Создание хранилища ключей
- Хранение секрета в Key Vault
- Создание виртуальной машины Linux Azure
- Включите управляемое удостоверение для виртуальной машины.
- Предоставьте необходимые разрешения для консольного приложения для чтения данных из Key Vault
- Получение секрета из Key Vault
Прежде чем начать, прочитайте Key Vault основные понятия.
Если у вас нет подписки Azure, создайте учетную запись free.
Prerequisites
Для Windows, Mac и Linux:
Вход в Azure
Войдите в Azure с помощью Azure CLI:
az login
Создание группы ресурсов и хранилища ключей
В этом кратком руководстве используется предварительно созданное хранилище ключей Azure. Вы можете создать хранилище ключей, выполнив действия, описанные в следующих кратких руководствах.
- быстрый старт Azure CLI
- краткое начало Azure PowerShell
- Быстрый старт Azure Portal
Или вы можете выполнить эти команды Azure CLI.
Important
Каждое хранилище ключей должно иметь уникальное имя. Замените <vault-name> именем хранилища ключей в следующих примерах.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Заполните ваше хранилище ключей секретом
Мы создадим секрет с именем mySecret и значением Success!. Секрет может быть паролем, SQL строка подключения или любой другой информацией, необходимой для обеспечения безопасности и доступности приложения.
Чтобы добавить секрет в новое созданное хранилище ключей, используйте следующую команду:
az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"
Создание виртуальной машины
Создайте виртуальную машину с именем myVM с помощью одного из следующих методов:
| Linux | Windows |
|---|---|
| Azure CLI; | Azure CLI; |
| PowerShell | PowerShell |
| портал Azure | портал Azure |
Чтобы создать виртуальную машину Linux с помощью Azure CLI, используйте команду az vm create. В следующем примере добавляется учетная запись пользователя с именем azureuser. Параметр --generate-ssh-keys создает ключ SSH и сохраняет его в расположении ключа по умолчанию (~/.ssh).
az vm create \
--resource-group <resource-group> \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Запишите значение publicIpAddress в выходных данных.
Назначьте удостоверение виртуальной машине
Создайте управляемое удостоверение, назначаемое системой для виртуальной машины, с помощью команды az vm identity assign :
az vm identity assign --name "myVM" --resource-group "<resource-group>"
Обратите внимание на идентификатор, назначенный системой, в выводе:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Назначение разрешения для идентификатора виртуальной машины
Предоставьте управляемому удостоверению виртуальной машины роль Key Vault Secrets User для хранилища ключей:
az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>
Вход на виртуальную машину
Чтобы войти на виртуальную машину, следуйте инструкциям в разделе "Подключение" и войдите в виртуальную машину Azure под управлением Linux или Connect и выполните вход в виртуальную машину Azure с Windows.
Чтобы войти на виртуальную машину Linux, используйте ssh с <public-ip-address> помощью шага "Создать виртуальную машину ":
ssh azureuser@<public-ip-address>
Установка Node.js и библиотек npm на виртуальной машине
На виртуальной машине установите две библиотеки npm, которые использует пример скрипта: @azure/keyvault-secret и @azure/identity.
В терминале SSH установите Node.js и npm:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \ sudo apt-get install -y nodejsСоздайте каталог приложений и инициализируйте пакет Node.js:
mkdir app && cd app && npm init -yУстановите пакеты Azure с помощью
npm:npm install @azure/keyvault-secrets @azure/identity
Создание и изменение примера файла JavaScript
На виртуальной машине в каталоге
appсоздайте файл JavaScript с именемindex.js:touch index.jsОткройте этот файл в текстовом редакторе Nano:
nano index.jsВставьте следующий код в редактор, заменив
<vault-name>на имя хранилища ключей:// index.js const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); // Your Azure Key Vault name and secret name const keyVaultName = "<vault-name>"; const keyVaultUri = `https://${keyVaultName}.vault.azure.net`; const secretName = "mySecret"; // Authenticate to Azure const credential = new DefaultAzureCredential(); const client = new SecretClient(keyVaultUri, credential); // Get Secret with Azure SDK for JS const getSecret = async (secretName) => { return (await client.getSecret(secretName)).value; } getSecret(secretName).then(secretValue => { console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`); }).catch(err => { console.log(err); })Сохраните файл, нажав Ctrl+X.
В командной строке
Save modified buffer?введите y.В приглашении
File Name to Write: index.jsнажмите клавишу Enter.
Запуск примера приложения Node.js
Выполните команду index.js. Если все настроено правильно, приложение выводит значение секрета:
node index.js
The value of secret 'mySecret' in '<vault-name>' is: 'Success!'
Очистите ресурсы
Если они больше не нужны, удалите виртуальную машину и хранилище ключей. Самый быстрый способ — удалить группу ресурсов, к которой они относятся:
az group delete -g "myResourceGroup"