credcheck v2.0.0 已發布

由 Gilles Darold 於 2023-06-12 發布
相關開源

Casablanca, Maroc - 2023 年 6 月 10 日

PostgreSQL credcheck 擴充功能

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

credcheck 擴充功能是 MigOps Inc 的原創作品。 由於 MigOPs 已關閉,Gilles Darold 是官方維護者。 如果您需要更多資訊,請聯絡我

文件位於 https://github.com/MigOpsRepos/credcheck#readme