迈克尔·帕奎尔:Postgres 16亮点——SCRAM迭代控制

迈克尔·帕奎尔:Postgres 16亮点——SCRAM迭代控制

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

SCRAM-SHA-256是一种用于PostgreSQL 10及以上版本的身份验证协议,使用SCRAM secrets作为密码的等效物。它基于RFC 5803,在pg_authid中存储。默认机制为“SCRAM-SHA-256”,迭代次数为4096,盐值长度为16个随机字节。可以自定义迭代次数和盐值长度。迭代次数越高,生成密钥的成本越高,但安全性更高。可以通过设置GUC参数来提高迭代次数。迭代次数对连接数和查询速度有影响,用户需权衡安全性和速度需求。

🎯

关键要点

  • SCRAM-SHA-256是一种用于PostgreSQL 10及以上版本的身份验证协议,使用SCRAM secrets作为密码的等效物。
  • SCRAM-SHA-256的默认迭代次数为4096,盐值长度为16个随机字节。
  • 可以自定义SCRAM的迭代次数和盐值长度,迭代次数越高,安全性越高,但计算成本也增加。
  • 低迭代次数加快身份验证速度,但更容易受到暴力攻击;高迭代次数则提供更强的保护,但会延长身份验证时间。
  • PostgreSQL 16将允许用户通过GUC参数配置SCRAM的迭代次数,以提高对暴力攻击的防护。
  • 生成SCRAM密钥的成本包括创建角色时的计算资源和连接尝试时的计算时间。
  • 在高迭代次数下,生成密钥可能需要较长时间,例如10M迭代的角色创建时间为5975.290毫秒。
  • 在身份验证时,低迭代次数的连接速度明显快于默认的4096迭代次数,用户需权衡安全性与速度。
  • 使用连接池可以缓解高迭代次数带来的性能瓶颈,用户应仔细选择安全性与速度的平衡。
➡️

继续阅读