2013-11-21 30 views
4

我有一個postgres數據庫和一個web應用程序。Postgres通過LoginRoles與Web應用程序的用戶身份驗證對比表

網絡應用程序允許用戶存在,他們做一些在web應用程序的東西。

我是新來的Pos​​tgres,但我們使用SQL Server中做什麼的ActiveDirectory - CreateLogins - CreateRoles等。

現在,在這個數據庫可以爲每個用戶創建一個登錄?或者是與用戶(用戶名密碼)更好的表?或更糟?

我在考慮在數據庫中只有1個登錄用戶,他們只能執行特定的過程並查看視圖並通過表對用戶進行身份驗證。

哪個更好?

回答

1

使用一個或多個roles與訪問登錄表,在應用程序的表的其他部分一起具體的權限。你顯然不希望這個角色成爲數據庫/桌主,以減輕攻擊造成的損失。

請務必使用pgcrypto module來對用戶密碼進行加鹽和哈希處理。

+0

快速問題,但你如何認證用戶與用戶名和密碼?這樣的東西不會工作: SELECT oid FROM pg_roles其中rolname ='blah'和rolpassword ='blah',也是一個虛擬問題尚未使用鹽和散列,但如果有2個相同的用戶名將輸出不同? – Drakoumel

+0

數據庫客戶端認證可以通過很多方式完成,所以這裏是[相關文檔](http://www.postgresql.org/docs/9.3/static/client-authentication.html)。醃製使得兩個相同密碼的哈希值不同。 –

+0

omg ye ofc。我完全是在想這個錯誤的方式..(關於auth)thnx! – Drakoumel

3

我認爲最好使用數據庫的內置角色管理,因爲它可以保持乾燥。儘管神話,你仍然可以使用連接池。它使審計變得更加容易,並在以後需要時使用行級安全性。

  1. Postgres可以使用內置角色或使用Kerberos,GSSAPI,SSPI或LDAP對用戶進行身份驗證。

  2. 您可以同步LDAP用戶/組/角色與Postgres的:

    https://github.com/larskanis/pg-ldap-sync

  3. 您可以委託認證到Web服務器。作爲Web服務器角色登錄,然後使用SET ROLE X更改用戶的角色以充當該用戶。這允許您使用連接池。

相關問題