Назад | Перейти на главную страницу

аудит изменений файлов (особенно для web.configs)

Иногда у нас есть конфигурации в web.config, которые ИТ-специалисты изменяют на действующих производственных серверах. Я хочу создать контрольный журнал, например: «11 октября свойство« foo »в файле« bar »было изменено на« banana ».

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

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

Я говорю "web.config", но у меня есть несколько разных файлов конфигурации xml: web.config, app.config, nant.configs.

Мне нужно точно знать, что в этих файлах конфигурации было изменено (приблизительно), когда и (в идеале) кем.

Есть ли какой-нибудь стандартный способ или инструмент с открытым исходным кодом для ведения журнала изменений файлов?

Как упоминалось в комментариях, скорее всего, здесь могут помочь сторонние инструменты. В Windows нет ничего, что позволяло бы делать это прямо из коробки.

Если бы мне пришлось делать это самому, я бы сделал что-то вроде этого:

Напишите небольшой инструмент для наблюдения за файлами. Это будет использовать объект FileSystemWatcher. На NTFS-дисках изменение отслеживаемого файла автоматически запускает событие.

Код для события просто скопирует файл в другое место, которое находится под контролем источника (скажем, Git), и запустит фиксацию и, возможно, отправку на удаленный сервер.

Используя это, вы можете увидеть, что именно изменилось в файле.

Кроме того, вы можете включить аудит Windows для файлов, чтобы узнать, кто внес изменения.

Я бы не стал писать этот инструмент в PowerShell, но как службу Windows, которая работает в фоновом режиме и отслеживает изменения в реальном времени.