Готовое ASP.NET Веб-приложение Framework с хранилищем ключей Azure

#asp.net #visual-studio-2019 #azure-keyvault

#asp.net #visual-studio-2019 #azure-keyvault

Вопрос:

Мы пытаемся защитить секреты нашего приложения во внутреннем ASP.NET Рамочные веб-приложения. Первоначальный план, предложенный мне, заключался в использовании Azure Key Vault. Я начал разработку, используя свою подписку Visual Studio Enterprise, и, похоже, локально она работает нормально.

Мы создали второе хранилище ключей в производственной среде нашей компании, и, опять же, я могу использовать его локально, потому что моя собственная учетная запись AAD имеет доступ к хранилищу. Однако в этом проекте (веб-приложение 4.7.2 Web Forms) я не вижу никаких средств указания участника политики доступа, который мы создали для приложения.

Мой google-fu подводит меня: есть ли какая-либо документация, объясняющая, как это сделать? Является ли этот сценарий — предварительным, ASP.NET Приложение Framework за пределами среды Azure, доступ к хранилищу ключей для значений confiugation — даже возможно?

Спасибо.

ОБНОВЛЕНИЕ: мне не удалось найти решение, которое позволило бы мне использовать участника политики доступа из диалогового окна «Добавить подключенную службу». Я несколько удивлен, что его там нет, или он достаточно скрыт, чтобы ускользнуть от меня. В итоге я написал собственную функцию чтения секретов хранилища ключей, аналогичную отмеченному ответу. Надеюсь, это кому-то поможет…

Комментарии:

1. @JoyWang: обновлено. Я ничего не смог найти. Я использую код отмеченного ниже ответа.

Ответ №1:

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

1. Зарегистрируйте приложение в Azure AD и создайте участника службы.

2.Получение значений для входа в систему и создайте новый секрет приложения.

3. Перейдите к keyvault на портале -> Access policies -> добавьте правильное секретное разрешение для участника службы.

4.Затем используйте приведенный ниже код, замените <client-id> , <tenant-id> , <client-secret> на значения, полученные ранее.

 using System;
using Microsoft.Azure.KeyVau<
using Microsoft.Azure.Services.AppAuthentication;

namespace test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId=<client-id>;TenantId=<tenant-id>;AppKey=<client-secret>");
            var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
            var secret = kv.GetSecretAsync("https://keyvaultname.vault.azure.net/", "mySecret123").GetAwaiter().GetResult();
            Console.WriteLine(secret);

        }
    }
}
  

введите описание изображения здесь

Комментарии:

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