Я следовал этому руководству по клиентской библиотеке 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 (), но не было возможности передать секрет клиента ...
Я также попытался создать объект учетных данных токена в коде с помощью NuGet Fluent.Authentication и передать его в конструктор SecretClient, но получил сообщение об ошибке
cannot convert from 'Microsoft.Azure.Management.ResourceManager.Fluent.Authentication.AzureCredentials' to 'Azure.Core.TokenCredential'
Возможно ли то, что я пытаюсь сделать? Или Microsoft предполагает, что переменные среды являются достаточно безопасным местом для хранения незашифрованного идентификатора клиента + секрета?
var client = new SecretClient(new Uri(kvUri), new ClientSecretCredential(tenantId, clientId, clientSecret));
- person Themos   schedule 10.04.2020