0


【MySQL精通之路】MySQL8.0新增功能-安全和帐户管理

MySQL Enterprise Audit现在支持使用调度器组件配置执行定期任务,以刷新内存中的缓存。有关设置说明,请参阅启用审核日志刷新任务。

一个新的密码验证系统变量允许用户在尝试替换自己的MySQL帐户密码时必须更改的最小字符数的配置和强制执行。此新的验证设置是当前密码中总字符数的百分比。例如,如果validate_password.changed_characters_percentage的值为50,则替换帐户密码中的至少一半字符不能出现在当前密码中,或者密码被拒绝。有关更多信息,请参阅第8.4.3节“密码验证组件”。

MySQL Enterprise Edition现在提供基于组件的数据屏蔽和去标识功能,而不是基于MySQL 8.0.13中引入的插件库。MySQL Enterprise Data Masking和De-Identification组件支持多字节字符、屏蔽存储在数据库表中的字典以及一些新功能。有关更多信息,请参阅第8.5.1节“数据屏蔽组件与数据屏蔽插件”。

在MySQL 8.0.33之前,MySQL系统数据库用于MySQL Enterprise Audit的过滤器和用户帐户数据的持久存储。为了增强灵活性,新的audit_log_database服务器系统变量现在允许在服务器启动时在全局模式命名空间中指定其他数据库。mysql系统数据库是表存储的默认设置。

mysql系统数据库中的grant表现在是InnoDB(transactional)表。以前,这些是MyISAM(非事务性)表。授权表存储引擎的变化是账户管理报表行为随之发生变化的基础。以前,命名多个用户的帐户管理语句(如CREATE USER或DROP USER)可能对某些用户成功,对其他用户失败。现在,每条语句都是事务性的,要么对所有命名用户都成功,要么回滚,如果出现任何错误,则不起作用。如果成功,则将语句写入二进制日志,但如果失败,则不写入;在这种情况下,将发生回滚,并且不会进行任何更改。有关更多信息,请参阅第15.1.1节“原子数据定义语句支持”。

提供了一个新的caching_sha2_password身份验证插件。与sha256_password插件一样,caching_sha2_password实现了SHA-256密码哈希,但使用缓存来解决连接时的延迟问题。它还支持更多的传输协议,并且不需要针对OpenSSL进行链接即可实现基于RSA密钥对的密码交换功能。请参阅第8.4.1.2节“缓存SHA-2可插拔身份验证”。

caching_sha2_password和sha256_password身份验证插件提供了比mysql_native_password插件(在8.0.34中已弃用)更安全的密码加密,并且caching_sha 2_password提供了比sha256_pass更好的性能。由于caching_sha2_password具有这些优越的安全性和性能特性,它现在是首选的身份验证插件,也是默认的身份验证插头,而不是mysql_native_password。有关此默认插件更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅caching_sha2_password作为首选身份验证插件。

MySQL Enterprise Edition SASL LDAP身份验证插件现在支持GSSAPI/Kerberos作为Linux上MySQL客户端和服务器的身份验证方法。这在应用程序使用默认启用Kerberos的Microsoft Active Directory访问LDAP的Linux环境中非常有用。请参阅LDAP身份验证方法。

MySQL Enterprise Edition现在支持一种身份验证方法,该方法允许用户使用Kerberos对MySQL Server进行身份验证,前提是可以获得适当的Kerberos票证。有关详细信息,请参阅第8.4.1.8节“Kerberos可插拔身份验证”。

MySQL现在支持角色,这些角色是命名的特权集合。可以创建和删除角色。角色可以被授予特权,也可以被撤销特权。可以向用户帐户授予角色,也可以从用户帐户撤消角色。帐户的活动适用角色可以从授予该帐户的角色中选择,并且可以在该帐户的会话期间更改。有关更多信息,请参阅第8.2.10节“使用角色”。

MySQL现在引入了用户帐户类别的概念,根据系统用户和普通用户是否具有system_user权限来区分他们。参见第8.2.11节“账户类别”。

以前,除了某些模式之外,不可能授予全局应用的权限。如果启用了partial_revokes系统变量,现在就可以实现这一点。参见第8.2.12节“使用部分吊销的特权限制”。

