【问题标题】:Securing Subversion checkouts for system configuration files保护系统配置文件的 Subversion 签出
【发布时间】:2010-12-09 00:37:29
【问题描述】:

我们已经使用 subversion 对我们的软件项目进行版本控制已经有一段时间了。由于我们使用 python 开发,我最近开始使用 subversion 来部署站点的工作副本。当一个站点在 repo 中更新时,会在服务器上调用一个 post-commit 挂钩,并将更改推送到实时站点。

继续这一点,我看到其他人在他们的服务器配置脚本中使用版本控制。我们正在运行 Ubuntu 9.04,我可以想象拥有(例如)所有 /etc/ 版本的实用程序,这样如果我搞砸了 apache 配置,或者安装了一些可以处理某些现有配置的东西,我可以简单地从备份中恢复.

我的问题(和担忧)是,目前,我们所有的开发人员都可以访问我们所有的 subversion 存储库。如果我开始将敏感的系统配置放在那里,我认为限制访问是有意义的,但我不知道该怎么做。一旦我拥有了 repo 中的所有文件,我应该如何管理结帐和签入?在本地进行更改然后推送到服务器?修改服务器然后推送到repo?我们的颠覆服务器是不同的物理机,所以我不能使用本地文件签出。我应该如何处理安全性?无密码 SSH?

另外,在这种情况下,我还应该注意哪些其他安全问题?我知道很多信息都存储在 .svn 目录中,我是否会让我的服务器暴露在类似这样的东西上? subversion 本身是否足够安全,可以实现这一点?

另外,subversion 是否正确保存和恢复文件所有权和权限?

【问题讨论】:

    标签: svn version-control ubuntu


    【解决方案1】:

    如果您通过 HTTP(例如通过 Apache)访问您的 subversion 存储库,那么您可以使用 Apache 来控制对各种资源的签出/提交访问。

    我们这样做是为了根据 LDAP 权限限制对我们存储库的提交。

    请参阅mod_authz_svnmod_dav_svn 了解更多详情。

    【讨论】:

      【解决方案2】:

      使用 SVN 授权系统从下载或访问中排除系统目录,如果您配置了 LDAP 服务器,您可以配置 auth 文件或设置 LDAP 访问,并通过 SSH 设置 SVN 以提高安全性。

      我还会考虑将系统配置存储在不同的存储库中,并将其锁定以防止不必要的访问。 在这种情况下,最好在本地测试更改,然后上传到存储库,这样如果你搞砸了,你还没有提交错误的修订。

      无论如何,将系统文件存储在版本控制系统上并不是很安全,考虑一下这种情况:你搞砸了配置,使你的机器无法启动,你在 SVN 上保存了损坏的配置,现在你必须:

      1. 物理访问拧紧的机器
      2. 使用实时可启动操作系统通过 svn 恢复
      3. 销毁导致问题的修订版

      当然,如果您能处理所有这些麻烦,它可能是一个解决方案,但不是最安全的。 如果您确实需要不断更新您的系统配置,您最好将您更新的文件从不同的目录链接起来,例如:

      /etc/apache -> /usr/local/etc/apache
      

      你最好把它们改成版本,保持 /etc 干净

      作为最后一个考虑因素:您不会考虑将此服务器/存储库放在互联网上。 (这不是一个问题:D)

      【讨论】:

        【解决方案3】:

        回答最后一个问题,不,subversion 本身不支持文件权限、所有权等。您可以查看 asvn,它以存储它们而著称,但它已经有一段时间没有更新了。

        您最好的选择可能是部署脚本,该脚本在部署后使用适当的权限、所有者等检查并修改每个文件。

        【讨论】:

          猜你喜欢
          • 2012-12-30
          • 1970-01-01
          • 2012-05-23
          • 2010-09-13
          • 1970-01-01
          • 2010-09-12
          • 2017-03-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多