Postgresql
高級 PostgreSQL 使用者管理
對於我們研究所的使用者,我們希望提供一種快速簡單的方式來使用 PostgreSQL 數據庫。目前,我們已經能夠通過 LDAP (PAM) 對所有使用者進行身份驗證。這工作得很好。我們必須做
create user
一次,使用者可以使用 LDAP 支持的密碼登錄到數據庫。但是,這種簡單的設計有幾個缺點:
使用者可能想要幾個帶有一次性密碼的一次性角色,這樣他們就不需要儲存他們的 LDAP 密碼。
使用者應該能夠自由地創建自己的數據庫。(並且他們應該能夠將其數據庫的權限授予其他使用者。)
因此,簡而言之,
username
應該允許每個具有 name 的 LDAP 支持的使用者創建其他角色,只要它們以username_
;為前綴即可。數據庫也是如此。(也歡迎其他建議。)LDAP 支持的使用者將成為整個username_
數據庫空間的超級使用者。我已經看到安裝為 MySQL 做類似的事情(萬用字元授權),但我想知道這是否也適用於 PostgreSQL。
看來您應該能夠使用 Postgres 函式來執行此操作,該函式由既可以創建數據庫又可以創建使用者的使用者創建和擁有;一個函式用於創建數據庫,另一個函式用於創建使用者。關鍵是
SECURITY DEFINER
在函式定義中指定子句(詳見文件)。讓第一個函式創建數據庫並將所有權等設置為current_user
. 第二個功能,用於創建使用者,可以根據 驗證要創建的使用者/角色,current_user
以確保它符合您的命名標準。