Политика для хранения конфигурационных файлов в SVN

Большинство нашей конфигурации проектов C# сохранено в *.ini файлах. Главным образом эти файлы содержат много разделов, влияющих на все аспекты поведения программ. Но кроме того регулярных данных конфигурации некоторые разделы уязвимы как строка подключения дб или пароль сервера. Мы пытаемся сохранить, это разделяет в следующих формах:

[Database]
user=testuser
database=testdb
password=

Но когда разработчик тестирует приложение, он должен заполнить конфигурацию для запущения приложения. Довольно распространено, что некоторые пароли фиксируются в управление версиями. Поскольку эти файлы необходимы для приложения, они не могут быть включены в .svnignore. Вероятно, то, что я ищу, является некоторым сценарием (возможно, в powershell). Это просканировало бы все *.ini файлы и стерло бы все пароли. Самое интересное решение добавило бы некоторое внешнее устройство хранения данных пароля, которое может использоваться и чтобы закодировать и декодировать пароли в *.ini файлах.

1
задан Peter Recore 6 August 2010 в 19:36
поделиться

2 ответа

Я всегда пытаюсь сохранить файлы шаблонов конфигурации в Subversion, но не файлы реальной конфигурации. Так что, если файл конфигурации - «config.ini», я проверю «config.ini.template», заполненный нерабочими образцами данных.

Затем, чтобы несколько разработчиков не могли проверять свои отдельные файлы «config.ini», я добавлю фактическое имя файла конфигурации в список свойств svn: ignore.

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

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

# *** CONFIGURATION TEMPLATE --- DO NOT MODIFY THIS FILE ***
# 1. Make a copy of this file in the same directory with the command "copy config.ini.template config.ini"
# 2. Edit the new copy and follow the rest of the instructions
# 
# Change "this.system.hostname" to the hostname of this system
Hostname = this.system.hostname
# Set the answer "23" to "42"
Answer = 23

Вы уловили идею ....

Если у вас есть проблемы (или вы думаете, у вас могут возникнуть проблемы) с людьми, проверяющими свои параметры конфигурации в файле config.ini.template, тогда я бы рекомендовал использовать "svn lock" в файле шаблона. Однако, с соответствующим предупреждением, я никогда не считал это необходимым.

2
ответ дан 2 September 2019 в 22:22
поделиться

Я не буду отвечать на ваш вопрос и вместо этого порекомендую другой подход, предполагая, что еще не поздно изменить соответствующий дизайн.

Вы не должны хранить пароли в тех же файлах, что и все остальное. Пусть приложение читает специальный файл паролей (или получает пароль из службы хранения паролей) в дополнение к обычному файлу конфигурации. Речь идет не только о том, чтобы не хранить пароли в svn, но и о том, чтобы пароли не были открыты для плечевого серфинга, случайно отправлены по почте или опубликованы, когда кто-то просит помощи с нерабочей конфигурацией, и т.д.

0
ответ дан 2 September 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: