добавление переменных-заполнителей в файл appSettings. json - PullRequest
0 голосов
/ 29 мая 2020

Итак, при создании нового. NET Core веб-проекта есть appSettings. json и appSettings.Development. json для частей конфигурации. По умолчанию они не игнорируются файлом .gitignore, поэтому я думаю, что они должны оставаться в репозитории.

Я использую базу данных и хочу сохранить свою строку подключения к этим файлам. Очевидно, что параметры содержат конфиденциальную информацию и не должны находиться в репозитории. Если среда является разработкой, я могу добавить строку локального подключения к appSettings.Development. json (но тогда каждый разработчик должен будет использовать те же настройки, пока я не добавлю файл dev в .gitignore )

"Database": {
    "Server": "localhost",
    "Port": 5432,
    "UserId": "admin",
    "Password": "admin",
    "Name": "myDb"
}

Как я могу настроить appSettings. json для производственных или других целей? Есть ли способ для чего-то вроде

"Database": {
    "Server": "$DB_SERVER",
    "Port": "$DB_PORT",
    "UserId": "$DB_USER_ID",
    "Password": "$DB_PASSWORD",
    "Name": "$DB_NAME"
}

, и эти заполнители были бы заменены значениями из переменных среды?

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Если вы включаете какую-либо конфиденциальную информацию (например, строки производственного подключения) в систему управления версиями, они обычно считаются скомпрометированными.

У вас есть два варианта:

Первый вариант wopuld будет go для значений переопределения файла appsettings. Он поддерживается всеми установленными инструментами CI / CD. Этот шаг обычно происходит в конвейере выпуска прямо перед развертыванием. В этом сценарии вы храните свои значения в зашифрованном виде в средстве CD.

Второй вариант - использовать переменные среды. В этом случае для целей разработки вы можете просто передать эти переменные в файле launchSettings. json. И вы устанавливаете значения переменных среды на сервере, на котором выполняется ваше приложение.

Если вы хотите использовать переменные среды, вам не нужны заполнители в файле appsettings. Вы можете прочитать их напрямую

Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT ")
1 голос
/ 29 мая 2020

Использовать секрет

Они сохраняют в локальном файле конфигурацию, поэтому их нет в репозитории. Когда вы go в производстве, вы сохраняете эту информацию в переменной среды.

В Visual Studio в Project выберите Управление секретом пользователя и добавьте свое соединение

{
 "ConnectionStrings": {
   "MyConnection": "the connection"
}

при запуске, используйте IConfiguration

configuration.GetConnectionString("MyConnection")

и при производстве в EnvironmentVariable сервера вы сохраняете новую EnvironmentVariable

ConnectionStrings:MyConnection

Таким образом, только администратор знает соединение. Если вы используете Azure, вы можете использовать Azure хранилище ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...