作者:Harin Vadodaria 译: 徐轶韬
很久以前(在遥远的星系中……提示音乐!),MySQL增加了对身份验证插件的支持,这个插件现在称为mysql_native_password。mysql_native_password插件使用SHA1哈希
该插件的一个优点是,它允许使用质询-响应机制进行身份验证,可以在未加密的通道上验证客户端的身份,而无需发送实际密码。
随着时间的流逝,我们从身份验证方案的角度发现了需要改进的几个方面。
为了克服这些限制,从MySQL-8.0.3开始, 引入了一个新的身份验证插件 caching_sha2_password。从 MySQL-8.0.4开始,此插件成为MySQL服务器的默认身份验证插件。通过caching_sha2_password身份验证,我们可以解决上述问题,同时确保不影响性能。使用MySQL的应用程序可以以很高的频率连接和断开连接。
MySQL caching_sha2_password的设计重点是:
蛮力破解8字符长的密码以及5000轮盐化的哈希值将花费很长时间。比任何密码过期策略都要长——即使是最宽松的策略。更长的密码只会让事情变得更困难。
下表比较了mysql_native_password和caching_sha2_password。
请参考 https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/ 有关caching_sha2_password插件的博客文章。您也可以参考文档https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html以获取更多详细信息。页面https://dev.mysql.com/doc/dev/mysql-server/latest/page_caching_sha2_authentication_exchanges.html提供了有关如何使用caching_sha2_password插件执行身份验证的详细信息。
除了新插件外,还添加了一些功能来防止尝试识别用户信息并减轻弱密码相关的风险:
这些功能与caching_sha2_password结合使用,可增强用户帐户抵御密码攻击的能力。请根据您的要求使用它们,并让我们知道您的反馈。
另外,mysql系统模式的数据可以在静态时进行加密(InnoDB加密, 二进制日志加密)。
这样可以保护敏感数据,例如密码哈希,以防止未经授权的文件访问。这对OS /文件系统中隐藏了许多细节。参考信息– DBA(具有所需权限集的用户,例如mysql.user表上的SELECT权限)可以看到此哈希数据,而与使用静态数据加密方案无关。也就是说,即使是在这种情况下,对密码进行反向工程的成本仍然很高
如果仅凭安全性不足以促使您升级到caching_sha2_password,那么另一项商业动机就是遵守法规。大多数法规禁止将sha1,md5和其他弱密码用于密码或其他用途。(HIPAA,GDPR等)
总结一下:
与往常一样,非常感谢您使用MySQL!
本文分享自 MySQL解决方案工程师 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!