IT 团队偶尔会在实时生产服务器上更改 web.config 中的配置。我想创建一个审计跟踪,例如“10 月 11 日,文件“bar”中的属性“foo”被更改为“banana”。
我的第一个想法是创建一个每小时运行一次的 PowerShell 脚本,如果其中一个 .config 文件发生变化,则将其保存在带有时间戳的文件夹中。我的第二个想法是,这肯定是一个已经解决的问题。
理想情况下,不允许更改配置文件,任何更改都需要新的部署,但我不太可能推动这一点。
我说“web.config”,但我有几个不同的 xml 配置文件:web.config、app.config、nant.configs。
我需要确切地知道这些配置文件中哪些内容发生了改变(大约)、何时改变、以及(理想情况下)由谁改变。
是否存在某种标准方法或开源工具来记录文件更改?
答案1
正如评论中提到的,很可能有第三方工具可以提供帮助。Windows 中没有内置任何可以让你立即执行此操作的工具。
如果我必须自己做这件事,我会做这样的事情:
编写一个小工具来监控要监视的文件。这将使用 FileSystemWatcher 对象。在 NTFS 驱动器上,对监视文件的更改将自动触发事件。
事件的代码只会将文件复制到源代码控制(例如 Git)下的其他位置并触发提交,并可能推送到远程服务器。
使用此功能您可以看到文件中到底发生了哪些变化。
此外,您还可以对文件启用 Windows 审核来查看谁进行了更改。
我不会用 PowerShell 编写该工具,而是将其作为在后台运行并实时监控变化的 Windows 服务。