2014-10-30 28 views
3

PostgreSQL對等身份驗證是本網站上許多問題的來源,但一旦您瞭解它的工作原理,它看起來非常棒。PostgreSQL對等身份驗證是否安全生產?

例如,我可以讓我的應用程序連接到開發數據庫,​​而無需提供用戶名和密碼。

所以,我的問題是,我可以在生產服務器上使用同級身份驗證嗎?它足夠安全嗎?

非常感謝。

回答

3

peer對於多種部署非常有用 - 例如,當你想允許人們使用本地的unix用戶賬號登錄並且作爲一個匹配的PostgreSQL用戶獲得快速的數據庫訪問。

這對webapps來說並不好,因爲你通常希望每個webapp都有自己的用戶。所以你通常爲他們使用md5

我經常把兩者結合起來。對於web應用程序,允許md5僅用於其私有數據庫 - 如果驅動程序支持,則使用local套接字,否則將使用來自localhosthost連接。允許本地用戶使用peer訪問任何數據庫,包括Web應用程序數據庫。如果你想在每個數據庫中只有一個用戶(所以你可以忽略權限 - 我不建議這樣做,但我知道有些人會這樣做),你可以使用pg_ident.conf映射來允許人們通過peer作爲用戶以外的用戶進行身份驗證默認用戶名。

然後你可以通過md5gssapi(Kerberos的)加上來自外界hostssl連接,或者如果它是一個Windows DB主機。

身份驗證方法並非全部或無關緊要。有一個原因很容易提供一個替代品列表,並選擇第一個匹配的。

+0

我之所以喜歡同行認證,是因爲我可以避免在配置文件或環境變量中使用純文本編寫密碼。所以我可以爲我的webapp創建一個OS用戶,爲它選擇一個很好的長密碼,而不用擔心我的配置文件泄漏到任何地方。 – 2014-10-30 15:18:26

+0

@ art-solopov可以這樣使用'peer';問題在於任何闖入您的Web服務器的人都可以更輕鬆地訪問所有應用程序的所有數據庫。無論如何,他們可以用'md5'來完成,因爲網絡服務器必須能夠使用每個應用程序的憑證讀取配置文件,但至少需要更長一點。唯一真正安全的方法是使用自己的用戶作爲守護進程(使用fastcgi/scgi/whatever)運行每個應用程序,並讓Web服務器代理應用程序。 – 2014-10-30 21:44:11

+0

但它會讓他們通過SSH破解進入數據庫,不是嗎? P. S.我打算使用Ruby,所以我必須將Nginx和反向代理安裝到實際的應用程序服務器上。 – 2014-10-30 22:18:22