如何修改PostgreSQL数据库密码规则

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何修改PostgreSQL数据库密码规则

1 业务场景

  • 某些客户安全等保要求高,要求使用客户自定义的PG数据库密码规则(如同时包含字母大小写、数字、特殊字符,且长度大于8)。不只是修改当前数据库用户使之符合要求,而且要求创建的用户密码默认符合客户的密码规则;

  • PG原生的密码检查(passwordcheck)没有自定义规则,只能判断字符长度是否小于8且是否含有字母。

2 解决方案

  • 修改PG passwordcheck源码文件,重新编译此动态库,然后替换当前到PG对应目录下。

3 关键操作

  1. 下载获取PG12.8源码包(https://www.postgresql.org/ftp/source/v12.8/postgresql-12.8.tar.gz)


  2. 修改源码包文件postgresql-12.8/contrib/passwordcheck/passwordcheck.c文件,

    如下图这里是定义密码长度规则的位置,可进行修改。




  3. 检查是否有字母、特殊字符、数字

    在/* check if the password contains both letters and non-letters */ 下方增加两行变量,如下图所示



    替换for里面原来的方法:

    将原始文件中的


    if (isalpha((unsigned char) password[i]))

          pwd_has_letter = true;
    else

          pwd_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")));

    修改为如下内容





  4. 修改完成后保存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数据库密码规则

1 业务场景某些客户安全等保要求高,要求使用客户自定义的PG数据库密码规则(如同时包含字母大小写、数字、特殊字符,且长度大于8)。不只...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息