Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Key Vault помогает защитить секреты, такие как ключи API и строки подключения к базе данных, необходимые приложениям, службам и ресурсам.
В этом руководстве вы настроите консольное приложение для чтения сведений из Azure Key Vault. Приложение использует управляемое удостоверение виртуальной машины для проверки подлинности в Key Vault.
В этом руководстве описаны следующие процедуры.
- Создайте группу ресурсов.
- Создайте хранилище ключей.
- Добавьте секрет в хранилище ключей.
- получение секрета из хранилища ключей;
- Создайте виртуальную машину Azure.
- Включить управляемое удостоверение для виртуальной машины.
- Назначение разрешений для идентификатора виртуальной машины.
Прежде чем начать, прочитайте Key Vault основные понятия.
Если у вас нет подписки Azure, создайте учетную запись free.
Предпосылки
Для Windows, Mac и Linux:
- Git
- Пакет SDK .NET 8.0 или более поздней версии.
- Azure CLI или Azure PowerShell
Создание ресурсов и назначение разрешений
Перед началом программирования необходимо создать некоторые ресурсы, поместить секрет в хранилище ключей и назначить разрешения.
Вход в Azure
Войдите в Azure с помощью Azure CLI или Azure PowerShell:
az login
Создание группы ресурсов и хранилища ключей
В этом кратком руководстве используется предварительно созданное хранилище ключей Azure. Вы можете создать хранилище ключей, выполнив действия, описанные в следующих кратких руководствах.
- быстрый старт Azure CLI
- краткое начало Azure PowerShell
- Быстрый старт Azure Portal
В качестве альтернативы, можно выполнить команды Azure CLI или Azure PowerShell.
Это важно
Каждое хранилище ключей должно иметь уникальное имя. Замените <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!"
Создание виртуальной машины
Создайте Windows или виртуальную машину Linux с помощью одного из следующих методов:
| Windows | Линукс |
|---|---|
| Azure CLI; | Azure CLI; |
| PowerShell | PowerShell |
| портал Azure | портал Azure |
Назначьте удостоверение виртуальной машине
Создайте управляемое удостоверение, назначаемое системой для виртуальной машины:
az vm identity assign --name <vm-name> --resource-group <resource-group>
Обратите внимание на присвоенный системой идентификатор, который отображается в следующем коде. Выходные данные приведенной выше команды выглядят следующим образом.
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Назначение разрешения для идентификатора виртуальной машины
Чтобы получить разрешения для хранилища ключей через Role-Based контроль доступа (RBAC), назначьте роль вашему "User Principal Name" (UPN) с помощью команды Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Замените <upn>, <subscription-id>а <vault-name> также фактическими значениями. Если вы использовали другое имя группы ресурсов, замените myResourceGroup. Ваше Уникальное Имя Пользователя (UPN) обычно имеет формат адреса электронной почты (например, username@domain.com).
Вход на виртуальную машину
Чтобы войти на виртуальную машину, следуйте инструкциям в разделе "Подключение" и войдите в виртуальную машину Azure Windows или подключитесь к виртуальной машине Azure Linux.
Настройка консольного приложения
Создайте консольное приложение и установите необходимые пакеты с dotnet помощью команды.
Установка .NET
Чтобы установить .NET, перейдите на страницу загрузки .NET.
Создание и запуск примера приложения .NET
Откройте командную строку и выполните:
dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run
Приложение выводит "Hello World" в консоль.
Установка пакетов
В окне консоли установите клиентную библиотеку секретов Azure Key Vault и библиотеку удостоверений Azure:
dotnet add package Azure.Security.KeyVault.Secrets
dotnet add package Azure.Identity
Изменение консольного приложения
Откройте Program.cs и добавьте следующие using директивы:
using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Замените метод Main следующим кодом, заменив <vault-name> на имя своего хранилища ключей. Этот код использует DefaultAzureCredential для проверки подлинности в Key Vault, которая использует маркер из управляемого удостоверения виртуальной машины. Он также настраивает экспоненциальную задержку для повторных попыток, если Key Vault ограничивает запросы.
class Program
{
static void Main(string[] args)
{
string secretName = "mySecret";
string keyVaultName = "<vault-name>";
var kvUri = "https://<vault-name>.vault.azure.net";
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);
Console.Write("Input the value of your secret > ");
string secretValue = Console.ReadLine();
Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");
client.SetSecret(secretName, secretValue);
Console.WriteLine(" done.");
Console.WriteLine("Forgetting your secret.");
secretValue = "";
Console.WriteLine("Your secret is '" + secretValue + "'.");
Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");
KeyVaultSecret secret = client.GetSecret(secretName);
Console.WriteLine("Your secret is '" + secret.Value + "'.");
Console.Write("Deleting your secret from " + keyVaultName + " ...");
client.StartDeleteSecret(secretName);
System.Threading.Thread.Sleep(5000);
Console.WriteLine(" done.");
}
}
Очистите ресурсы
Если они больше не нужны, удалите виртуальную машину и хранилище ключей.