2010-11-09 33 views
0

我想打一個數據庫用戶,它會用我的預定義功能(登錄(通過,登錄),get_users_you_are_in_charge_off(登錄,傳遞)等)。我可以在postgres中創建一個組/用戶角色,以便它只能執行預定義的功能嗎?

因爲這應該對任何人開放,我想創建一個數據庫用戶/組角色,只允許該用戶執行我的預定義功能。

的問題是,這些功能使用SELECT,UPDATE,INSERT。而當我只授予執行這些職能的權利時,他們會拋出錯誤,他們沒有權限去做。

任何想法? (也許我可以靜態地轉變職能中的作用?)

//回答一些評論 爲1號註釋:OK,我會看它和回覆,如果它可以幫助我。謝謝。好的,謝謝你的回答,這完全是我需要的。感謝用戶「plundra」!

第2條評論: 我已經有一個表或用戶(與他們的登錄)。但是如果我做一個函數checkLogin(name,pass),該函數需要從表中選擇用戶。如果我不給予用戶做SELECTS的權利,這是行不通的。如果我確實授予了這些權利,那麼用戶可以僅從用戶那裏進行SELECT *;並查看密碼是什麼。

好的,感謝您的回答,第一條評論完全是我所需要的。感謝用戶「plundra」!

+5

簽出「安全定義」在http://www.postgresql.org/docs/current/static/sql-createfunction.html – plundra 2010-11-09 23:26:40

+1

考慮分隔您的*域*中的用戶從PostgreSQL的用戶概念。 (例如創建一個'users'表,必須先使用所有的PostgreSQL會議將採用單一的PostgreSQL用戶連接您的應用程序做認證。) – 2010-11-10 02:26:24

回答

0

在postgresql.org/docs/current/static/sql-createfunction.html退房 「SECURITY DEFINER」 - plundra

用戶plundra回答。多數民衆贊成在我所需要的,謝謝:)

1

答案是,不要將密碼存儲在數據庫中。

相反,存儲鹽和密碼哈希(這兩個文本字段)。

當創建一個新用戶時,您隨機創建一個salt,並將它們的選定密碼進行散列,然後存儲散列。

要驗證某人,請輸入他們輸入的密碼,儲存在用戶記錄中的鹽,通過散列算法(SHA1等)運行它們,並將其與存儲的散列進行比較。

雖然在概念上很簡單,但細節可能會咬你,所以它值得使用someone else's code

+0

好吧,這聽起來管理認證的好方法。我將添加鹽,使密碼更加安全,但問題啊,我的問題是,我的數據庫的用戶貧困,無法執行功能,它使用一些東西,用戶不能。實際上,第一條評論正是我所期待的。不過,我非常感謝你的幫助。 – HouseMD 2010-11-10 18:53:44

相關問題