安裝完PostgreSQL之后,默認是沒有開啟密碼復雜度,為了數據庫安全以及應對等保測評等要求,有時我們需要設置密碼復雜度。
PostgreSQL支持通過動態庫的方式擴展PG的功能,pg在使用這些功能時需要預加載相關的共享庫。而密碼復雜度可以通過預加載passwordcheck.so模塊實現。
有幾種設置可用於將共享庫預加載到服務器中,如下:
local_preload_libraries (string)
session_preload_libraries (string)
shared_preload_libraries (string)
下面介紹shared_preload_libraries (string)方式加載passwordcheck.so模塊,此模塊可以檢查密碼,如果密碼太弱,他會拒絕連接;創建用戶或修改用戶密碼時,強制限制密碼的復雜度,限制密碼不能重復使用例如密碼長度,包含數字,字母,大小寫,特殊字符等,同時排除暴力破解字典中的字符串。
1、創建測試用戶
CREATE USER AAA WITH PASSWORD '123';--創建用戶
ALTER USER AAA WITH PASSWORD '111';--修改用戶密碼
執行發現,使用簡單密碼,無論是創建用戶還是修改用戶密碼均可以成功執行。
2、shared_preload_libraries 方式啟用passwordcheck.so模塊
在PG庫的數據目錄下(centos默認路徑為:/var/lib/pgsql/11/data,windows默認路徑為:D:\PostgreSQL\11\data)找到postgresql.conf文件,修改
修改內容行為:shared_preload_libraries = 'passwordcheck' # (change requires restart)。
修改完成后重啟服務服務生效(systemctl restart postgresql-11)。
注意:如果修改不正確會導致數據庫服務器無法正常啟動,請修改之前做好備份。
3、重啟后驗證
發現無論在新建用戶以及修改用戶時候,都對密碼提出要求,要求至少8位,必須包含數字和字母。
其他注意事項:
我在Windows系統上,修改完成后所有已有用戶均無法登陸(CENTOS上未遇到此種情況),只需要修改PG庫的數據目錄下(centos默認路徑為:/var/lib/pgsql/11/data,windows默認路徑為:D:\PostgreSQL\11\data)找到pg_hba.conf文件,修改登陸驗證方式。
然后登陸后修改用戶的有效期,設置完成后將pg_hba.conf文件恢復即可。
說明:trust為不驗證密碼;md5為密碼認證,另外還有ident(使用操作系統賬號)、password(明文密碼)、reject(拒絕訪問)
有效期不要設置過程,否則可能不生效,可以通過 select * from pg_user 語句查看有效期(valuntil字段)。
-----------------------------------
PostgreSQL配置密碼復雜度策略
https://blog.51cto.com/u_15162069/2778382