#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. Я надеялся использовать диалоговое окно «Добавить подключенную службу», чтобы сделать это автоматически, но, похоже, это лучшее доступное решение.