文件更改审计(尤其是web.configs)

我们有时会在现场生产服务器上由IT团队更改web.config中的configuration。 我想创build一个审计跟踪,例如,“10月11日,文件”bar“中的”foo“属性改为”banana“。

我的第一个想法是创build一个每小时运行一次的PowerShell脚本,如果其中一个.config文件发生更改,请将其保存在带时间戳的文件夹中。 我的第二个想法是,这一定是一个已经解决的问题。

理想情况下,configuration文件的变化将不被允许,任何改变都需要一个新的部署,但是我不太可能推动。

我说“web.config”,但我有几个不同的XMLconfiguration文件:web.config,app.config,nant.configs。

我需要确切地知道这些configuration文件中(什么时候)和(理想地)由谁更改(大约)。

有什么样的标准方式或开源工具来做文件更改logging?

正如评论中所提到的,最有可能的第三方工具可以帮助这里。 Windows中没有任何东西可以让你做到这一点。

如果我必须自己做,我会做这样的事情:

写一个小工具来监视要观看的文件。 这将使用FileSystemWatcher对象。 在NTFS驱动器上,对已观察文件的更改将自动触发事件。

该事件的代码只是将文件复制到源控制下的其他位置(如Git),并触发提交并可能推送到远程服务器。

使用这个你可以看到文件中的确切变化。

另外,您可以启用对这些文件的Windows审核来查看是谁进行了更改。

我不会在PowerShell中编写这个工具,而是作为一个在后台运行的Windows服务,并实时监控变化。