Чтение секретных томов экземпляра контейнера Azure из веб-приложения asp.netcore 2.2 - PullRequest
0 голосов
/ 20 декабря 2018

Я прочитал эту документацию от Microsoft, в которой описано, как секретные тома могут быть добавлены в экземпляр контейнера:

https://docs.microsoft.com/bs-latn-ba/azure///container-instances/container-instances-volume-secret

Теперь я хотел бы прочитать эти защищенные значения из моего asp.net ядро ​​приложения.Как я могу это сделать?Я нигде не могу найти документацию по этому вопросу.

В идеале я хотел бы выполнить эту настройку в своем классе запуска:

что-то здесь:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog()
            .UseSetting(WebHostDefaults.ApplicationKey, typeof(Program).GetTypeInfo().Assembly.FullName); // beware of this
          // shouldn't be removed otherwise site will start outputting 404.
          // see: https://github.com/aspnet/Hosting/issues/903#issuecomment-269103645
    }

НаконецЯ хотел бы иметь возможность запускать код локально, чтобы я мог проверить, работает ли он, прежде чем развертывать контейнер на Azure.Есть ли способ, которым я могу подделать / подделать эти секреты на своей локальной установке (Visual Studio 2017, в решении включена поддержка докера, докер работает локально на моей машине), действительно ли я уверен, что все работает?

Iотредактировал этот вопрос, чтобы прояснить, что речь идет о секретных томах

1 Ответ

0 голосов
/ 20 декабря 2018

Переменные среды

Первоначальный вопрос касался переменных среды, поэтому эта часть посвящена использованию env vars.

В статьях описывается, как записать эти секреты в переменные среды.Чтобы использовать их в своем приложении, вам нужно прочитать переменные среды.Это прекрасно поддерживается конфигурацией ядра asp.net:

Учитывая, что у вас есть следующий конфиг (из https://docs.microsoft.com/en-us/azure/container-instances/container-instances-environment-variables#secure-values):

apiVersion: 2018-10-01
location: eastus
name: securetest
properties:
  containers:
  - name: mycontainer
    properties:
      environmentVariables:
        - name: 'NOTSECRET'
          value: 'my-exposed-value'
        - name: 'SECRET'
          secureValue: 'my-secret-value'

и настройка по умолчанию, как описано здесь в документации: https://docs.microsoft.com/en-us/azure/container-instances/container-instances-environment-variables#secure-values

Пример приложения 2.x использует статический удобный метод CreateDefaultBuilder для построения хоста, который включает в себя вызов AddEnvironmentVariables.

Вы можете прочитать свой секретвот так

var secret = config.GetValue<string>("SECRET", '');

Как описано здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#getvalue

Секретные тома

Секретные тома будут содержать один файл на секретное значение.

Учитываяпример из https://docs.microsoft.com/bs-latn-ba/azure///container-instances/container-instances-volume-secret#mount-secret-volume---yaml

  volumes:
  - name: secretvolume1
    secret:
      mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
      mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK

У вас будет каталог с файлами «mysecret1» и «mysecret2».

Вы можете добавить эти значения, используя конфигурацию ключа для файлаПоставщик

config.AddKeyPerFile(directoryPath: path, optional: true);

, как описано здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#key-per-file-configuration-provider

После того, как вы добавили «источники конфигурации», вы можете получить доступ к таким значениям, как

 var secret = config.GetValue<string>("mysecret1", '');
...