配置SVN / TFS以监控文件夹并静默检入文件更改(用于审计目的)?

时间:2012-12-10 15:27:52

标签: svn tfs monitoring auditing

(也发布在ServerFault,但意识到这里会有更多的SVN / TFS用户)

底线问题:

  • 是否可以创建一个运行无人参与服务的SVN / TFS存储库,该服务器会静默检查对目标文件夹中文件所做的所有更改以及更换器的用户名?对于进行文件更改的人来说,它必须是完全不可见的。

以下是我的问题的背景:

许多人将更改部署到我们的ASP.NET网站...设计人员部署HTML和CSS更改,.NET开发人员部署ASPX,DLL文件,图形设计人员部署图像等。

理论上所有这些部署都是以非常受控的方式完成的 - 源代码在SVN中维护,部署包是创建和版本控制的,部署首先在预生产站点上进行测试,部署生活是有记录的。 理论上我们总是知道哪些文件被更改,何时,为什么&由谁。

但是,有时候有人直接在现场进行更改并绕过所有程序。通常这是因为一些紧急情况。有时候会发生一个导致网站出现问题的变化......没有人拥有它!

所以我们正在寻找的是某种无人值守服务,它捕获服务器上特定文件夹的所有文件更改。它应该在文件发生变化时“签入”,即捕获整个文件的新版本,并捕获用户的Windows登录。换句话说,每个文件都会获得对其进行更改的历史记录,就像SVN,TFS等一样。我们应该能够在文件历史记录中的版本之间进行差异化。它捕获的99%应该是通过适当的程序进行的更改 - 但它也应该包含1%的非正确程序。

要明确 - 我们不会寻找发送“文件完整性”警报的服务,例如OSSEC。我们只希望捕获每个文件更改,因此如果出现问题,我们可以检查更改日志并找出在常规过程之外执行的操作。此外,它显然应该是完全自动化的 - 要求用户遵循额外的程序不是我们在此之后!

此外,定期进行备份然后寻找它们之间的差异并不是我们想要的,因为这不会告诉我们是谁做出了改变。

1 个答案:

答案 0 :(得分:1)

虽然技术上可行,但我强烈建议您解决问题的根本原因 - 而不是症状。

  

但是,有时候有人直接在现场进行更改并绕过所有程序。通常这是因为一些紧急情况。有时会发生导致网站出现问题的更改...... 没有人拥有它

(强调我的)这是一个你需要解决的巨大的问题。应该非常严格地锁定对实际站点的访问(只有发布经理应该具有对服务器的写入权限 - 或者更好的是,自动部署过程),并且“紧急”更改仍应遵循相同的一般工作流程才能投入生产 - 只是加速了。

您的实际网站的每个版本都应该是一个软件包(或一个脚本化的流程,可重复的流程,仅在您告诉它推送到实际网站的版本中有所不同),以及由固定的人/组协调的促销人。没有遵循流程(包括来自客户/利益相关者和变更经理的签收),任何事情都无法生效,并且每次都由同一个人以同样的方式完成促销。

现在 - 你自己承认 - 你没有责任。只要人们可以逃脱某些事情,他们就会尝试这样做。要么是出于恶意,要么是因为“跟踪过程需要太长时间/太难了。 “

简短版本:而不是通过解决启用此行为(使用您在此处寻求的解决方案),阻止它首先发生以便事后你不需要清理。

  

此外,定期进行备份然后寻找它们之间的差异并不是我们想要的,因为这不会告诉我们是谁做出了改变。

我看不出您提出的解决方案如何为您提供所需的审计跟踪。该服务只会提交所做的更改,而不是由谁进行更改。您可以使用Windows安全日志记录和跟踪来跟踪更改的来源吗?也许是NTFS审计?也许,也许不是。

此服务如何处理合并冲突?在SVN中,只有在WC处于HEAD修订版时才能提交,因此您必须更新,然后提交。如果对那些需要合并的相同元素进行其他更改会发生什么?

我建议您查看Tripwire等监控服务,以观察对您的实际网站所做的更改,但仍然可能无法告诉您进行了更改或为什么 - 但如果发生这种情况,你至少可以得到通知。

相关问题