md5_password_warnings
Fact — 官方简述译文:启用关于 MD5 密码的弃用警告。
身份
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG18 |
| 在档版本 | PG18–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | db6a4a985bc0 — Deprecate MD5 passwords. |
| 提交日期 | 2024-12-02 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG18–19 Beta 3 | on |
— | on |
机制详解
md5_password_warnings 控制 PostgreSQL 18 的弃用 WARNING:只有 CREATE ROLE 或 ALTER ROLE 设置 MD5 密码密文时才产生。它不会报告使用既有 MD5 密文进行的认证,因此不能作为活跃 MD5 客户端或角色的完整清单。
它属于 USER 上下文,获授权角色可在当前会话中修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。只有会话既执行设置密码语句又启用本参数时,才可能产生警告。
password_encryption 控制以明文设置密码时生成的格式,而既有 pg_authid 密文只有重置密码后才会改变。因此迁移除警告外,还需要受保护的密文类型清点、客户端兼容测试与凭据轮换。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持 md5_password_warnings 为 on,但每条警告只能证明某个设置密码语句创建或提交了 MD5 密文。另行清点既有密文类型,并在强制仅 SCRAM 访问前测试所有认证路径。 |
| OLAP | 分析角色采用同一规则:遗留驱动可能继续用旧 MD5 密文认证而不产生本警告,因此必须显式测试并轮换这些凭据。 |
| 小规格 | 保持警告启用,其开销可忽略。不要把没有警告误当成不存在 MD5 密文或仅支持 MD5 客户端的证据。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG18–19 Beta 3 未修改;OLAP: PG18–19 Beta 3 未修改;CRIT: PG18–19 Beta 3 未修改;TINY: PG18–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 误以为使用既有 MD5 密文认证时会告警;它只在 CREATE ROLE 或 ALTER ROLE 设置 MD5 密文时触发。
- 把没有警告当成集群中不存在 MD5 密文或仅支持 MD5 客户端的证明。
- 在创建或轮换角色的部署会话中关闭警告,从而隐藏新 MD5 密文的产生。
- 修改 password_encryption 却不轮换既有角色密码,使其存储密文格式保持不变。
关联参数
password_encryption · scram_iterations · authentication_timeout · oauth_validator_libraries · krb_server_keyfile