Как работать с Azure Key Vault в .NET Core

автор vadim


При создании приложений .NET Core мы часто используем различные «секреты», такие как идентификаторы клиентов, токены доступа, пароли, сертификаты, ключи шифрования и ключи API. Естественно, нам нужен безопасный способ хранения, управления и контроля доступа к этим конфиденциальным данным. Azure Key Vault предоставляет для этого удобное облачное решение.

В этой статье мы рассмотрим, как мы можем работать с Azure Key Vault на C#. Чтобы следовать примерам кода, представленным в этой статье, в вашей системе должна быть установлена ​​Visual Studio 2022. Если у вас еще нет копии, вы можете скачать Visual Studio 2022 здесь.

Создайте проект консольного приложения в Visual Studio.

Прежде всего, давайте создадим проект консольного приложения .NET Core в Visual Studio. Предполагая, что Visual Studio 2022 установлена ​​в вашей системе, выполните шаги, описанные ниже, чтобы создать новый проект консольного приложения .NET Core.

  1. Запустите интегрированную среду разработки Visual Studio.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» выберите «Консольное приложение (.NET Core)» из списка отображаемых шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и расположение нового проекта.
  6. Нажмите “Далее.
  7. В следующем окне «Дополнительная информация» выберите «.NET 7.0 (стандартная поддержка)» в качестве версии платформы, которую вы хотите использовать.
  8. Щелкните Создать.

Мы будем использовать этот проект консольного приложения .NET 7 для работы с Azure Key Vault в последующих разделах этой статьи.

Что такое Azure Key Vault?

Azure Key Vault — это безопасное облачное решение для хранения, которое защищает секреты вашего приложения или другие конфиденциальные данные, относящиеся к вашему приложению. Такими секретами могут быть токены, ключи, идентификаторы, пароли, сертификаты и т. д. Azure Key Vault обеспечивает безопасное, надежное, централизованное хранилище секретов, а также надежные средства контроля доступа, что избавляет разработчиков от необходимости напрямую управлять конфиденциальными данными в своих приложениях.

В следующих разделах мы создадим Key Vault, создадим несколько секретов, а затем прочитаем и удалим эти секреты программным способом.

Создайте хранилище ключей в Azure.

Чтобы создать хранилище ключей в Azure, выполните действия, описанные ниже.

  1. В меню портала Azure или на домашней странице выберите «Создать ресурс».
  2. Выберите Key Vault из списка отображаемых ресурсов.
  3. Щелкните Создать.
  4. На экране «Создать хранилище ключей» укажите подписку, имя группы ресурсов, регион и ценовую категорию, а для остальных параметров оставьте значения по умолчанию.
  5. Нажмите «Просмотреть + Создать».
  6. Проверьте введенные данные и нажмите «Создать».

Создайте секрет приложения в хранилище ключей Azure.

Затем вы должны добавить секрет к экземпляру хранилища ключей, созданному в предыдущем разделе. Для этого выполните шаги, описанные ниже.

  1. Выберите Секреты на странице конфигурации Key Vault.
  2. Щелкните Создать/импортировать, чтобы добавить секрет в хранилище ключей.
  3. Выберите «Вручную» (по умолчанию) в раскрывающемся меню «Параметры загрузки».
  4. Укажите имя и значение секрета.
  5. При необходимости укажите тип содержимого, дату активации и дату истечения срока действия.
  6. Щелкните Создать.

Добавьте роли для доступа к вашему хранилищу ключей

Чтобы предоставить доступ к созданному нами секрету, выполните действия, перечисленные ниже.

  1. Выберите «Управление доступом (IAM)» на экране Key Vault.
  2. Нажмите «Добавить назначение роли».
  3. Выберите роль, которую вы хотите назначить, из отображаемого списка ролей.
  4. Назначьте доступ либо «Управляемому удостоверению», либо «Пользователю, группе или субъекту-службе».
  5. Выберите участников, которым будет назначена роль.
  6. При желании укажите описание роли.
  7. Нажмите “Далее.
  8. Нажмите «Просмотреть + назначить».

Чтение данных из хранилища ключей Azure.

