当前位置: 首页 > news >正文

PostgreSQL 数据库 设置90天密码过期时间的完整方案

PostgreSQL 数据库 设置90天密码过期时间的完整方案

  • PostgreSQL 数据库 设置90天密码过期时间的完整方案
    • 一、基础密码过期设置方法
    • 二、高级密码策略组合
    • 三、自动化管理方案
    • 四、注意事项

PostgreSQL 数据库 设置90天密码过期时间的完整方案

一、基础密码过期设置方法

  1. 使用ALTER ROLE命令设置密码有效期

    -- 设置90天后过期
    ALTER ROLE username VALID UNTIL (CURRENT_TIMESTAMP + INTERVAL '90 days');-- 检查设置结果
    SELECT rolname, rolvaliduntil FROM pg_roles WHERE rolname = 'username';
    
  2. 批量设置所有用户密码过期时间

    -- 为所有非系统用户设置90天有效期
    DO $$
    DECLAREr RECORD;
    BEGINFOR r IN SELECT rolname FROM pg_roles WHERE rolname NOT LIKE 'pg_%'LOOPEXECUTE format('ALTER ROLE %I VALID UNTIL %L', r.rolname, CURRENT_TIMESTAMP + INTERVAL '90 days');END LOOP;
    END $$;
    

二、高级密码策略组合

  1. 密码复杂度要求(建议与过期策略配合使用):

    -- 启用passwordcheck扩展
    CREATE EXTENSION IF NOT EXISTS passwordcheck;-- 配置密码策略(需在postgresql.conf中设置)
    passwordcheck.min_length = 12
    passwordcheck.mixed_case = on
    passwordcheck.require_digit = on
    passwordcheck.password_condition_punct = 1
    
  2. 密码历史记录(防止重复使用旧密码):

    -- 创建密码历史表
    CREATE TABLE password_history (username text,password_hash text,change_time timestamp
    );-- 创建触发器函数
    CREATE OR REPLACE FUNCTION record_password_change()
    RETURNS event_trigger AS $$
    BEGININSERT INTO password_historyVALUES (current_user, md5(current_setting('password')), now());
    END;
    $$ LANGUAGE plpgsql;
    

三、自动化管理方案

  1. 创建定期检查脚本(可设置为cron任务):

    #!/bin/bash
    # 检查即将过期的密码(提前7天提醒)
    psql -U postgres -c "SELECT rolname, rolvaliduntil FROM pg_roles WHERE rolvaliduntil BETWEEN NOW() AND NOW() + INTERVAL '7 days';"
    
  2. 密码到期自动锁定功能

    CREATE OR REPLACE FUNCTION lock_expired_accounts()
    RETURNS void AS $$
    BEGINUPDATE pg_authid SET rolpassword = NULL, rolvaliduntil = NULL WHERE rolvaliduntil < CURRENT_TIMESTAMP;
    END;
    $$ LANGUAGE plpgsql;
    

四、注意事项

  1. 系统账户排除:不应为postgres等系统账户设置密码过期
  2. 应用账户处理:服务账户可能需要特殊处理或设置为永不过期
  3. 时区问题:确保数据库服务器时区设置正确,避免过期时间计算错误
  4. 备份策略:修改重要账户密码前确保有备份恢复方案
  5. 多节点同步:主从架构中需确保所有节点策略一致
http://www.xdnf.cn/news/1255933.html

相关文章:

  • 数据结构(五):顺序循环队列与哈希表
  • 僵尸进程问题排查
  • 安卓10.0系统修改定制化____修改系统固件 实现刷写完成 开机默认关闭桌面搜索框
  • 【网络编程】IO多路转接——select
  • 2025年我国半导体材料产业链全景分析
  • MySQL聚簇索引与非聚簇索引详解
  • uni-app X能成为下一个Flutter吗?
  • Linux基础测试
  • .NET 10 新增功能系列文章5——C# 14 中的新增功能
  • 人工智能的20大应用
  • 基于django的非物质文化遗产可视化网站设计与实现
  • [LVGL] 布局系统 lv_flex, lv_grid | 输入设备 lv_indev | union
  • 云原生安全挑战与治理策略:从架构思维到落地实践
  • 从密钥生成到功能限制:Electron 中 secure-electron-license-keys 的完整集成方案
  • Python生产环境部署指南:专业级应用启动方案
  • 2025最新国内服务器可用docker源仓库地址大全(2025年8月更新) · DockerHub镜像加速全面指南
  • 音视频时间戳获取与同步原理详解
  • 容器之王--部署Docker私有仓库harbor母盘步骤演练
  • 合约收款方式,转账与问题安全
  • ansible-playbook之获取服务器IP存储到本地文件
  • 一文读懂 C# 中的 Bitmap
  • GPT-5 将在周五凌晨1点正式发布,王炸模型将免费使用??
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • 从Text2SQL到Text2Metrics:衡石指标管理技术跃迁
  • 网页前端CSS实现表格3行平均分配高度,或者用div Flexbox布局
  • 92-基于Django的豆瓣图书推荐系统的设计与实现
  • 六边形架构模式深度解析
  • 解锁高效开发:AWS 前端 Web 与移动应用解决方案详解
  • 探究 ASGI 的技术优势:现代 Web 开发的新方向
  • Docker可用镜像(长期免费)