PostgreSQL的擴展 credcheck

PostgreSQL的擴展 credcheck

credcheck 是 PostgreSQL 的一個安全擴展,專門用于強制實施密碼策略和憑證檢查,特別適合需要符合安全合規要求的數據庫環境。

一、擴展概述

1. 主要功能

  • 強制密碼復雜度要求
  • 防止使用常見弱密碼
  • 密碼過期策略實施
  • 密碼重復使用檢查
  • 登錄失敗嘗試限制

2. 適用場景

  • 需要符合 PCI DSS、HIPAA 等安全標準的系統
  • 多用戶數據庫環境
  • 高安全性要求的應用

二、安裝與配置

1. 安裝

下載網址 https://github.com/HexaCluster/credcheck/tags

在這里插入圖片描述

-- 從源碼安裝(需PostgreSQL開發包)
cd credcheck
make && make install-- 然后連接到目標數據庫執行
CREATE EXTENSION credcheck;white=# \dxList of installed extensionsName        | Version |   Schema   |                              Description                               
--------------------+---------+------------+------------------------------------------------------------------------credcheck          | 3.0.0   | public     | credcheck - postgresql plain text credential checkerpg_bulkload        | 3.1.21  | public     | pg_bulkload is a high speed data loading utility for PostgreSQLpg_dirtyread       | 2       | public     | Read dead but unvacuumed rows from tablepg_repack          | 1.5.0   | public     | Reorganize tables in PostgreSQL databases with minimal lockspg_stat_statements | 1.10    | public     | track planning and execution statistics of all SQL statements executedpgstattuple        | 1.5     | public     | show tuple-level statisticsplpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(7 rows)

2. 基本配置

-- 查看當前配置
white=# select name,setting from pg_settings where name like '%credcheck%';name                 | setting 
--------------------------------------+---------credcheck.auth_delay_ms              | 0credcheck.encrypted_password_allowed | offcredcheck.max_auth_failure           | 0credcheck.no_password_logging        | oncredcheck.password_contain           | credcheck.password_contain_username  | oncredcheck.password_ignore_case       | offcredcheck.password_min_digit         | 0credcheck.password_min_length        | 1credcheck.password_min_lower         | 0credcheck.password_min_repeat        | 0credcheck.password_min_special       | 0credcheck.password_min_upper         | 0credcheck.password_not_contain       | credcheck.password_reuse_history     | 0credcheck.password_reuse_interval    | 0credcheck.password_valid_max         | 0credcheck.password_valid_until       | 0credcheck.reset_superuser            | offcredcheck.username_contain           | credcheck.username_contain_password  | oncredcheck.username_ignore_case       | offcredcheck.username_min_digit         | 0credcheck.username_min_length        | 1credcheck.username_min_lower         | 0credcheck.username_min_repeat        | 0credcheck.username_min_special       | 0credcheck.username_min_upper         | 0credcheck.username_not_contain       | credcheck.whitelist                  | credcheck.whitelist_auth_failure     | 
(31 rows)

三、核心功能使用

1. 密碼復雜度檢查

-- 創建用戶時自動檢查密碼
CREATE ROLE secure_user WITH LOGIN PASSWORD 'Weak123';-- 會拋出錯誤如:
-- ERROR: password failed dictionary check
-- 或 ERROR: password is too simple

2. 密碼歷史記錄

-- 啟用密碼歷史記錄
ALTER SYSTEM SET credcheck.enable_password_history = on;
SELECT pg_reload_conf();-- 修改密碼時會檢查歷史記錄
ALTER ROLE existing_user WITH PASSWORD 'NewPass123';
-- 如果與最近5次密碼重復會報錯

3. 登錄失敗限制

-- 查看失敗嘗試記錄
SELECT * FROM credcheck.failed_login_attempts;-- 手動解鎖被鎖賬戶
SELECT credcheck.unlock_account('locked_user');

四、高級配置選項

1. 自定義字典檢查

-- 指定自定義字典文件路徑
UPDATE credcheck.pwquality_settings 
SET dict_file = '/path/to/custom_wordlist.txt';-- 重新加載配置
SELECT credcheck.reload_settings();

2. 密碼過期策略

-- 設置密碼有效期90天
UPDATE credcheck.pwquality_settings
SET password_max_age = '90 days';-- 強制下次登錄修改密碼
ALTER ROLE critical_user WITH PASSWORD 'TempPass123' VALID UNTIL 'now';

3. 例外配置

-- 對特定角色豁免檢查
INSERT INTO credcheck.pwquality_exceptions (rolname, setting, value)
VALUES ('service_account', 'min_length', '8');

五、監控與維護

1. 監控視圖

