如何使用 validate_password 插件来提高我的 Amazon RDS for MySQL 数据库实例的安全性?

2 分钟阅读
0

我有一个运行 MySQL 的 Amazon Relational Database Service(Amazon RDS)数据库实例。我想使用 validate_password 插件来测试我的密码并提高数据库实例的安全性。

简短描述

MySQL 提供了一个 validate_password 插件,您可以使用它来提高 RDS for MySQL 数据库实例的安全性。该插件使用数据库实例的数据库参数组中的参数来强制实施密码策略。运行 MySQL 版本 5.7 和 8.0 的数据库实例支持该插件。

**注意:**validate_password 插件是一个插件,不是默认 MySQL 配置的一部分。当 Amazon RDS 创建 MySQL 数据库实例时,默认情况下不会安装该插件。

解决方法

为 RDS for MySQL 数据库实例启用 validate_password 插件

使用主要用户连接到 RDS for MySQL 数据库实例并运行以下命令:

MySQL [(none)]> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

这将安装 validate_password 插件,然后使用默认参数值运行该插件。

验证 RDS for MySQL 数据库实例上已安装并激活 validate\ _password 插件

在数据库实例上运行以下查询以检查 validate\ _password 插件的状态:

MySQL [(none)]> SELECT plugin_name, plugin_status,
plugin_type, plugin_library FROM information_schema.plugins WHERE
plugin_name='validate_password';

    +-------------------+---------------+-------------------+----------------------+
    | plugin_name       | plugin_status | plugin_type       | plugin_library       |
    +-------------------+---------------+-------------------+----------------------+
    | validate_password | ACTIVE        | VALIDATE PASSWORD | validate_password.so |
    +-------------------+---------------+-------------------+----------------------+

检查 validate\ _password 插件的默认值

运行以下查询以检查该插件的默认参数值:

MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'validate_password%';

以下是每个参数的描述:

validate_password_check_user_name

  • 值 - OFF
  • 描述 - 空白

validate_password_dictionary_file

  • 值 - 空白
  • 描述 - 空白

validate_password_length

  • 值 - 8
  • 描述 - 最小密码长度

validate_password_mixed_case_count

  • 值 - 1
  • 描述 - 要求密码包含大小写字符

validate_password_number_count

  • 值 - 1
  • 描述 - 要求密码至少包含一个数字

validate_password_policy

  • 值 - MEDIUM
  • 描述 - 设置组标签

validate_password_special_char_count

  • 值 - 1
  • 描述 - 要求密码至少包含一个特殊字符

在数据库实例使用的自定义数据库参数组中配置这些参数,但 validate_password_dictionary_filevalidate_password_check_user_name 除外。如果您的数据库实例使用默认参数组,请创建一个新的参数组,然后将其附加到数据库实例。这是因为您无法修改默认参数组的参数设置。有关详细信息,请参阅使用参数组

**注意:**Amazon RDS 不验证密码。如果您使用以下任一方法来设置用户密码,则无论您的密码策略如何,更改都会成功:

  • AWS 管理控制台
  • AWS 命令行界面(AWS CLI)modify-db-instance 命令
  • Amazon RDS API ModifyDBInstance 操作

重置现有密码并创建符合策略的密码

安装并启用 password_validate 插件后,重置现有密码以符合新的验证策略。

1.    测试数据库实例上安装的 password_validate 插件。使用之前列出的默认插件参数来创建新的数据库用户:

MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

由于 validate_password_policy 设置为 MEDIUM,因此密码必须满足 MySQL validate_password_policy 文档中描述的标准。在前面的示例中,CREATE USER 命令因未满足密码策略而失败。您会收到一条类似于以下内容的错误消息:

“您的密码不满足当前的策略要求。”

2.    运行以下命令,使用符合密码策略的密码来创建用户:

MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'Password@57';
Query OK, 0 rows affected (0.01 sec)

3.    要验证您是否成功创建了用户,请运行以下命令:

MySQL [(none)]> SELECT user, host FROM mysql.user WHERE ( user='USER123' AND host='%' );
+-------------------+------+
| user              | host |
+-------------------+------+
| validate_password | %    |
+-------------------+------+
1 row in set (0.00 sec)

4.    要更改现有用户的密码,请运行以下命令。使用符合策略的密码,如以下示例所示:

mysql> alter user 'USER123'@'%' identified by 'Password@2020';
Query OK, 0 rows affected (0.01 sec)

要了解有关重置现有用户密码的更多信息,请参阅如何重置根密码(在 MySQL 网站上)。

关闭 RDS MySQL 数据库实例的 validate_password 插件

MySQL [(none)]> UNINSTALL PLUGIN validate_password;

相关信息

使用 RDS for MySQL 的密码验证插件

MySQL 文档中的密码验证插件

AWS 官方
AWS 官方已更新 8 个月前