Force Password Change
管理者がロール単位、個別ユーザー単位、またはパスワード有効期限ポリシーを通じて、ユーザーにパスワード変更を強制できるようにします。
force_password_change
インストール
composer require 'drupal/force_password_change:^2.0'
概要
Force Password Changeモジュールは、Drupalサイト向けの包括的なパスワード変更強制機能を提供します。管理者は複数の方法でユーザーにパスワード変更を強制できます:ロール単位(特定のロールのすべてのユーザーを強制)、個別ユーザー単位(プロフィール編集ページから)、または設定された期間後にパスワードが期限切れになった際の自動強制です。
このモジュールは即時強制(すべてのページ読み込み時)とログイン時のみの強制の両方をサポートしており、サイト管理者はパスワード変更をどの程度厳格に強制するかを柔軟に選択できます。パスワード変更が必要な場合、ユーザーは自動的にプロフィール編集ページにリダイレクトされ、サイトの使用を続ける前に新しいパスワードを入力する必要があります。
さらに、このモジュールはすべての新規ユーザーに初回ログイン時のパスワード変更を要求できるため、管理者が作成したアカウントがユーザー自身が選んだパスワードで保護されることを確実にします。保留中のパスワード変更、最終強制日、各ユーザーとロールの最終パスワード変更日を表示する包括的な統計情報も利用可能です。
Features
- 特定のロールのすべてのユーザーに即時または次回ログイン時のパスワード変更を強制
- プロフィール編集ページ(user/[UID]/edit)から個別ユーザーにパスワード変更を強制
- ロールごとにパスワード有効期限を設定(例:30日、90日、1年ごとにパスワード変更を要求)
- すべての新規ユーザーに初回ログイン時のパスワード変更を強制(サイト全体設定)
- 個別ユーザー作成時に初回ログインパスワード変更を強制するオプション
- ユーザー編集ページでのパスワード変更統計(保留状態、最終強制日、最終パスワード変更日を表示)
- ロールごとのステータスページ(ロール内のすべてのユーザーとパスワード変更詳細を表示)
- 設定可能な強制モード:すべてのページ読み込み時にチェック(より安全)またはログイン時のみチェック(オーバーヘッド軽減)
- ユーザーが複数のロールを持つ場合の優先度ベースのパスワード有効期限(最高優先度のロールが有効期限を決定)
- サイトにアクセスできなくなった場合のsettings.phpによる緊急無効化オプション
- ロール管理の操作にパスワード変更強制オプションへのリンクを追加
Use Cases
セキュリティ侵害後のパスワード変更強制
セキュリティインシデントが発生した場合、管理者はすぐにすべてのユーザー(または特定のロール)にパスワード変更を強制できます。/admin/config/people/force_password_changeに移動し、「Authenticated user」ロールのチェックボックスを選択して送信します。すべてのユーザーは次回のページ読み込みまたはログイン時にパスワードを変更することを要求されます。
コンプライアンスのためのパスワード有効期限ポリシーの実装
コンプライアンスのために定期的なパスワードローテーションを必要とする組織は、パスワード有効期限を設定できます。「パスワード有効期限を有効化」を有効にし、各ロールの期間を設定します(例:一般ユーザーは90日、管理者は30日)。管理者ロールが優先されるように重み/優先度システムを使用します。
管理者が作成したアカウントの保護
新入社員のアカウントを作成する際に、「初回ログイン時にパスワード変更を強制」を有効にして、管理者が設定した一時パスワードがユーザー自身が選んだパスワードに置き換えられることを確実にします。または、個別のアカウントを作成する際にユーザーごとの「初回ログイン時にパスワード変更を強制」チェックボックスをオンにします。
パスワード変更コンプライアンスの監査
/admin/config/people/force_password_change/list/{rid}のロール固有のステータスページを使用して、どのユーザーに保留中のパスワード変更があるか、各ユーザーが最後にパスワードを変更したのはいつかを確認します。これにより、パスワードポリシーに準拠していない可能性のあるユーザーを特定できます。
特定のユーザーへのパスワード変更強制
特定のユーザーの資格情報が侵害された可能性がある場合、そのプロフィール編集ページ(user/[UID]/edit)に移動し、「このユーザーにパスワード変更を強制」をチェックします。ユーザーは次回のページ読み込みまたはログイン時にパスワードを変更することを要求されます。
Tips
- ユーザーが長期間ログインしたままで即時のパスワード変更が重要でないサイトでは「ログイン時のみ」モードを使用してください - これによりパフォーマンスのオーバーヘッドが軽減されます。
- 異なるロールに異なる有効期限を設定してください - 管理者は一般ユーザー(90日)よりも頻繁なパスワード変更(30日)が必要かもしれません。
- 有効期限の優先度/重みシステムは、ユーザーが複数のロールを持つ場合に適用されます - 最も制限の厳しい有効期限ルールが最高の優先度(最低の重み)を持つようにしてください。
- モジュールは/admin/people/rolesのロール管理ページと統合され、各ロールの操作ドロップダウンに「パスワード変更強制オプション」を追加してすばやくアクセスできます。
- ユーザー編集ページのパスワード統計は、管理者がユーザーがパスワード変更要件に準拠しているかどうかを確認するのに役立ちます。
Technical Details
Admin Pages 2
/admin/config/people/force_password_change
Force Password Changeモジュールのメイン設定ページ。管理者がパスワード強制ポリシーの設定、ロールごとのパスワード変更強制、パスワード有効期限ルールの設定を行えます。
/admin/config/people/force_password_change/list/{rid}
特定のロールのすべてのユーザーの詳細なパスワード変更ステータスを表示します。2つのテーブルを表示:保留中のパスワード変更があるユーザーと保留中の変更がないユーザー。各ユーザーが最後にパスワード変更を強制された日時と最後にパスワードを変更した日時の統計を含みます。
権限 1
Hooks 5
hook_form_alter
ユーザー関連フォームを変更してパスワード変更機能を追加します。ロール編集フォームに「パスワード変更を強制」チェックボックスを追加し、ユーザープロフィールフォームにパスワード変更コントロールと統計を追加し、ユーザー登録フォームに初回ログイン強制オプションを追加します。
hook_user_login
「ログイン時のみチェック」モードが有効な場合に、ユーザーがパスワードを変更することを強制されるべきかどうかをチェックします。強制が保留中の場合、ユーザーをプロフィール編集ページにリダイレクトします。
hook_user_insert
新規ユーザー作成を処理します。サイト全体の「初回ログイン時にパスワード変更を強制」設定が有効な場合、新規ユーザーアカウントに初回ログイン時のパスワード変更を要求するフラグを設定します。
hook_user_delete
ユーザーアカウントが削除されたときにモジュールデータをクリーンアップします。force_password_change_uidsテーブルからユーザーのエントリを削除します。
hook_entity_type_alter
user_roleエンティティタイプを変更して、ロール管理ページの操作ドロップダウンに「パスワード変更強制オプション」を追加するカスタムリストビルダークラスを使用します。
Troubleshooting 4
settings.phpを編集し、以下を追加してください:$config['force_password_change.settings']['enabled'] = FALSE; これによりモジュールの機能が一時的に無効になります。問題を解決した後、この行を削除して再度有効にしてください。
「保留中のパスワード変更をチェック」設定を確認してください。「ログイン時のみ」に設定されている場合、ユーザーはすぐにではなく次回のログイン時にのみプロンプトが表示されます。即時強制するには、「すべてのページ読み込み時」に変更してください。
パスワード有効期限はロールの重みに基づく優先度システムを使用します。有効期限設定テーブルでロールをドラッグして正しく順序付けされていることを確認してください。リストの最上位のロールが優先されます。
モジュール設定で「初回ログイン時にパスワード変更を強制」が有効になっていることを確認してください。この設定が有効になる前またはモジュールがインストールされる前に作成されたユーザーは影響を受けません。
Security Notes 4
- このモジュールはパスワードの衛生管理を強制するのに役立ちますが、パスワードの複雑さは強制しません - パスワードポリシーモジュールとの併用を検討してください。
- settings.phpによる緊急無効化は一時的にのみ使用してください - 問題が解決したらすぐにモジュールを再度有効にしてください。
- 侵害の疑いがある後にパスワード変更を強制する場合、Session Limitなどのモジュールを使用して既存のセッションを無効にすることも検討してください。
- モジュールは強制変更時にユーザーが現在のパスワードを再利用することを防ぎますが、古いパスワードの再利用は防ぎません - 必要に応じて追加のパスワード履歴管理を検討してください。