-- 查看密碼狀態
SELECT * FROM credcheck.password_status;-- 檢查即將過期的密碼
SELECT rolname, password_age 
FROM credcheck.password_status 
WHERE password_age > (SELECT password_max_age FROM credcheck.pwquality_settings) * 0.9;

2. 定期維護

-- 清理舊的失敗嘗試記錄
DELETE FROM credcheck.failed_login_attempts 
WHERE attempt_time < now() - interval '30 days';-- 更新字典文件后重新加載
SELECT credcheck.reload_dictionary();

六、安全最佳實踐

  1. 結合pg_hba.conf

    # 在pg_hba.conf中限制連接方式
    hostssl all all 0.0.0.0/0 md5 clientcert=1
    
  2. 與pgcrypto集成

    -- 存儲加密后的密碼歷史
    CREATE TABLE encrypted_password_history AS
    SELECT rolname, pgp_sym_encrypt(password, 'encryption_key')
    FROM credcheck.password_history;
    
  3. 審計日志

    -- 記錄密碼變更事件
    ALTER SYSTEM SET log_statement = 'ddl';
    

七、故障排除

常見問題解決

  1. 擴展無法加載

    # 檢查PostgreSQL日志
    tail -n 50 /var/log/postgresql/postgresql-*.log# 確認.so文件在正確位置
    find /usr/lib/postgresql -name "credcheck*"
    
  2. 策略不生效

    -- 檢查是否沖突的配置
    SHOW credcheck.enable_password_check;-- 確認配置已重載
    SELECT pg_reload_conf();
    
  3. 性能問題

    -- 對大用戶表創建索引
    CREATE INDEX ON credcheck.password_history (rolname, change_time);
    

credcheck 擴展為 PostgreSQL 提供了企業級的密碼策略管理能力,合理配置可以顯著提升數據庫認證安全性,建議結合其他安全措施如 SSL 加密和網絡隔離一起使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80684.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MyBatis中的@Param注解-如何傳入多個不同類型的參數

mybatis中參數識別規則 默認情況下,MyBatis 會按照參數位置自動分配名稱:param1, param2, param3, ...或者 arg0, arg1。 // Mapper 接口方法 User getUserByIdAndName(Integer id, String name); 以上接口在XML中只能通過param1或者arg0這樣的方式來引用,可讀性差。 &l…

DIFY教程第一集:安裝Dify配置環境

一、Dify的介紹 https://dify.ai/ Dify 是一款創新的智能生活助手應用&#xff0c;旨在為您提供便捷、高效的服務。通過人工智能技術&#xff0c; Dify 可以實現語音 助手、智能家居控制、日程管理等功能&#xff0c;助您輕松應對生活瑣事&#xff0c;享受智慧生活。簡約的…

5、Rag基礎:RAG 專題

RAG 簡介 什么是檢索增強生成? 檢索增強生成(RAG)是指對大型語言模型輸出進行優化,使其能夠在生成響應之前引用訓練數據來源之外的權威知識庫。大型語言模型(LLM)用海量數據進行訓練,使用數十億個參數為回答問題、翻譯語言和完成句子等任務生成原始輸出。在 LLM 本就強…

GAMES202-高質量實時渲染(homework1)

目錄 Homework1shadow MapPCF(Percentage Closer Filter)PCSS(Percentage Closer Soft Shadow) GitHub主頁&#xff1a;https://github.com/sdpyy1 作業實現:https://github.com/sdpyy1/CppLearn/tree/main/games202 Homework1 shadow Map 首先需要完成MVP矩陣的構造&#xf…

JDK(Ubuntu 18.04.6 LTS)安裝筆記

一、前言 本文與【MySQL 8&#xff08;Ubuntu 18.04.6 LTS&#xff09;安裝筆記】同批次&#xff1a;先搭建數據庫&#xff0c;再安裝JDK&#xff0c;后面肯定就是部署Web應用&#xff1a;典型的單機部署。“麻雀雖小五臟俱全”&#xff0c;善始善終&#xff0c;還是記下來吧。…

軟件測試之接口測試常見面試題

一、什么是(軟件)接口測試? 接口測試&#xff1a;是測試系統組件間接口的一種測試方法 接口測試的重點&#xff1a;檢查數據的交換&#xff0c;數據傳遞的正確性&#xff0c;以及接口間的邏輯依賴關系 接口測試的意義&#xff1a;在較早期開展&#xff0c;在軟件開發的同時…

Lua 第11部分 小插曲:出現頻率最高的單詞

在本章中&#xff0c;我們要開發一個讀取并輸出一段文本中出現頻率最高的單詞的程序。像之前的小插曲一樣&#xff0c;本章的程序也十分簡單但是也使用了諸如迭代器和匿名函數這樣的高級特性。 該程序的主要數據結構是一個記錄文本中出現的每一個單詞及其出現次數之間關系的表。…

