パスワード関連機能 – MariaDB Enterprise Server

2019年7月にリリースされた MariaDB Enterprise Server ではセキュリティの向上のため,Community Server ではデフォルト設定で無効となっている,Simple Password Check Plugin がデフォルトで有効となっています。
また,MariaDB Server 10.4.3 以降パスワード期限が設定できるようになっています。
今回はパスワード関連機能に関して解説したいと思います。

Simple Password Check プラグイン

MariaDB Enterprise Server 10.4 では,MariaDB Community Server とは異なりデフォルトで Simple Password Check Plugin が有効になっております。

MariaDB [(none)]> SHOW PLUGINS;
+-------------------------------+----------+---------------------+--------------------------+---------+
| Name                          | Status   | Type                | Library                  | License |
+-------------------------------+----------+---------------------+--------------------------+---------+
(中略)
| simple_password_check         | ACTIVE   | PASSWORD VALIDATION | simple_password_check.so | GPL     |

MariaDB Enterprise Server 10.4 のデフォルト設定では Simple Password Check Plugin 関連の設定は以下のようになっており,

MariaDB [(none)]> SELECT @@version;
+-----------------------------+
| @@version                   |
+-----------------------------+
| 10.4.8-3-MariaDB-enterprise |
+-----------------------------+

MariaDB [(none)]> show variables like 'simple_password_check%';
+-----------------------------------------+-------+
| Variable_name                           | Value |
+-----------------------------------------+-------+
| simple_password_check_digits            | 1     |
| simple_password_check_letters_same_case | 1     |
| simple_password_check_minimal_length    | 8     |
| simple_password_check_other_characters  | 1     |
+-----------------------------------------+-------+

以下のパスワードポリシーとなります。上から順に以下のような要件が必要とされます。

  • 少なくとも1つ数字を含む
  • 少なくとも1文字大文字小文字を混ぜる
  • パスワード長は少なくとも8文字
  • 少なくとも1文字記号を混ぜる

実際に新規ユーザを作成し,どのような挙動を示すか確認してみます。

MariaDB [(none)]> GRANT ALL ON *.* TO spc_test@localhost IDENTIFIED BY 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
MariaDB [(none)]> GRANT ALL ON *.* TO spc_test@localhost IDENTIFIED BY 'passw0rd';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
MariaDB [(none)]> GRANT ALL ON *.* TO spc_test@localhost IDENTIFIED BY 'passW0rd';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
MariaDB [(none)]> GRANT ALL ON *.* TO spc_test@localhost IDENTIFIED BY 'p@ssW0rd';
Query OK, 0 rows affected (0.001 sec)

ここで着目したいのは,MariaDB Server からはパスワードポリシーがどのように設定されているかの情報は一切与えられず,攻撃者は再攻撃の手がかりを得ることができないようになっています。
ただし,現在の水準では 8 文字のパスワード長は十分でないと考えられますので,16-20文字程度の長さのパスワード(パスフレーズ)を設定するのがよいと思われます。

パスワード期限

MaraiDB Server 10.4.3 以降,パスワードの期限が設定できるようになっています。
下記の例では,monty@localhost ユーザを 120 日のパスワード期限を設定した上で作成しています。

MariaDB [es]> CREATE USER monty@localhost IDENTIFIED BY 'p@ssW0rd' PASSWORD EXPIRE INTERVAL 120 DAY;
Query OK, 0 rows affected (0.001 sec)

パスワード期限を確認するには SHOW CREATE USER を用いることができます。

MariaDB [es]> SHOW CREATE USER monty@localhost;
+-------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for monty@localhost                                                                                                     |
+-------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER 'monty'@'localhost' IDENTIFIED BY PASSWORD '*F2026F2AC6F87151AB41400603EB238E116C3163' PASSWORD EXPIRE INTERVAL 120 DAY |
+-------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

また,ALTER USER ... PASSWORD EXPIRE NEVER;でパスワード期限を無効とすることが可能です。

MariaDB [es]> ALTER USER monty@localhost PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.001 sec)

MariaDB [es]> SHOW CREATE USER monty@localhost;
+--------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for monty@localhost                                                                                          |
+--------------------------------------------------------------------------------------------------------------------------+
| CREATE USER 'monty'@'localhost' IDENTIFIED BY PASSWORD '*F2026F2AC6F87151AB41400603EB238E116C3163' PASSWORD EXPIRE NEVER |
+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

まとめ

今回は MariaDB Enterprise Server で有効となっているパスワードチェックプラグインと,10.4 の新機能,パスワード期限に関して解説させていただきました。