暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库密码有效期管理经验

原创 winboy 2025-03-10
80

数据库国产化已替换如火如荼,作为DBA已运维多套“磐维”数据库,前几天登录我的运维账号,突然提示密码即将过期,需要修改密码。

DBAer赶紧排查了全量磐维数据库的密码设置,并详细研究了下磐维数据库的密码设置相关知识,整体来说跟ORACLE还是差异较大,粗糙总结如下,从ORACLE转磐维的DBA们可以注意了。

  1. pg_user中的valuntil列意思为账号的有效期,并非密码有效期,通过修改valuuntil起不到密码延期的作用的,这是一个容易误解的点,需要注意:

2.密码统一有效期参数设置查看password_effect_time参数,一般生产系统数据库安全基线要求密码有效期为90天。

3.作为DBA,需要关注用户密码还剩余多少天过期,同时配合业务开展密码修改。磐维数据库没有明确记录用户密码过期的时间,可以通过查询PG_AUTH_HISTORY表中passwordtime字段的最大值,并结合password_effect_time值来计算得出,具体可使用以下语句进行查询:

select b.rolname,b.oid,max(a.passwordtime) passwd_time,pg_catalog.intervaltonum(password_effct_time-(current_date -max(a.passwordtime))) left_time

from pg_auth_history a,pg_roles b

where a.roloid = b.oid

group by b.rolname,b.oid

order by 4;
复制

4.针对部分程序用户,考虑到修改密码可能影响应用程序的业务连续性,应用管理员可能希望程序用户可以密码长期有效,ORACLE中可以通过给用户指定一个profile来实现,但在磐维数据库中,目前暂未发现可对某个账号单独设置密码有效期的功能。

因磐维是基于openGauss开发的,通过openGauss原代码查询,密码过期用户登录后将只允许执行alter user ***命令,即只能做密码修改动作。

5.如何实现不改变密码来延长密码有效期呢?可以通过修改pg_auth_history表中passwordtime时间最大那条记录的时间,实现密码不变延长密码过期时间。pg_auth_history表中passwordtime最大的一条记录时间变为当前时间,代表当前密码失效时间又延长了一个password_effect_time周期,具体代码如下:

update pg_auth_history set passwordtime=now()

where roloid=245095

and passwordtime=(select max(passwordtime)from pg_auth_history where roloid=245095 );
复制

当然,该方法仅作为DBA应急处理密码过期问题的办法,最科学的方法还是应该要求程序账号也定期修改密码。

最后修改时间:2025-03-10 18:07:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论