Postgresql
Postgres 10. 對其他使用者隱藏使用者/角色
我安裝了 postgresql 10,我想向其他使用者隱藏使用者/角色的名稱。我搜尋了其他文章,有人建議:
REVOKE SELECT ON pg_catalog.pg_authid FROM public; REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;
完成所有這些操作後,user1 無法深入了解使用者的資訊,
(Error retrieving roles from the database server. ERROR: permission denied for relation pg_auth_members)
但仍可以將它們全部列出,如下圖所示當然 user1 不是超級使用者。
我已經對此進行了測試,但沒有任何效果:
REVOKE SELECT ON pg_catalog.pg_roles FROM user1; REVOKE SELECT ON pg_catalog.pg_user FROM user1;
也對此進行了測試,但沒有效果:
REVOKE SELECT ON pg_catalog.pg_authid FROM user1; REVOKE SELECT ON pg_catalog.pg_auth_members FROM user1;
如果我啟動下一條語句,使用者將無法登錄並且一切都被破壞了:
REVOKE SELECT ON pg_catalog.pg_roles FROM public; REVOKE SELECT ON pg_catalog.pg_user FROM public;
有沒有辦法做到這一點?對其他使用者隱藏使用者名對我來說非常重要。
**背景:**我正在創建一個黑客 ctf(擷取標誌)虛擬機。這是挑戰之一……重點是避免使用者可以看到“正確的數據庫使用者名”進行連接。這是他/她必須在數據庫中找到提示和其他加密內容的東西。
編輯:一個“悲傷”的解決方法是創建數百個虛擬使用者以“嘗試隱藏”真實使用者……但這必須是一個優雅的解決方案。有什麼幫助嗎?
pgAdmin 正在使用 pg_roles 來顯示該資訊,因此執行就足夠了
REVOKE SELECT ON pg_catalog.pg_roles FROM public;
但由於資訊在其他視圖中也可用,因此您需要隱藏它們,例如
pg_user
andpg_shadow
視圖。它不應阻止使用者登錄或破壞任何內容,因為在身份驗證期間不使用這些視圖,因此您應該確保沒有更改任何其他內容。日誌可能會向您顯示他們無法登錄的原因。