2009-10-22 63 views
1

我們已經在我們的軟件項目中使用了Subversion進行版本控制了很長時間了。由於我們是用python開發的,我最近開始使用subversion來部署網站的工作副本。在回購站點更新站點時,服務器會調用一個提交後掛鉤,並將更改推送到活動站點。保護系統配置文件的Subversion簽出

繼續在這方面,我已經看到其他人使用版本控制服務器配置腳本的引用。我們運行的是Ubuntu 9.04,我可以想象擁有(例如)所有/ etc /版本的效用,如果我搞砸了一個apache配置,或者安裝了一些能夠緩解一些現有配置的東西,我可以簡單地從備份中恢復。

我的問題(和擔憂)是,目前,我們所有的開發人員都可以訪問我們所有的Subversion存儲庫。如果我開始將敏感的系統配置放在那裏,我認爲限制訪問是有意義的,但我不知道如何做到這一點。一旦我擁有回購中的所有文件,我應該如何管理結帳和簽入?在本地進行更改然後推送到服務器?修改服務器,然後推到回購?我們的Subversion服務器是不同的物理機器,所以我不能使用本地文件簽出。我應該如何處理安全性?無密碼的SSH?

另外,在這種情況下我應該瞭解哪些其他安全問題?我知道很多信息都存儲在.svn目錄中,我是否會暴露我的服務器以便這樣做?顛覆本身是否足夠安全以使其可行?

此外,subversion是否正確地保存和恢復文件的所有權和權限?

回答

1

在回答最後一個問題時,顛覆本質上不支持文件權限,所有權等。您可能會檢查asvn,它被稱爲存儲它們,但它在一段時間內沒有更新。

您最好的選擇可能是一個部署腳本,它在部署後通過適當的權限,所有者等來修改每個文件。

0

排除系統目錄下載或使用SVN授權系統訪問所有人,您可以配置auth文件或設置LDAP訪問權限(如果已配置LDAP服務器),並通過SSH設置SVN以提高安全性。

我還會考慮將系統配置存儲在不同的存儲庫中,並鎖定不需要的訪問。 在這種情況下,最好在本地測試更改,然後上傳到存儲庫,所以如果搞砸了,您還沒有提交錯誤的修訂。

反正它也不是很安全的存儲系統文件的版本控制系統上,雖然,考慮這種情況:你擰的配置,使您的機器無法啓動,你保存在SVN破配置,現在你必須:

  1. 實際使用活動啓動OS
  2. 通過SVN訪問擰緊機
  3. 恢復破壞導致問題的修訂

當然,如果你能處理所有這些麻煩,它可以是一個解決方案,但不是最安全的。 如果你真的需要不斷地更新系統配置,你最好從不同的目錄中更新鏈接文件,如:

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

你更好的版本的替代,保持/等清潔

作爲最後的考慮:你不想把這個服務器/存儲庫放在互聯網上。 (這不是問題:D)

0

如果您通過HTTP訪問Subversion存儲庫(例如,通過Apache),那麼您可以使用Apache來控制對各種資源的檢出/提交訪問。

我們這樣做是爲了根據LDAP權限限制對我們的存儲庫的提交。

有關更多詳細信息,請參見mod_authz_svnmod_dav_svn