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

MySQL 6.8 FIPS 支持

原创 由迪 2021-09-30
1183

MySQL 支持 FIPS 模式,如果使用 OpenSSL 1.0.2 编译,并且 OpenSSL 库和 FIPS 对象模块在运行时可用。

服务器端的 FIPS 模式适用于服务器执行的加密操作。这包括在服务器内运行的复制(源/副本和组复制)和 X 插件。FIPS 模式也适用于客户端尝试连接到服务器的情况。

以下部分描述了 FIPS 模式以及如何在 MySQL 中利用它:

FIPS 概述

联邦信息处理标准 140-2 (FIPS 140-2) 描述了联邦(美国政府)机构可能需要的安全标准,用于保护敏感或有价值的信息的加密模块。要被视为可接受此类联邦用途,加密模块必须通过 FIPS 140-2 认证。如果旨在保护敏感数据的系统缺少适当的 FIPS 140-2 证书,联邦机构将无法购买。

OpenSSL 等产品可以在 FIPS 模式下使用,尽管 OpenSSL 库本身未针对 FIPS 进行验证。相反,OpenSSL 库与 OpenSSL FIPS 对象模块一起使用,以使基于 OpenSSL 的应用程序能够在 FIPS 模式下运行。

有关 FIPS 及其在 OpenSSL 中实现的一般信息,这些参考资料可能会有所帮助:

重要的

FIPS 模式对加密操作施加了条件,例如对可接受的加密算法的限制或对更长密钥长度的要求。对于 OpenSSL,确切的 FIPS 行为取决于 OpenSSL 版本。有关详细信息,请参阅 OpenSSL FIPS 用户指南。

MySQL 中 FIPS 模式的系统要求

为了让 MySQL 支持 FIPS 模式,必须满足以下系统要求:

  • 在构建时,必须使用 OpenSSL 编译 MySQL。如果编译使用不同于 OpenSSL 的 SSL 库,则无法在 MySQL 中使用 FIPS 模式。

    此外,MySQL 必须使用经认证可与 FIPS 一起使用的 OpenSSL 版本进行编译。OpenSSL 1.0.2 已通过认证,但 OpenSSL 1.1.1 未经过认证。MySQL 最新版本的二进制发行版是在某些平台上使用 OpenSSL 1.1.1 编译的,这意味着它们未通过 FIPS 认证。这会导致可用 MySQL 功能的权衡,具体取决于系统和 MySQL 配置:

    • 使用具有 OpenSSL 1.0.2 和所需 FIPS 对象模块的系统。在这种情况下,如果您使用使用 OpenSSL 1.0.2 编译的二进制发行版,或者使用 OpenSSL 1.0.2 从源代码编译 MySQL,则可以为 MySQL 启用 FIPS 模式。但是,在这种情况下,您不能使用 TLSv1.3 协议或密码套件(需要 OpenSSL 1.1.1)。此外,您使用的 OpenSSL 版本在 2019 年底达到了生命周期终止状态。

    • 使用具有 OpenSSL 1.1.1 或更高版本的系统。在这种情况下,您可以使用二进制包安装 MySQL,除了其他已经支持的 TLS 协议之外,您还可以使用 TLSv1.3 协议和密码套件。但是,您不能为 MySQL 启用 FIPS 模式。

  • 在运行时,OpenSSL 库和 OpenSSL FIPS 对象模块必须可用作共享(动态链接)对象。可以构建静态链接的 OpenSSL 对象,但 MySQL 不能使用它们。

FIPS 模式已在 EL7 上针对 MySQL 进行了测试,但可能适用于其他系统。

如果您的平台或操作系统提供 OpenSSL FIPS 对象模块,您可以使用它。否则,您可以从源代码构建 OpenSSL 库和 FIPS 对象模块。使用 OpenSSL FIPS 用户指南中的说明(请参阅 FIPS 概述)。

在 MySQL 中配置 FIPS 模式

MySQL 在服务器端和客户端启用对 FIPS 模式的控制:

  • 所述ssl_fips_mode系统变量控制是否将服务器在FIPS模式操作。

  • --ssl-fips-mode客户端选项控制是否给定的MySQL客户端在FIPS模式下运行。

ssl_fips_mode系统变量和--ssl-fips-mode 客户端选项允许这些值:

  • OFF:禁用 FIPS 模式。

  • ON:启用 FIPS 模式。

  • STRICT:启用“严格” FIPS 模式。

在服务器端,数值 ssl_fips_mode0、1 和 2 分别相当于OFFON、 和STRICT

重要的

通常,STRICT比 施加更多限制ON,但 MySQL 本身除了向 OpenSSL 指定 FIPS 模式值之外没有特定于 FIPS 的代码。FIPS 模式的确切行为 ONSTRICT取决于 OpenSSL 版本。有关详细信息,请参阅 OpenSSL FIPS 用户指南(请参阅FIPS 概述)。

笔记

如果 OpenSSL FIPS 对象模块不可用,则ssl_fips_mode和 的唯一允许值 --ssl-fips-modeOFF。尝试将 FIPS 模式设置为不同的值时会发生错误。

服务器端的 FIPS 模式适用于服务器执行的加密操作。这包括在服务器内运行的复制(源/副本和组复制)和 X 插件。

FIPS 模式也适用于客户端尝试连接到服务器的情况。启用后,无论是在客户端还是服务器端,它都会限制可以选择哪些受支持的加密密码。但是,启用 FIPS 模式并不要求必须使用加密连接,或者必须加密用户凭据。例如,如果启用 FIPS 模式,则需要更强的加密算法。特别是 MD5 受到限制,因此尝试使用诸如此类的加密密码建立加密连接是RC4-MD5行不通的。但是 FIPS 模式并没有阻止建立未加密的连接。(为此,您可以使用REQUIRE子句 for CREATE USERor ALTER USER对于特定用户帐户,或设置 require_secure_transport系统变量以影响所有帐户。)

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

评论