Sehrope Sarkuni:Postgres密码加密而不泄露凭据

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

本文介绍了在PostgreSQL数据库中创建用户和加密密码的方法,包括使用哈希函数和HMAC操作进行加密。在PostgreSQL v10之前,只有md5加密选项可用,而在v10之后,新增了SCRAM-SHA-256加密选项。使用ALTER USER命令可以更新用户密码。还介绍了相关的库和工具,如libpq、PGJDBC和pg-password-util,可以帮助加密密码并更新用户密码。强调了生成强密码的重要性。

🎯

关键要点

  • 创建PostgreSQL用户的简单方法是使用CREATE USER命令,但密码以明文形式发送到数据库。
  • PostgreSQL的密码加密实际上是哈希和HMAC操作,服务器只需知道凭据是否匹配。
  • 在PostgreSQL v10之前,唯一的密码加密选项是md5,存储在pg_shadow目录中。
  • md5加密使用随机盐来防止重放攻击,但盐的大小仅为四字节,安全性有限。
  • 从PostgreSQL v10开始,新增SCRAM-SHA-256加密选项,具有更强的安全性和更大的盐大小。
  • CREATE USER和ALTER USER命令可以指定密码,服务器会根据默认加密方法加密密码。
  • 使用ALTER USER命令更新密码时,建议使用SCRAM-SHA-256加密,而不是明文或md5加密。
  • 多种库和工具可用于加密密码并更新用户密码,如libpq、PGJDBC和pg-password-util。
  • 生成强密码非常重要,建议使用随机生成的长密码以提高安全性。
  • 使用上述工具可以在不暴露明文密码的情况下安全地更新数据库用户凭据。
➡️

继续阅读