Postgresql

Postgres 10. 對其他使用者隱藏使用者/角色

  • January 21, 2022

我安裝了 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)但仍可以將它們全部列出,如下圖所示

postgres

當然 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_userandpg_shadow視圖。

它不應阻止使用者登錄或破壞任何內容,因為在身份驗證期間不使用這些視圖,因此您應該確保沒有更改任何其他內容。日誌可能會向您顯示他們無法登錄的原因。

引用自:https://dba.stackexchange.com/questions/182752