如何修改PostgreSQL数据库密码规则
1 业务场景
某些客户安全等保要求高,要求使用客户自定义的PG数据库密码规则(如同时包含字母大小写、数字、特殊字符,且长度大于8)。不只是修改当前数据库用户使之符合要求,而且要求创建的用户密码默认符合客户的密码规则;
PG原生的密码检查(passwordcheck)没有自定义规则,只能判断字符长度是否小于8且是否含有字母。
2 解决方案
修改PG passwordcheck源码文件,重新编译此动态库,然后替换当前到PG对应目录下。
3 关键操作
下载获取PG12.8源码包(https://www.postgresql.org/ftp/source/v12.8/postgresql-12.8.tar.gz)
修改源码包文件postgresql-12.8/contrib/passwordcheck/passwordcheck.c文件,
如下图这里是定义密码长度规则的位置,可进行修改。
检查是否有字母、特殊字符、数字
在/* check if the password contains both letters and non-letters */ 下方增加两行变量,如下图所示
替换for里面原来的方法:
将原始文件中的
if (isalpha((unsigned char) password[i]))
pwd_has_letter = true;
elsepwd_has_nonletter = true;
替换为下图内容,判断是否有字母、大小写、特殊字符、是否有数字
修改下方信息内容,增加提示信息
原始内容为
if (!pwd_has_letter || !pwd_has_nonletter)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("password must contain both letters and nonletters")));
修改为如下内容
修改完成后保存postgresql-12.8/contrib/passwordcheck/passwordcheck.c文件。
5. 然后在contrib/passwordcheck/这个目录下,直接执行make命令编译得到新的passwordcheck.so文件,替换当前数据库服务器/var/postgresql/soft/pg12.8/lib下面的同名文件。
6. 加载这个动态库,在postgresql.conf参数文件里的shared_preload_libraries增加内容如下图所示:
7. 然后重启数据库服务,就能启用这个动态库检查密码。
8. 效果如下:创建一个不符合密码规则的用户,会提示ERROR信息。
4 注意事项
使用前请在测试环境验证,再应用于生产环境,相关文件覆盖前请做好备份。
如何修改PostgreSQL数据库密码规则
本文2024-09-23 01:12:57发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144517.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf