Невозможно получить Key Vault Secret из Docker Службы приложений в. NET Core - PullRequest
0 голосов
/ 20 января 2020

Я использую веб-API, использующий NET Core 3.1 из Azure Службы приложений в контейнере docker, и пытаюсь получить секретный ключ от службы хранилища ключей. Мой код выглядит нормально, у вас нет ошибок, но ответ всегда пуст. Это моя инициализация при запуске:

public Startup(IWebHostEnvironment env)
    {   
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddEnvironmentVariables();

        this.bIsDevelopemnt = env.IsDevelopment();           

        Configuration = builder.Build();

        var azureServiceTokenProvider = new AzureServiceTokenProvider();
        KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

        builder.AddAzureKeyVault(
            $"https://{Configuration.GetSection("KeyVaultName").Value}.vault.azure.net/",
            keyVaultClient,
            new DefaultKeyVaultSecretManager());           
    }

И я использую этот контроллер для проверки результатов, который возвращает ноль во всех трех случаях:

[HttpGet("/secrets")]
    public IActionResult getSecrets()
    {
        try
        {

            var value = configuration["tokenKey"];
            var value2 = configuration["OhmioAPI:tokenKey"];
            var value3 = configuration["OhmioAPI--tokenKey"];

            return Ok(new { orign = "pirulo", key1 = value, key2 = value2, key3 = value3 });
        }
        catch (Exception e)  {
            return NotFound(e.Message);
        }            
    }

Что у меня есть try / done : * Создание хранилища ключей и секретов * Создание идентификатора для моего приложения * Добавление разрешения на получение / перечисление секретов из хранилища ключей

Любые идеи?

1 Ответ

1 голос
/ 21 января 2020

Самый простой способ - использовать Key Vault Reference. См .: https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references

Основные шаги:

  • Включить MSI на Azure WebApp
  • Разрешить WebApp доступ к KeyVault через Политики доступа в KeyVault
  • Добавьте приложение, скажем, протестируйте со значением: @ Microsoft.KeyVault (SecretUri = https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931) [Измените secretUri в соответствии с URI секрета, который вы пытаетесь для доступа]
  • Вот и все. WebApp автоматически получит секрет из KeyVault, к которому вы теперь можете обращаться, как если бы они были переменной среды.
  • Вы можете повторить настройку приложения (в нашем случае TEST), чтобы проверить, установлено ли значение
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...