Используйте зашифрованные Azure учетные данные при инициализации нового SecretClient - PullRequest
0 голосов
/ 09 апреля 2020

Я следую этому руководству 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 предполагает, что переменные среды являются достаточно безопасным местом для хранения незашифрованного идентификатора клиента + секрет?

1 Ответ

0 голосов
/ 13 апреля 2020

Мне удалось выяснить ответ, перейдя по ссылкам на документацию Джима: вместо метода DefaultAzureCredential () (который использует переменные среды) мне пришлось использовать ClientSecretCredential () , чья перегрузка позволяет указать tenantId, clientId и clientSecret:

var client = new SecretClient(new Uri(kvUri), new ClientSecretCredential(tenantId, clientId, clientSecret));

Так что теперь для дополнительной безопасности я могу просто хранить эти (зашифрованные) учетные данные в пользовательских настройках каждого компьютера разработчика.

...