Автоматическая перезагрузка секретов и сертификатов из Key Vault

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

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

В первом случае необходимо будет обновлять ключевое значение Sentinel в Конфигурации приложения при каждой смене секретов и сертификатов в Key Vault. Этот способ подходит, если необходима принудительная перезагрузка секретов и сертификатов в приложении. Однако после автоматической смены секретов и сертификатов в Key Vault в приложении могут возникать ошибки, если вовремя не обновить значение ключа метки. Второй вариант позволяет полностью автоматизировать этот процесс. Вы можете настроить в приложении перезагрузку секретов и сертификатов из Key Vault в пределах допустимой задержки с момента смены. В этом учебнике будет рассмотрен второй вариант.

Предварительные требования

Добавление автоматически заменяемого сертификата в Key Vault

Выполните инструкции из учебника по настройке автоматической замены сертификата в Key Vault, чтобы добавить автоматически заменяемый сертификат с именем ExampleCertificate в Key Vault, созданный при изучении предыдущего учебника.

Добавление ссылки на сертификат Key Vault в Конфигурации приложений

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

  2. Выберите Обозреватель конфигураций.

  3. Выберите + Создать>Ссылка на хранилище ключей и укажите следующие значения:

    • Ключ — выберите TestApp:Settings:KeyVaultCertificate.
    • Метка — оставьте это значение пустым.
    • Подписка, Группа ресурсов и Key Vault — введите значения, соответствующие Key Vault, созданному в рамках предыдущего учебника.
    • Секрет — выберите секрет с именем ExampleCertificate, созданный в предыдущем разделе.
    • Версия секрета — последняя версия.

Примечание

Если вы ссылаетесь на определенную версию, перезагрузка секрета или сертификата из Key Vault всегда будет возвращать одно и то же значение.

Обновление кода для перезагрузки секретов и сертификатов Key Vault

В файле Program.cs обновите метод AddAzureAppConfiguration, чтобы настроить интервал обновления для сертификата Key Vault с помощью метода SetSecretRefreshInterval. После этого изменения программа будет перезагружать пару открытого-закрытого ключа для ExampleCertificate каждые 12 часов.

config.AddAzureAppConfiguration(options =>
{
    options.Connect(settings["ConnectionStrings:AppConfig"])
            .ConfigureKeyVault(kv =>
            {
                kv.SetCredential(new DefaultAzureCredential());
                kv.SetSecretRefreshInterval("TestApp:Settings:KeyVaultCertificate", TimeSpan.FromHours(12));
            });
});

Первым аргументом в методе SetSecretRefreshInterval является ключ ссылки Key Vault в Конфигурации приложений. Этот аргумент является необязательным. Если параметр ключа пропущен, то интервал обновления будет применяться ко всем секретам и сертификатам, не имеющим отдельных интервалов обновления.

Интервал обновления определяет частоту, с которой секреты и сертификаты будут перезагружены из Key Vault независимо от любых изменений их значений в Key Vault или Конфигурации приложений. Если вы хотите перезагрузить секреты и сертификаты при изменении их значения в Конфигурации приложений, вы можете отслеживать их с помощью метода ConfigureRefresh. Дополнительные сведения см. в статье об использовании динамической конфигурации в приложении ASP.NET Core.

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

Очистка ресурсов

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

Важно!

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. Введите имя группы ресурсов в поле Фильтровать по имени.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите Удалить группу ресурсов.
  5. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Дальнейшие действия

Из этого учебника вы узнали, как настроить приложение для автоматической перезагрузки секретов и сертификатов из Key Vault. Чтобы узнать, как с помощью управляемого удостоверения упростить доступ к службе "Конфигурация приложений" и Key Vault, перейдите к следующему учебнику.