如何禁止非超級用戶在postgresql服務器中查看其他用戶?只允許postgres用戶列表角色
ex。如果當前登錄的用戶不是超級用戶,則來自
的結果SELECT * from pg_roles;
或
\杜
應該與他的角色只能排
如何禁止非超級用戶在postgresql服務器中查看其他用戶?只允許postgres用戶列表角色
ex。如果當前登錄的用戶不是超級用戶,則來自
的結果SELECT * from pg_roles;
或
\杜
應該與他的角色只能排
您可以在系統目錄中取消獲得的認證ID表:
REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;
請注意,撤消對pg_roles
的訪問是不夠的,因爲pg_roles
只是pg_authid
的視圖,而且手動運行視圖查詢或使用相同的查詢定義新視圖是微不足道的。 information_schema
視圖也直接使用pg_authid
,並且不會因撤銷對pg_roles
的訪問而受到影響。如果您已撤銷對pg_authid
的訪問權限,則無需撤銷對pg_roles
的訪問權限。
請注意,撤消對全局表的訪問仍然是按數據庫操作。
撤銷訪問系統目錄可能有副作用,包括:在像JDBC驅動程序未能
並且通常不被支持。
revoke select on pg_roles from public;
不幸的是我試圖這樣做,那是行不通的。 –
@KrzysztofMiksa它怎麼沒用?我在Pg9.0的一個實例上試了一下,它似乎工作正常:允許從普通用戶登錄,該用戶對其已授予對象的正常允許的操作,但在'\ du'或''du' select ... from pg_roles' – dbenhur
@dbenhur它不會停止訪問'information_schema'或直接針對'pg_authid'工作的查詢。看到我的答案。 –