passwordcheck
是一个用于检查用户密码是否满足某些条件的contrib 模块。
passwordcheck
在 PostgreSQL 9.0 中添加,用于提供使用 钩子 check_password_hook
的代码的示例实现。
用法
passwordcheck
通过包含在 shared_preload_libraries
中激活。
按原样,它执行有限范围的检查。特别是,它只能检查加密密码是否与用户名匹配(任何进一步的检查当然都是不可能的),并且在现实世界的安全环境中实用性有限。鉴于 PostgreSQL 提供了相对有限的管理密码有效性的功能,建议配置外部身份验证机制,例如 GSSAPI、SSPI、LDAP 或 RADIUS。
更改历史记录
- PostgreSQL 9.0
- 添加(提交 c742b795)
passwordcheck
自在 PostgreSQL 9.0 中添加以来,没有进行过重大修改。
示例
passwordcheck
必须通过 shared_preload_libraries
启用
postgres=# SHOW shared_preload_libraries; shared_preload_libraries -------------------------- passwordcheck (1 row)
使用明文密码的示例用法
postgres=# ALTER ROLE foo PASSWORD 'foo'; ERROR: password is too short postgres=# ALTER ROLE postgres PASSWORD 'postgres'; ERROR: password must not contain user name postgres=# ALTER ROLE foo PASSWORD 'foobar'; ERROR: password must not contain user name postgres=# ALTER ROLE foo PASSWORD 'boobarbaz'; ERROR: password must contain both letters and nonletters
对于以加密格式提供的密码,只能进行简单的检查,即密码是否与用户名匹配
postgres=# ALTER ROLE foo ENCRYPTED PASSWORD 'SCRAM-SHA-256$4096:eUHVJZ5WSsEomBt9BgHJzQ==$x57IR2ZcoKl8tlz5I2w636bquX3JmCYmi4LlDIa5lIY=:viXV52BLraOFRaw1gCp22K9VgLe6Rvi1nvcWNR6PTe4='; ERROR: password must not equal user name
其他密码将按原样接受;此处值 foobar
(作为明文将被拒绝)作为加密密码传递
postgres=# ALTER ROLE foo ENCRYPTED PASSWORD 'SCRAM-SHA-256$4096:aiSTMi/J+KkJa9WFMgiahg==$f//pUq3yGJ6E8UbCxJWcGvnylc0aNuZR6WuLAcYSzWA=:yzMz+l1TIAYQ28tdQ2YopKwQiIjMwpGAariL2jmeaxU='; ALTER ROLE
参考文献
- PostgreSQL 文档: passwordcheck