VSTS Передача секретных ключей хранилища в метод IConfigurationBuilder.AddAzureKeyVault работает только в том случае, если он не зашифрован - PullRequest
0 голосов
/ 05 марта 2020

Как следует из заголовка, значения для clientId и clientSecret, которые заполняются в методе AddAzureKeyVault ниже, работают только тогда, когда я помещаю clientId и clientSecret в виде простого текста в разделе переменных VSTS. Это не работает, если я использую группу переменных, которая извлекает эти значения из хранилища ключей, или если я устанавливаю значения как секреты в обычном разделе переменных. Он говорит, что эти значения являются нулевыми, если они не в виде простого текста.

var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
            .AddEnvironmentVariables();

        var configuration = builder.Build();

        var azureServiceTokenProvider = new AzureServiceTokenProvider($"RunAs=App;AppId={Environment.GetEnvironmentVariable("clientId")};TenantId={Environment.GetEnvironmentVariable("tenantId")};AppKey={Environment.GetEnvironmentVariable("clientSecret")}");
        KeyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

        builder.AddAzureKeyVault(Environment.GetEnvironmentVariable("keyVaultUri"),
            Environment.GetEnvironmentVariable("clientId"),
            Environment.GetEnvironmentVariable("clientSecret"),
            new DefaultKeyVaultSecretManager());

Это небезопасно, так как я не хочу, чтобы значения clientId и clientSecret были в виде простого текста. Любая помощь здесь?

РЕДАКТИРОВАТЬ: я использую вышеупомянутый код в. NET Core VSTS задачи (выполните tnet Выполнить). Я не передаю никаких аргументов в задаче. Должен ли я быть?

РЕДАКТИРОВАТЬ 2: Я мог бы найти свой собственный ответ здесь . Но значит ли это, что мне нужно, чтобы мой метод Main ожидал аргументов? Как clientId и clientSecret в разделе «Аргументы». NET Основная задача VSTS?

РЕДАКТИРОВАТЬ 3: я пытался выполнить ##[debug]arguments=##vso[task.setvariable variable=clientId]$(clientId) ##vso[task.setvariable variable=clientSecret]$(clientSecret) и -clientId $(clientId) -clientSecret $(clientSecret) в разделе «Аргументы». NET Основная задача VSTS и он все еще разрешает clientId и clientSecret к нулю ...

...