2014-02-12 74 views
4

處理內部開發數據庫憑證的最佳做法是什麼?對於應用程序和開發人員?開發數據庫憑證的最佳實踐?

目前我們爲每個開發數據庫創建一個單獨的用戶/密碼,並在代碼庫中提交這些憑證。但是我們希望擺脫我們倉庫中的存儲憑證。問題是我們的開發人員和應用程序都需要訪問數據庫。

  • 爲開發人員提供他們自己的個人帳戶,讓他們可以訪問所有開​​發數據庫,​​這是不錯的做法嗎?甚至可能所有的開發和生產數據庫?
  • 開發人員是否應該在開發環境中使用自己的個人帳戶?或者他們應該使用不同的?
  • 如果他們應該使用不同的帳戶,每個開發數據庫是否應該有一組單獨的憑據?或者我們應該創建一個可以訪問開發人員可以在所有應用程序中使用的開發數據庫的帳戶?
  • 如果我們應該爲每個開發數據庫使用不同的帳戶,開發人員在爲他們自己設置新的開發環境時應該如何獲得這些憑據?我們發現試圖手動跟蹤這些(例如wiki)非常容易出錯,並且很快變得過時。

如果很重要,我們使用MySQL(準確地說是Percona)。

+0

你也應該告訴我們您正在使用的DBMS(Postgres的, Oracle,DB2 ...)。 DBMS系統對這些事情的最佳實踐差異很大。 –

+0

謝謝。我將它添加到問題中。 –

回答

2

首先確保開發,分期和生產環境100%獨立。因此MySQL帳戶也應該分開。它有助於使版本升級順利進行,並且更安全。在Percona,我做了十幾個恢復案例,開發人員因爲生產和開發數據庫共享他的賬戶而丟棄了生產數據庫。

說了開發者應該在開發數據庫上有讀寫帳戶,在臨時數據庫上只讀帳戶,在生產上只讀。

爲每個開發人員創建帳戶,因此他們負責將其存儲在安全的地方。因此,您無需打擾如何以安全的方式存儲/共享帳戶。

顯然,密碼不應存儲在存儲庫中。保持配置模板在源代碼樹:

# cat config.php 
    <?php 

    $mysql_user="@@[email protected]"; 
    $mysql_password="@@[email protected]"; 
    $mysql_host="@@[email protected]"; 
    $mysql_db="@@[email protected]"; 

    ?> 

,以確保它在升級過程中不是覆蓋告訴中的.spec文件

%files www 
    %config(noreplace) %attr(640, root, apache) %{_sysconfdir}/%{project_name}/config.php 
+0

謝謝。要明確:您的開發人員將在開發環境中使用他們自己的個人帳戶進行應用程序的所有本地簽出? –