GRANT语句有一个AS user[WITH ROLE]子句,该子句指定有关用于执行语句的特权上下文的附加信息。此语法在SQL级别可见,尽管其主要目的是通过使这些限制出现在二进制日志中,在部分撤销所施加的授予者特权限制的所有节点之间实现统一复制。参见第15.7.1.6节“GRANT声明”。

MySQL现在维护有关密码历史记录的信息,从而限制以前密码的重复使用。DBA可以要求在一定数量的密码更改或一段时间内不要从以前的密码中选择新密码。可以在全局范围内以及在每个帐户的基础上建立密码重用策略。

现在可以要求通过指定要替换的当前密码来验证更改帐户密码的尝试。这使得DBA可以防止用户在不证明他们知道当前密码的情况下更改密码。可以在全局范围内以及在每个帐户的基础上建立密码验证策略。

现在允许帐户拥有双密码,这使得分阶段的密码更改能够在复杂的多服务器系统中无缝执行,而不会停机。

MySQL现在允许管理员配置用户帐户,这样由于密码错误导致的连续登录失败次数过多会导致临时帐户锁定。每个帐户都可以配置所需的故障次数和锁定时间。

这些新功能使DBA能够更全面地控制密码管理。有关更多信息,请参阅第8.2.15节“密码管理”。

如果使用OpenSSL编译,MySQL现在支持FIPS模式,并且在运行时可以使用OpenSSL库和FIPS对象模块。FIPS模式对加密操作施加条件,例如对可接受的加密算法的限制或对更长密钥长度的要求。请参阅第8.8节“FIPS支持”。

服务器用于新连接的TLS上下文现在可以在运行时重新配置。此功能可能很有用,例如,可以避免重新启动运行时间过长以至于SSL证书过期的MySQL服务器。请参阅服务器端运行时配置和监视加密连接。

如果服务器和客户端都使用OpenSSL 1.1.1或更高版本编译,则OpenSSL 1.1.1支持用于加密连接的TLS v1.3协议,MySQL 8.0.16及更高版本也支持TLS v1.3。请参阅第8.3.2节“加密连接TLS协议和密码”。

MySQL现在将授予命名管道上客户端的访问控制设置为在Windows上成功通信所需的最小值。较新的MySQL客户端软件可以打开命名管道连接,而无需任何额外的配置。如果无法立即升级旧的客户端软件,则可以使用新的named_pipe_full_access_group系统变量为Windows组提供打开命名管道连接所需的权限。完全访问组中的成员身份应该是受限制的和临时的。

以前,MySQL用户帐户使用单一身份验证方法对服务器进行身份验证。从MySQL 8.0.27开始,MySQL支持多因素身份验证(MFA),这使得创建最多有三种身份验证方法的帐户成为可能。MFA支持包括以下变化:

CREATE USER和ALTER USER语法已扩展为允许指定多种身份验证方法。

authentication_policy系统变量允许通过控制可以使用的因素数量以及每个因素允许的身份验证类型来建立MFA策略。这限制了如何使用CREATE USER和ALTER USER语句中与身份验证相关的子句。

客户端程序有新的--password1、--password2和--password3命令行选项,用于指定多个密码。对于使用C API的应用程序,MYSQL_options4()C API函数的新MYSQL_OPT_USER_PASSWORD选项将启用相同的功能。

此外,MySQL Enterprise Edition现在支持使用智能卡、安全密钥和生物识别读取器等设备对MySQL Server进行身份验证。这种身份验证方法基于快速身份在线(FIDO)标准,并使用一对插件,即服务器端的authentication_FIDO和客户端的authentication _FIDO_client。服务器端FIDO身份验证插件仅包含在MySQL Enterprise Edition发行版中。MySQL社区发行版中没有包含它。但是,客户端插件包含在所有发行版中,包括社区发行版。这使得来自任何分发版的客户端都可以连接到加载了服务器端插件的服务器。

标签: mysql 安全 数据库

本文转载自: https://blog.csdn.net/qq_29519041/article/details/138964288
版权归原作者 Anakki 所有, 如有侵权,请联系我们删除。

“【MySQL精通之路】MySQL8.0新增功能-安全和帐户管理”的评论:

还没有评论