暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[译] PostgreSQL从MD5到SCRAM-SHA-256

3268

段落引用原文作者: Laurenz Albe
翻译:Tracy
原文链接:https://www.cybertec-postgresql.com/en/from-md5-to-scram-sha-256-in-postgresql

image.png

从 v10 开始,PostgreSQL支持使用SCRAM-SHA-256加密方式来进行加密密码和认证。本文介绍了如何正确地调整应用程序改使用scram-sha-256认证方式连接数据库。

我们为什么需要scram-sha-256?

PostgreSQL使用密码散列有两个目的:

  • 实际的数据库密码是用户输入的明文密码的散列。这可以防止小偷在其他系统上使用被盗的密码。
  • 在密码验证期间,客户端必须使用服务器提供的随机盐来散列(已被散列的)密码。如果服务器从客户端收到正确的散列响应,则密码检查成功。

现在,现在,MD5哈希方法有弱点,使它不适合用于加密。特别是,用给定的MD5哈希值构造字符串太容易了。这些缺点并不影响PostgreSQL使用MD5的加密方式,但使用更好的散列算法仍然是有意义的:

  • 昂贵的哈希函数使暴力密码攻击更加困难
  • 在安全审计期间,如果PostgreSQL最好不要使用具有弱点的散列函数
    因此在v10中引入了对scram-sha-256支持。如果可以,请开始使用新的散列方法。蛮力密码攻击难度的增加使其值得一试。

切换到的问题 scram-sha-256

有两个问题使得从MD5切换到变得困难scram-sha-256:

  • 由于PostgreSQL不知道原来的明文密码,所以在修改了数据库密码加密方式为scram-sha-256后,用户必须重新设置密码。
  • PostgreSQL客户端必须支持scram-sha-256身份验证,因此使用某些旧的客户端软件可能不支持scram-sha-256,这种情况下身份验证会失败。

当服务器设置认证方式scram-sha-256时,使用旧版本的libpq连接数据库时,会提示错误消息:

authentication method 10 not supported

一个旧的 JDBC 驱动程序会告诉你:

The authentication type 10 is not supported.

旧版本的 Npgsql 将返回:

Authentication method not supported (Received: 10)

切换到scram-sha-256的详细步骤

实际上,按照以下方法,转换成scram-sha-256并不困难:

1.升级客户端软件
升级所有太旧而无法支持新身份验证方法的PostgreSQL客户端软件和驱动程序。无论如何,这都是一个好主意,因为卡在旧的、未维护的软件上从来都不是明智之举。

2.更改password_encryption参数
编辑postgresql.conf并将参数更改为

password_encryption = scram-sha-256

确保删除已经删除了参数前面的#号。然后重新加载数据库配置文件

pg_ctl reload -D /postgres/datadir

/postgres/datadir 为PostgreSQL数据目录。或者,您可以运行下面的SQL语句:

SELECT pg_reload_conf();

查看日志文件以查看重新加载是否成功,并通过SQL检查参数值是否已更新:

SHOW password_encryption;

请注意,即使您更改了参数,如果pg_hba.conf设置的认证方式仍然是的MD5,旧的以MD5方式加密的密码仍然有效。

3.再次设置所有密码
所有设置为密码认证的用户都必须修改密码。在中psql,超级用户可以使用以下命令更改任何用户的密码

\password user_name

即使用户设置了与以前相同的密码,密码也将使用SHA-256进行散列。在继续下一步之前,检查表pg_authid,确保它不再包含MD5哈希密码。

4.在pg_hba.conf中更改身份验证方法
这一步不是绝对必要的,因为即使在pg_hba.conf中身份验证方法设置为md5,PostgreSQL将对使用scram-sha-256方式加密的密码使用scram-sha-256认证方式。这是一个兼容性功能。

尽管如此,您还是应该调整pg_hba.conf,将所有出现的"md5"替换为"scram-sha-256"。这将阻止仍然使用旧MD5密码的用户进行身份验证。

之后,像上面一样重新加载配置。然后检查日志文件或检查视图pg_hba_file_rules,查看重新加载是否成功。

结论

从上面可以看出,在pg_hba.conf文件中修改md5认证方式并不那么困难。困难的是,您必须重新设置所有数据库用户的密码,并可能不得不升级旧的客户端软件。

最后修改时间:2022-01-06 14:46:14
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论