MySQL 8.0 の新しいパスワード ポリシーの詳細なシナリオ説明

テクニカル コミュニティのこの記事「New features | SupplementaryDetails of the New Password Policy of MySQL 8.0」では、MySQL 8.0 データベースの新しいパスワード ポリシーのいくつかの詳細なシナリオが説明されており、学ぶ価値があります。

MySQL 8.0 はこれまでにバージョン 8.0.34 までリリースされていますが、一連のバージョン更新を経て、さらにパスワードの機能強化が行われました。

 この記事では主に、パスワードに関連するいくつかのパラメータの使用方法の詳細を検証および分析し、実際の使用感を共有します。まず、MySQL 8.0バージョンの構文の構文構造の一部を見てみましょう CREATE USER 。 password_option

-- MySQL 8.0(新增了不同维度的密码控制)
password_option: {
PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]
| PASSWORD HISTORY {DEFAULT | N}
| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]
| FAILED_LOGIN_ATTEMPTS N
| PASSWORD_LOCK_TIME {N | UNBOUNDED}
}

-- MySQL 5.7(只包含密码过期属性配置)
password_option: {
PASSWORD EXPIRE
| PASSWORD EXPIRE DEFAULT
| PASSWORD EXPIRE NEVER
| PASSWORD EXPIRE INTERVAL N DAY
}

その中で、 MySQL 8.0 バージョン 構文CREATE USER の最初の 4 つのパスワード属性は、この記事で説明する最初の詳細です。MySQL グローバル パラメータとその属性に対応する意味は次のとおりです。

パラメータ名 デフォルト値 mysql.user テーブルの対応するフィールド 意味
default_password_lifetime 0 パスワード_有効期間 グローバルに設定されたパスワードの有効期間
パスワード_履歴 0 パスワード_再利用_履歴 再利用できない過去のパスワードの数をグローバルに設定します。
パスワードの再利用間隔 0 パスワード_再利用_時間 過去のパスワードが再利用されるまでの時間をグローバルに設定します
パスワード必須_現在の オフ パスワード必須_現在の グローバル設定でパスワードを変更する場合、現在のパスワードを入力する必要がありますか?

神話 1

テーブル mysql.user 内のパスワード関連オプションの対応するフィールドが NULL の場合の意味。

検証プロセス

これら 4 つのパスワード属性に基づいて具体的な値を設定し、設定後の構成は下図のようになります。

d32db6c92a6dec44cb350443f7f18046.png

ユーザーのパスワード属性を指定せずに新しいユーザーを作成します。

335101158f6532b0d586d47e0ab9f21a.png

ユーザーの作成後、 mysql.user ビューテーブルの対応するフィールドに表示される値はすべて NULL になります。

グローバルに構成された 4 つのプロパティが有効になっていませんか?

これが有効になると、ユーザーの作成時に対応する値が自動的に設定されます。このロジックに基づく理解は、新たに設定されたパスワードのグローバル属性は、過去に作成されたユーザーには有効ではないという、別の層の誤解にもつながります。

既存のユーザーを 個別にALTER USER 処理する必要がありますか?

この疑問は考えれば考えるほど間違っているのですが、新規ユーザー作成時にグローバル設定が有効にならなければ、いつから有効になるのか意味が無いのではないでしょうか? 公式 ドキュメント[1]mysql.user の対応するフィールド値の意味の記述をさらに確認した結果、回答が得られました。元の説明は次のとおりです。テーブル内でこれら 4 つの値が NULL である場合、それは設定が有効になっていないことを意味するのではなく、グローバル パスワード ポリシー設定が継承されていることを意味します。

de1552bb3cf7c10f57afa9c32db41000.png

そのため、私は公式ドキュメントを十分に読んでおらず、NULL 値の意味(重要な理由)を誤解していましたが、確かにこの「落とし穴」は簡単に踏むことができます。参考までに、グローバルパラメータとシングルユーザ属性設定の有効対応表も掲載します。

2e67a6ec4a83cd246ceb0c45cd3d93e2.png
PCでの閲覧を推奨します

神話 2

ここでは誤解として述べていますが、実際には文書の記載が不完全であることを理解すべきです。まずドキュメントの説明を見てみましょう. 翻訳は次のとおりです: これらの 2 つのパラメータを使用して、履歴パスワードの再利用ポリシーを制御できます: 1 つは回数ポリシーに基づいており、もう 1 つは時間ポリシーに基づいています。たとえば、過去 6 件のパスワードまたは 365 日以内に設定されたパスワードの使用を禁止するなど、同時に設定できます。2 つのパラメータが OR 論理であることがわかります。

d49923cc847fec56d1b20f6889c9f4be.png

実際の検証シナリオ

シーン1

パスワード履歴 > 0 およびパスワード再使用間隔 = 0

結論:過去のパスワード数 制御ポリシーは効果的であり、期待どおりです。

シーン2

パスワード履歴 = 0 およびパスワード再使用間隔 > 0

結論:過去のパスワード時間 管理ポリシーは効果的であり、期待どおりです。

シーン3

パスワード履歴 > 0 および パスワード再使用間隔 > 0

結論:履歴パスワード時間 制御ポリシーは有効になりますが、履歴パスワード時間 制御ポリシーは有効になりません。mysql.password_historyは指定された時間内のすべてのパスワードを記録し、再利用することはできません。

したがって

  • password_reuse_intervalpassword_history 時間の制御戦略は時間の制御 よりも優先されます 。

    • 2 つのパラメータが同時に有効になることはなく、2 つのパラメータが同時に設定されると、より厳格な設定が有効なポリシーとして使用されます。

  • ポリシーは基本的に、使用状況や機能には影響しません。

  • 参考文献

  • [1]

    許可テーブル:  https://dev.mysql.com/doc/refman/8.0/en/grant-tables.html

この記事が役立つと思われる場合は、記事の最後にある「いいね」と「読む」をクリックしていただくか、pyq に直接転送してください。

0733dd5201fd1a6bea60045485f503a2.png

最近更新された記事:

いくつかのデータ漏洩シナリオのトラブルシューティングと解決策

最近いくつかの問題が発生しました

金融知識 - 定量取引

1,300件の公的アカウント記事の分類と索引付け

公開アカウントに関する記事1,300件の統計

最近の人気記事:

Oracle RAC Cache Fusionに関する古典的な論文を推奨します

『レッド・アラート』ゲームのオープンソースコードが私たちにもたらす衝撃

記事の分類とインデックス作成:

公会計記事1,200件の分類と索引付け

おすすめ

転載: blog.csdn.net/bisal/article/details/132867401