安裝完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欄位),

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/228975.html
標籤:PostgreSQL
