Casablanca, Maroc - 2023 年 6 月 10 日
credcheck PostgreSQL 擴充功能提供了一些通用的憑證檢查,這些檢查將在使用者建立、密碼更改和使用者重新命名期間進行評估。透過使用此擴充功能,我們可以定義一組規則:
版本 v2.0.0 新增了一項主要功能,並與 PostgreSQL 16 相容。升級需要重新啟動 PostgreSQL 才能重新載入 credcheck 函式庫。
新增「身份驗證失敗封鎖」新功能
PostgreSQL 沒有任何機制來限制使用者在被封鎖之前的身份驗證失敗次數。 透過 credcheck 擴充功能,在達到由組態指令 credcheck.max_auth_failure
定義的身份驗證失敗次數後,使用者可以被封鎖,並且即使之後輸入正確的密碼也永遠無法再連線。此功能需要將 credcheck 擴充功能新增至 shared_preload_libraries
組態選項。
所有使用者的身份驗證失敗都會記錄在共享記憶體中,並包含使用者被封鎖的時間戳記。身份驗證失敗歷史記錄僅保存在記憶體中,這意味著歷史記錄會在 PostgreSQL 重新啟動時遺失。目前我還沒看到在啟動時恢復快取的必要性。
預設情況下,身份驗證失敗快取大小設定為 1024 筆記錄,可以使用 credcheck.auth_failure_cache_size
組態指令進行調整。 變更此 GUC 需要重新啟動 PostgreSQL。
有兩個設定可以控制此功能的行為
credcheck.max_auth_failure
:使用者在被封鎖之前允許的身份驗證失敗次數。credcheck.reset_superuser
:設定為 true 時,強制超級使用者不被封鎖或重置被封鎖的超級使用者。第一個設定的預設值為 0
,表示身份驗證失敗封鎖功能已停用。 第二個設定的預設值為 false
,表示 postgres
超級使用者可以被封鎖。
如果 postgres
超級使用者被封鎖,他將無法再登入。 如果沒有其他超級使用者帳戶可用於重置被封鎖超級使用者的記錄,請將 credcheck.reset_superuser
組態指令設定為 postgresql.conf 檔案中的 true
,並將 SIGHUP 訊號發送到 PostgreSQL 程序 pid,以便重新讀取組態。 下次超級使用者嘗試連線時,其身份驗證失敗快取條目將被移除。
完整的變更列表可在此處取得
credcheck 是一個在 PostgreSQL 許可證下開源的專案,最初由 MigOps Inc 建立,由 Gilles Darold 開發和維護。 歡迎您提供任何有助於建構更好工具的貢獻。 您可以使用 GitHub 工具發送您的想法、功能請求或補丁。
連結
credcheck 擴充功能是 MigOps Inc 的原創作品。 由於 MigOPs 已關閉,Gilles Darold 是官方維護者。 如果您需要更多資訊,請聯絡我