背景与风险
密码泄露的影响
Redis作为高性能缓存数据库,若客户端连接密码泄露,攻击者可未授权访问数据,造成敏感信息泄露、数据篡改甚至服务瘫痪。常规改密往往需要重启Redis或全部客户端,导致业务短暂中断,在紧急场景下难以接受。
无缝切换方案
核心原理
利用Redis动态配置命令CONFIG SET requirepass,修改密码时已有认证连接不会被强制断开,新连接必须使用新密码。结合客户端滚动重启或连接池刷新,可逐步替换连接,实现业务不感知的平滑切换。
实施步骤
- 生成高强度新密码,并安全保存。
- 在Redis实例执行CONFIG SET requirepass <新密码>,同时执行CONFIG REWRITE将配置写入持久化文件。
- 验证现有连接是否仍然正常,确认未影响运行中业务。
- 同步修改所有客户端配置中的密码为同一新值,避免连接不一致。
- 对客户端实例进行滚动重启,或主动刷新连接池(如设置空闲连接超时、调用reload接口),使新建连接使用新密码。
- 全程监控Redis连接数、命中率、错误日志,确认无异常后完成切换。
注意事项
- 主从或集群环境需对所有节点依次执行,避免节点间认证差异。
- 若使用Redis Sentinel,需确保哨兵配置中的密码同步更新。
- 连接池需支持动态配置,否则必须通过重启应用加载新密码。
- 改密后立即审计近期访问日志,排查泄露期间的可疑连接。
- 建议启用ACL权限控制,为不同业务设置最小化权限,降低单密码泄露风险。
总结
通过CONFIG SET requirepass动态改密与客户端滚动更新相结合,可在不停机的情况下完成密码轮换,快速遏制泄露风险,保障业务连续性。该方案操作简便,适用于绝大多数Redis单机及哨兵架构,是应急响应中的重要手段。