Как использовать DefaultAzureCredential как в локальной, так и в размещенной среде (Azure и локально) для доступа к Azure Key Vault?

У нас есть веб-API (.NET 5), который получает доступ к некоторым секретам из Azure KeyVault.
На локальном компьютере для разработки, поскольку я являюсь владельцем нового созданного хранилища, моя электронная почта имеет право доступа к хранилищу ключей.

Поэтому я выбрал свою учетную запись, хотя VS -> Инструменты> Параметры -> Аутентификация службы Azure -> Выбор учетной записи -> " myemail@.com "

У меня есть приведенный ниже код для извлечения секретов из Keyvault и доступа через конфигурацию, как мы получаем доступ к значению appsettings.

      public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            var appSettings = config.Build();
            var credentialOptions = new DefaultAzureCredentialOptions();
            var credential = new DefaultAzureCredential(credentialOptions);
            config.AddAzureKeyVault(new Uri(appSettings["Url:KeyVault"]), credential);
        })
       .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

Мы получаем доступ к секретному значению, такому как _configuration["secret"] на уровне сервиса и контроллера.

Мои запросы

1. Если я перенесу развертывание этого кода на локальный сервер, как он будет работать (dev env — локальный сервер)?

2. Если я разверну этот веб-API в Azure, как использовать приложение идентификации AD для доступа к хранилищу ключей без каких-либо изменений кода. У нас зарегистрировано приложение AD, которое имеет доступ на чтение к этому конкретному хранилищу.

Я хочу, чтобы код без проблем работал на локальном сервере и в Azure.

1 ответ

DefaultAzureCredential — это новый и унифицированный способ подключения и извлечения токенов из Azure Active Directory, который можно использовать вместе с ресурсами, которым они нужны.

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

Следующие типы учетных данных, если они включены, будут опробованы по порядку: EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential, InteractiveBrowserCredential

  1. ЕСЛИ я перенесу развертывание этого кода на локальный сервер, как он будет работать (dev env — локальный сервер)

При выполнении этого на компьютере разработки (локальный сервер) необходимо сначала настроить среду, задав для переменных AZURE_CLIENT_ID, AZURE_TENANT_ID и AZURE_CLIENT_SECRET соответствующие значения для вашего субъекта-службы (приложение, зарегистрированное в Azure AD).

  1. Если я разверну это веб-приложение в Azure, как использовать приложение идентификации AD для доступа к хранилищу ключей без каких-либо изменений кода. У нас есть зарегистрированное приложение AD, которое имеет доступ для чтения к этому хранилищу.

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

Другие вопросы по тегам