可以禁用 postgres 角色嗎?
Postgresql 9.6,如果重要的話。
我們有一個審計發現,它說根本不能使用“postgres”角色。
創建新的 SUPERUSER 角色後,是否可以禁用角色“postgres”(或者像 autovacuum/autoanalyze 這樣的工作需要它)?如果他們是唯一需要它的人,我可以禁用自動真空/自動分析並依靠手動真空和分析。
您可以在執行時指定數據庫超級使用者的名稱
initdb
。它將預設為執行 initdb 命令本身的使用者的名稱,但指定--username
或-U
將更改它。 https://www.postgresql.org/docs/9.6/app-initdb.html讓我強烈建議您不要考慮嘗試剝奪數據庫超級使用者角色的任何特權,無論其名稱如何。數據庫中的許多權限檢查都以這樣一種方式進行編碼,即始終允許超級使用者繼續,無需詢問任何問題。畢竟,它是超級使用者角色。
我只能假設您的審計員要麼一無所知,要麼指的是應用程序或開發人員對 postgres 角色的某些使用。在後一種情況下,絕對建議限制訪問並在數據庫中為這些任務創建適當的角色/使用者。
這是我的建議:確保使用者 postgres 不能通過 pg_hba 從任何地方登錄(除了通過 unix 套接字和 localhost 本地登錄,還可能通過網路進行流式複制)(並至少使用 peer 和 md5 身份驗證)。
更改超級使用者的名稱不會增加安全性。
我們有一個審計發現,它說根本不能使用“postgres”角色。
可以通過兩種方式查看此聲明,我將同時解決這兩個問題:
- 安裝 PostgreSQL 集群時必須不引用名為“postgres”的帳戶/角色。
這完全是胡說八道,類似於試圖在沒有 root 帳戶的情況下執行 Linux 機器或將“root”帳戶重命名為其他名稱,例如“fred”。它依賴於通過默默無聞的安全性(另一個壞主意),沒有增加任何價值,當他們通常期望找到的東西不存在或被稱為“奇怪”的東西時,每個人都會感到困惑。
保持理智,回到審計員那裡,挑戰這個“發現”,詢問他們的理由和如何讓它發揮作用的建議。
- postgres 角色不能用於 PostgreSQL 集群內部操作以外的任何事情。
我的意思是說,沒有人直接使用這個角色(和密碼)登錄或將其授予他們自己的帳戶,也沒有應用程序使用它。當然,DBA 以安裝所有者的身份隱式連接,但只能從數據庫主機本身進行連接。
我會說這是一個很好的主意。
您不必“洩露”這些高度提升的憑據,也不必削弱您的安全性來允許它*,並且*您可以控制全能的 postgres 帳戶。
始終為自己保留最大和最好的工具,以清理每個人/其他一切造成的混亂!