Затем мы создаем экземпляр класса DefaultAzureCredential и передаем его в качестве аргумента классу SecretClient. Это создает секретный клиент, который мы можем использовать для подключения и работы с Azure Key Vault. При создании экземпляра SecretClient вы также должны указать URI KeyVault, как показано во фрагменте кода, приведенном ниже.

var credentials = new DefaultAzureCredential();
azureKeyVaultSecretClient = new SecretClient(new
Uri(KeyVaultUri), credentials);

Вот полный список кодов для справки.

    class Program
    {
        const string KeyVaultName = "AzureKeyValueExample";
        const string KeyVaultUri = $ https://{KeyVaultName}.vault.azure.net";
        static SecretClient ? azureKeyVaultSecretClient;
        static void Main(string[] args)
        {
            var credentials = new DefaultAzureCredential();
            azureKeyVaultSecretClient = new SecretClient(new
            Uri(KeyVaultUri), credentials);
            Console.WriteLine("Displaying all secrets with their values:");
            var azureKeyVaultSecrets =
            azureKeyVaultSecretClient.GetPropertiesOfSecrets();
            foreach(var secret in azureKeyVaultSecrets)
            {
                var secretValue =
                azureKeyVaultSecretClient.GetSecret(secret.Name);
                Console.WriteLine($ "{secret.Name} |
                {secretValue.Value.Value} |
                {secretValue.Value.Properties.ContentType}");
            }
            Console.Read();
        }
    }
Секреты отображения хранилища ключей Azure 01 IDG

Рисунок 1. Когда вы запустите указанную выше программу в окне консоли, она отобразит ваши секреты и их значения.

Создайте новый секрет в хранилище ключей Azure.

Вы можете использовать следующий фрагмент кода, чтобы создать новый секрет и присвоить ему значение в экземпляре хранилища ключей.

string secretName = "NewSecret";
string secretValue = "NewSecretValue";
await azureKeyVaultSecretClient.SetSecretAsync(secretName, secretValue);
var secret = azureKeyVaultSecretClient.GetSecret(secretName);
Console.WriteLine($ "{secretName} created with value {secretValue}");

Вы можете увидеть новый секрет, созданный на портале Azure, как показано на рисунке 2 ниже.

Секреты отображения хранилища ключей Azure 02 IDG

Рисунок 2. Наш новый секрет отображается на экране Key Vault на портале Azure.

Удалить секрет из хранилища ключей Azure

Метод StartDeleteSecret класса SecretClient удаляет секрет из Azure Key Vault. Вам просто нужно передать имя секрета, который вы хотите удалить, в качестве параметра этому методу, как показано во фрагменте кода ниже.

string secretNameForDelete = "NewSecret";
var deleteOperation = azureKeyVaultSecretClient.StartDeleteSecret(secretNameForDelete);
Console.WriteLine($"Deleting secret {secretNameForDelete} from Key Vault");
while (!deleteOperation.HasCompleted)
{
     Thread.Sleep(500);
     deleteOperation.UpdateStatus();
}
Console.WriteLine($"Secret {secretNameForDelete} deleted from Key Vault");
Console.Read();

Если вы сейчас просмотрите экран Key Vault на портале Azure, вы увидите, что секрет был удален.

Заключение

При выполнении программы вы можете столкнуться с Azure.Identity.CredentialUnavailableException. Чтобы решить эту проблему, в интегрированной среде разработки Visual Studio щелкните Инструменты -> Параметры -> Аутентификация службы Azure. Убедитесь, что вы вошли в систему, используя учетные данные учетной записи Azure.

С помощью Azure Key Vault вы можете централизованно управлять ключами и секретами, повышать безопасность приложений и соответствие отраслевым требованиям, а также упростить управление конфиденциальными данными и их защиту.

Далее прочитайте это:

  • Лучшее программное обеспечение с открытым исходным кодом 2022 года
  • Разработчики не хотят заниматься операциями
  • 7 причин, почему Java по-прежнему великолепна
  • Почему Wasm — это будущее облачных вычислений
  • Почему оценки программной инженерии — это мусор
  • Объяснение непрерывной интеграции и непрерывной доставки

Related Posts

Оставить комментарий