Я следую этому руководству Azure Клиентская библиотека Key Vault для. NET (v4) , пытаюсь узнать о хранилищах ключей в настольных приложениях. Я настроил Принципала обслуживания в соответствии с инструкциями и дал ему доступ к своему Хранилищу, и тогда мне удалось получить секрет с помощью
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
string secretName = "test";
KeyVaultSecret secret = client.GetSecret(secretName);
, но только после сохранения моего AZURE_CLIENT_ID , AZURE_CLIENT_SECRET и AZURE_TENANT_ID в качестве переменных среды.
Я хотел бы знать, могут ли эти три ключа быть зашифрованы в переменных среды и могут быть расшифрованы с помощью DefaultAzureCredential () метод?
В качестве альтернативы, эти ключи могут храниться где-то еще, расшифровываться локально и затем передаваться в метод DefaultAzureCredential () ?
Я попытался поиграться с перегрузкой DefaultAzureCredentialOptions () , но не было никакой возможности передать секрет клиента ...
Я также попытался создать объект учетных данных токена в коде, используя Fluent .Authentication NuGet и передача его в конструктор SecretClient , но я получил сообщение об ошибке
cannot convert from 'Microsoft.Azure.Management.ResourceManager.Fluent.Authentication.AzureCredentials' to 'Azure.Core.TokenCredential'
Возможно ли то, что я пытаюсь сделать? Или Microsoft предполагает, что переменные среды являются достаточно безопасным местом для хранения незашифрованного идентификатора клиента + секрет?