序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さの設定や、パスワードが定期的に変更されているかどうかなど、パスワードのセキュリティの問題について検討されます。特にセキュリティ評価を実施する場合、評価機関は暗号化セキュリティ戦略を必要とします。実際、MySQL システム自体はパスワードの複雑さと自動有効期限ポリシーを設定できますが、ほとんど使用されず、ほとんどの学生は詳細を理解していません。この記事では、データベース アカウントのパスワードの複雑さと自動有効期限ポリシーを設定する方法について説明します。 1. パスワードの複雑さのポリシー設定MySQL システムには、パスワードの強度を検証できる validate_password プラグインが付属しています。指定された強度を満たさないパスワードは設定できません。 MySQL 5.7 および 8.0 では、このプラグインがデフォルトで有効になっていないようです。これにより、123、123456 などのパスワードを自由に設定できるようになります。ルートからパスワードの強度を規制したい場合は、このプラグインを有効にします。このプラグインを使用してパスワードの複雑さのポリシーを設定する方法を見てみましょう。 1) このプラグインがインストールされているかどうかを確認する このプラグインがインストールされているかどうかを確認するには、MySQL コマンドラインを入力して show plugins を使用するか、validate_password 関連のパラメータを確認します。関連するパラメータがない場合、このプラグインはインストールされていないことを意味します # インストール前に確認してください。空の場合は、このプラグインがインストールされていないことを意味します。mysql> show variables like 'validate%'; 空のセット (0.00 秒) 2)validate_passwordプラグインをインストールする # このプラグインは INSTALL PLUGIN コマンドでインストールできます # ファイル名の拡張子はプラットフォームごとに異なります。Unix および Unix ライクなシステムの場合は .so、Windows の場合は .dll です mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so'; クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.28 秒) # validate_password 関連のパラメータを表示しますmysql> show variables like 'validate%'; +--------------------------------------+--------+ | 変数名 | 値 | +--------------------------------------+--------+ | ユーザー名のパスワードチェックを検証 | オン | | パスワード辞書ファイルを検証する | | | パスワードの長さを検証 | 8 | | パスワードの大文字と小文字が混在するカウントを検証 | 1 | | パスワードの検証回数 | 1 | | パスワードポリシーの検証 | 中 | | パスワードの特殊文字数を検証 | 1 | +--------------------------------------+--------+ セット内の行数は 7 です (0.00 秒) 3) パスワード強度関連パラメータの説明 validate_password プラグインをインストールすると、パスワードの強度に関連するいくつかの追加パラメータが追加されます。これらのパラメータは、文字通りの意味から簡単に理解できます。以下は、いくつかの重要なパラメータの簡単な説明です。 1. パスワードポリシーを検証する パスワードポリシーを表します。デフォルトはMEDIUMです。設定可能な値は次のとおりです。
2. パスワード辞書ファイルの検証 パスワードを構成するために使用される辞書ファイル。validate_password_policy が STRONG に設定されている場合、パスワード辞書ファイルを構成することができます。辞書ファイル内のパスワードは使用できません。 3. パスワードの長さを検証する パスワードの最小文字数を設定するために使用します。デフォルト値は8です。 4. パスワードの大文字小文字の混在カウントを検証する validate_password_policy が MEDIUM または STRONG に設定されている場合、パスワード内の小文字と大文字の数。デフォルトは 1 で、最小値は 0 です。デフォルトでは、少なくとも 1 つの小文字と 1 つの大文字が含まれます。 5. パスワードの検証 validate_password_policyがMEDIUMまたはSTRONGに設定されている場合、パスワードの最小桁数は、デフォルトは1、最小は0です。 6. パスワードの特殊文字数を検証する validate_password_policyがMEDIUMまたはSTRONGに設定されている場合、パスワード内の特殊文字の最小数は、デフォルトは1、最小は0です。 4) パスワードの複雑さに関するポリシーの具体的な設定 上記のパラメータを学習した後、自分の状況に応じてパスワードの複雑さのポリシーを設定できます。たとえば、パスワードを少なくとも 10 文字にし、大文字と小文字、数字、特殊文字を含める場合は、次のように設定できます。 5) パスワードの複雑さをテストする パスワードの複雑さのポリシーは、有効になった後の操作に対してのみ有効です。たとえば、以前にパスワードが 123 のアカウントを持っていた場合は、そのアカウントを引き続き使用できますが、パスワードを再度変更する場合は、複雑さのポリシーを満たす必要があります。次に、パスワードの複雑さのポリシーの具体的な効果をテストしてみましょう。 # 新しいユーザーを作成し、パスワードを設定します。mysql> create user 'testuser'@'%' identified by '123'; エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません mysql> 'ab123' によって識別される 'testuser'@'%' のユーザーを作成します。 エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません mysql> 'Ab@123' によって識別されるユーザー 'testuser'@'%' を作成します。 エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません mysql> 'Bsdf@5467672' によって識別されるユーザー 'testuser'@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) # パスワードを変更するmysql> alter user 'testuser'@'%' identified by 'dfgf3435'; エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません mysql> ユーザー 'testuser'@'%' を変更します ('dBsdf@5467672' で識別されます)。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 2. パスワードの有効期限を自動的に設定するパスワードの複雑さに関するポリシーの設定に加えて、自動パスワード有効期限も設定できます。たとえば、パスワードは 90 日ごとに期限切れになり、再度使用するには変更する必要があります。これにより、データベース アカウントのセキュリティが強化されます。自動パスワード有効期限を設定する方法を見てみましょう。 特定のアカウントのパスワードの有効期限を個別に設定する ALTER USER ステートメントを使用して、単一のアカウント パスワードを期限切れにしたり、アカウントの有効期限を変更したりします。 # mysql.user システム テーブルを通じてデータベース アカウントのステータスを確認します。mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user; +------------------+----------+------------------+-------------------+-----------------------+----------------+ | ユーザー | ホスト | パスワードの有効期限 | パスワードの有効期間 | パスワードの最終変更日 | アカウントがロックされています | +------------------+----------+------------------+-------------------+-----------------------+----------------+ | expuser | % | N | NULL | 2021-01-05 14:30:30 | N | | ルート | % | N | NULL | 2020-10-30 14:45:43 | N | | テストユーザー | % | N | NULL | 2021-01-04 17:22:37 | N | | mysql.infoschema | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.session | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.sys | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | ルート | ローカルホスト | N | NULL | 2020-10-30 14:38:55 | N | +------------------+----------+------------------+-------------------+-----------------------+----------------+ セット内の行数は 7 です (0.01 秒) # expuser アカウントのパスワードを直ちに期限切れにします。mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE; クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> mysql.user から user、host、password_expired、password_lifetime、password_last_changed、account_locked を選択します。 +------------------+----------+------------------+-------------------+-----------------------+----------------+ | ユーザー | ホスト | パスワードの有効期限 | パスワードの有効期間 | パスワードの最終変更日 | アカウントがロックされています | +------------------+----------+------------------+-------------------+-----------------------+----------------+ | expuser | % | Y | NULL | 2021-01-05 14:30:30 | N | | ルート | % | N | NULL | 2020-10-30 14:45:43 | N | | テストユーザー | % | N | NULL | 2021-01-04 17:22:37 | N | | mysql.infoschema | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.session | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.sys | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | ルート | ローカルホスト | N | NULL | 2020-10-30 14:38:55 | N | +------------------+----------+------------------+-------------------+-----------------------+----------------+ セット内の行数は 7 です (0.00 秒) # アカウントのパスワードを期限切れにならないように変更します。mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE NEVER; クエリは正常、影響を受けた行は 0 行 (0.01 秒) # このアカウントのパスワードの有効期限を 90 日に設定します。mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE INTERVAL 90 DAY; クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> mysql.user から user、host、password_expired、password_lifetime、password_last_changed、account_locked を選択します。 +------------------+----------+------------------+-------------------+-----------------------+----------------+ | ユーザー | ホスト | パスワードの有効期限 | パスワードの有効期間 | パスワードの最終変更日 | アカウントがロックされています | +------------------+----------+------------------+-------------------+-----------------------+----------------+ | expuser | % | N | 90 | 2021-01-05 14:41:28 | N | | ルート | % | N | NULL | 2020-10-30 14:45:43 | N | | テストユーザー | % | N | NULL | 2021-01-04 17:22:37 | N | | mysql.infoschema | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.session | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | mysql.sys | ローカルホスト | N | NULL | 2020-10-30 14:37:09 | Y | | ルート | ローカルホスト | N | NULL | 2020-10-30 14:38:55 | N | +------------------+----------+------------------+-------------------+-----------------------+----------------+ セット内の行数は 7 です (0.00 秒) # このアカウントでデフォルトのパスワード有効期限グローバルポリシーを使用するようにします。mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT; クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql.user システム テーブルには、各アカウントの関連情報が記録されます。password_expired フィールドの値が Y の場合、パスワードの有効期限が切れていることを意味します。有効期限が切れたパスワードでもログインできますが、操作は実行できません。操作を実行すると、次のメッセージが表示されます: ERROR 1820 (HY000): You must reset your password using ALTER USER statement before performing this statement. You must change the password before you can perform normal operations. 有効期限が 90 日などの特定のアカウントの場合、データベース システムは現在の時刻とパスワードが最後に変更された時刻の差を比較します。パスワードの最後の変更から 90 日以上経過すると、アカウントのパスワードは期限切れとしてマークされ、操作を実行する前にパスワードを変更する必要があります。 グローバル有効期限ポリシーを設定する グローバル パスワード自動有効期限ポリシーを構築するには、default_password_lifetime システム変数を使用します。バージョン 5.7.11 より前では、default_password_lifetime のデフォルト値は 360 (パスワードは約 1 年に 1 回変更する必要があります) でしたが、それ以降のバージョンではデフォルト値は 0 で、パスワードの有効期限がないことを意味します。このパラメータの単位は日です。たとえば、このパラメータを 90 に設定すると、グローバル パスワードの自動有効期限ポリシーは 90 日になります。 # グローバル有効期限ポリシーを設定します。最初に手動で変更してから、構成ファイルに追加します。mysql> SET GLOBAL default_password_lifetime = 90; クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> 'default_password_lifetime' のような変数を表示します。 +---------------------------+-------+ | 変数名 | 値 | +---------------------------+-------+ | デフォルトパスワードの有効期間 | 90 | +---------------------------+-------+ セット内の 1 行 (0.00 秒) # 再起動を有効にするために設定ファイルを書き込む [mysqld] デフォルトパスワードの有効期間 = 90 期限切れのパスワードを現在の値に設定して「リセット」することもできますが、ポリシー上の理由から、別のパスワードを選択することをお勧めします。 要約:この記事では、データベース パスワードのセキュリティ戦略として、パスワードの複雑さとパスワードの有効期限戦略の 2 つを主に紹介します。戦略が多ければ多いほど、安心できます。覚えておいてください:安全は軽視できる問題ではありません。 上記は年末の「MySQLパスワードは安全ですか?」の詳細内容です。MySQLパスワードのセキュリティに関する詳細については、123WORDPRESS.COMの他の関連記事にご注目ください。 以下もご興味があるかもしれません:
|
Redux はデータ状態管理プラグインです。React や Vue を使用してコンポーネント化された...
vueプロジェクトでは、アップロードした画像に透かしを追加して参照できるようにするアップグレード版...
GROUP BY ステートメントは、Aggregate 関数と組み合わせて使用され、1 つ以上の...
これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...
ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...
テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...
フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...
目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...
この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...
MYSQLバージョン:MySQL Community Server 5.7.17、インストール不要版...
Flappy Bird は、誰もがアプリでプレイしたことがある非常にシンプルな小さなゲームです。ここ...
<br />原文: プログレッシブエンハンスメントを理解するアーロン・ガスタフソン翻訳:...
この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...
CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると...
まず依存関係をダウンロードします: cnpm i -S vue-uuid ali-oss画像フィール...