軟件項目進度管理活動詳解

目錄 1. 活動定義&#xff08;Activity Definition&#xff09; 2. 活動排序&#xff08;Activity Sequencing&#xff09; 3. 活動資源估算&#xff08;Activity Resource Estimating&#xff09; 4. 活動歷時估算&#xff08;Activity Duration Estimating&#xff09; …

docker 國內源和常用命令

Ubuntu | Docker Docs 參考docker官方安裝docker # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt…

身份與訪問管理(IAM):零信任架構下的認證授權技術與實戰

身份與訪問管理&#xff08;IAM&#xff09;&#xff1a;零信任架構下的認證授權技術與實戰 在網絡安全防御體系中&#xff0c;身份與訪問管理&#xff08;Identity and Access Management, IAM&#xff09;是守護數字資產的“數字門禁系統”。隨著遠程辦公和多云架構的普及&a…

Maven進階知識

一、Maven 坐標 &#xff08;一&#xff09;概念 在 Maven 中坐標是構件的唯一標識&#xff0c;其元素包括 groupId、artifactId、version、packaging、classifier。其中 groupId、artifactId、version 是必定義項&#xff0c;packaging 默認為 jar。 &#xff08;二&#x…

網絡原理 ——TCP 協議

TCP 報文結構 TCP 頭部 20字節&#xff08;無選項&#xff09;&#xff0c;關鍵字段&#xff1a; 字段長度&#xff08;bit&#xff09;說明源端口16發送方端口目的端口16接收方端口序列號&#xff08;seq&#xff09;32數據字節的編號確認號&#xff08;ack&#xff09;32期…

C#使用sftp遠程拷貝文件

需要下載 的包&#xff1a;Core.Renci.SshNet 下載依賴包的時候需要注意版本&#xff0c;高版本的.net環境不支持會用不了&#xff0c;我用的.net5,所以下載的2021.10.2 功能的核心式創建一個SftpClient&#xff0c;并傳入所需要的參數&#xff1a;遠程IP地址&#xff0c;端口…

文本預處理(NLTK)

1. 自然語言處理基礎概念 1.1 什么是自然語言處理 自然語言處理( Natural Language Processing, NLP)是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學于…

socket編程基礎

上一篇 --- 網絡基礎概念&#xff08;下&#xff09;https://blog.csdn.net/Small_entreprene/article/details/147320155?fromshareblogdetail&sharetypeblogdetail&sharerId147320155&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 理…

CSS 解決手機瀏覽器默認行為(點擊出現藍色背景)

最近寫了一個 Web 應用&#xff0c;可以兼容手機端和PC端&#xff0c;在PC端調試的時候沒有發現這個問題&#xff0c;但是在手機上或者PC瀏覽器改成手機模式進行調試的時候就會出現下面這個場景&#xff1a; 這是兩個 div&#xff0c;點擊的時候&#xff0c;會出現一個藍色的背…

多模態大語言模型arxiv論文略讀(三十八)

Tables as Texts or Images: Evaluating the Table Reasoning Ability of LLMs and MLLMs ?? 論文標題&#xff1a;Tables as Texts or Images: Evaluating the Table Reasoning Ability of LLMs and MLLMs ?? 論文作者&#xff1a;Naihao Deng, Zhenjie Sun, Ruiqi He, A…

聊聊Spring AI Alibaba的YuQueDocumentReader

序 本文主要研究一下Spring AI Alibaba的YuQueDocumentReader YuQueDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-yuque/src/main/java/com/alibaba/cloud/ai/reader/yuque/YuQueDocumentReader.java public class YuQueDocument…

OCR定制識別:解鎖文字識別的無限可能

OCR 定制識別是什么&#xff1f; OCR&#xff0c;即光學字符識別&#xff08;Optical Character Recognition&#xff09; &#xff0c;它就像是一個神奇的 “文字翻譯器”&#xff0c;能把圖片里的文字轉化成計算機可編輯的文本。比如&#xff0c;你掃描一份紙質文檔成圖片&am…

麒麟系統(基于Ubuntu)上使用Qt編譯時遇到“type_traits文件未找到”的錯誤

在麒麟系統&#xff08;基于Ubuntu&#xff09;上使用Qt編譯時遇到“type_traits文件未找到”的錯誤&#xff0c;通常是由于C標準庫頭文件缺失或項目配置問題導致的。以下是逐步解決方案&#xff1a; 1. 安裝C標準庫和開發工具 確保系統已安裝完整的開發工具鏈和標準庫&#…