Masquerade
特権ユーザーが一時的に他のユーザーアカウントに切り替えることを可能にし、元のアカウントの記録を保持して簡単に戻れるようにします。
masquerade
インストール
composer require 'drupal/masquerade:8.x-2.0'
概要
Masquerade モジュールは、管理者や特権ユーザーが一時的に別のユーザーアカウントの身元を引き受けるための、安全で直感的な方法を提供します。これは、デバッグ、ユーザー固有の機能のテスト、またはユーザーの視点からサイトを体験することでサポートを提供する場合に特に有用です。
このモジュールはセッション内で元のユーザーアカウントを追跡し、ユーザーがいつでも簡単に自分のアカウントに戻れるようにします。Masquerade は Drupal の組み込みユーザーインターフェース(Toolbar モジュールやコンテキストリンクを含む)とシームレスに統合され、スムーズなユーザー体験を提供します。
セキュリティは Masquerade の設計における中核的な原則です。組み込みのアクセス制御メカニズムにより、デフォルトで権限昇格を防止します。ユーザーは自分と同等かそれ以下の権限を持つユーザーにのみなりすますことができます。UID 1(スーパー管理者)は誰にでもなりすますことができますが、明示的な権限がない限り、誰も UID 1 になりすますことはできません。
Features
- 元のセッションを保持しながら一時的に別のユーザーアカウントに切り替え、簡単に戻ることが可能
- ユーザー名によるクイックユーザー切り替えのためのオートコンプリート対応ブロックフォーム
- なりすまし中に「Unmasquerade」リンクを表示する Toolbar 統合
- 管理用ユーザー一覧ページでの「Masquerade as」エンティティ操作
- どのロールがどのロールになりすませるかを細かく制御できるロールベースの権限
- デフォルトで権限昇格を防止する組み込みセキュリティ
- hook_masquerade_access による細かいアクセス制御のカスタマイズ
- 専用キャッシュコンテキストを持つセッションベースのなりすまし追跡
- なりすましがターゲットユーザーの最終アクセス時刻を更新するかどうかを制御するオプション設定
- なりすましリンクを表示するためのユーザー表示用追加フィールド
- D7 の権限を D8/D9 相当にマッピングするマイグレーションサポート
Use Cases
カスタマーサポートとデバッグ
サポートスタッフは顧客になりすまして、顧客が見ているものを正確に確認し、権限の問題を診断したり、報告されたバグを再現したりできます。顧客のパスワードは必要ありません。問題を解決した後、すぐに自分のアカウントに戻ることができます。
編集者によるコンテンツレビュー
編集者はコンテンツ作成者になりすまして、投稿されたコンテンツが作成者の視点から正しく表示されているかを確認できます。フィールドの可視性、アクセス制限、ワークフローの状態を確認します。
トレーニングとドキュメント作成
トレーニング資料を作成する管理者は、異なるロールを持つユーザーになりすまして、各ロールが実際に見ている画面の正確なスクリーンショットをキャプチャでき、ドキュメントが実際のユーザー体験を反映していることを確認できます。
ロールベースのアクセステスト
開発やサイト設定中に、開発者は特定のロールを持つユーザーになりすまして、複数のテストアカウントを作成することなく、権限とアクセス制限が正しく機能しているかをテストできます。
ユーザーオンボーディング支援
管理者は新しく作成されたユーザーになりすまして、初期プロファイル設定の完了、プリファレンスの設定、または支援が必要なユーザーに代わってその他のオンボーディングタスクを実行できます。
Tips
- UID 1(スーパー管理者)は追加の権限なしで常に任意のユーザーになりすますことができますが、他のユーザーが UID 1 になりすますには「Masquerade as super user」権限を明示的に付与する必要があります
- モジュールはセッションベースの追跡を使用するため、なりすましはページナビゲーションを通じて維持されますが、セッションの有効期限が切れるかブラウザを閉じると終了します
- クイックアクセスには Masquerade ブロックを使用するか、直接なりすますにはユーザー一覧の「Masquerade as」操作を使用してください
- なりすましは hook_user_logout(元のユーザー用)と hook_user_login(ターゲットユーザー用)の両方をトリガーし、他のモジュールが切り替えに応答できるようにします
- hook_masquerade_access を介してカスタムアクセス制御を実装でき、広範な権限を必要とせずに「demo」ユーザーへのなりすましを許可するなどのシナリオに対応できます
Technical Details
Admin Pages 3
/masquerade
ユーザー名を入力して別のユーザーアカウントに切り替えることができる masquerade フォームを含むページ。このページは、少なくとも1つの masquerade 権限を持つすべてのユーザーがアクセスできます。
/user/{user}/masquerade
特定のユーザーになりすますための直接アクション URL。このルートは通常、ユーザー一覧の「Masquerade as」操作やユーザープロフィールの masquerade リンクからアクセスされます。
/unmasquerade
ユーザーを元のアカウントに戻します。現在なりすまし中の場合のみアクセス可能です。
権限 3
Hooks 1
hook_masquerade_access
特定のターゲットユーザーへのなりすましアクセスを制御します。この hook により、モジュールはデフォルトの権限ベースのチェックを超えたカスタムアクセスロジックを実装できます。
Troubleshooting 5
適切な権限があるか確認してください。「Masquerade as any user」権限、またはターゲットユーザーが持つすべてのロールに対する「Masquerade as [role]」権限が必要です。UID 1 には特別な「Masquerade as super user」権限が必要です。
操作は、なりすます権限を持っているユーザーに対してのみ表示されます。ターゲットユーザーがあなたにない権限を持っている場合、組み込みの権限昇格防止機能によりリンクは表示されません。
別のユーザーになりすます前に、元のアカウントに戻る必要があります。ツールバーまたはユーザーメニューの「Unmasquerade」リンクを使用してください。
この動作は masquerade.settings.yml の「update_user_last_access」設定で制御できます。なりすまし中の更新を防ぐには FALSE に設定してください。
ブロックが表示されるリージョンに配置されていること、および少なくとも1つの masquerade 権限を持っていることを確認してください。ブロックは匿名ユーザーおよび現在なりすまし中のユーザーには非表示になります(「Show unmasquerade link」が有効な場合を除く)。
Security Notes 7
- Masquerade のデフォルトのアクセス制御は権限昇格を防止します。ユーザーは自分より多くの権限を持つ人になりすますことはできません
- UID 1 は特別な保護を受けます:明示的な「Masquerade as super user」権限を持つユーザーのみがスーパー管理者になりすますことができます
- 「Masquerade as any user」および「Masquerade as super user」権限は、高度に信頼された管理ロールにのみ付与すべきです
- すべての masquerade イベントは、誰が誰になりすまし、いつ元に戻ったかを含めてログに記録されます
- masquerade および unmasquerade ルートには CSRF トークン保護が適用されます
- 切り替え中にセッション再生成が行われ、セッション固定攻撃を防止します
- 匿名ユーザーへのなりすましは意図的にサポートされていません。代わりにプライベートブラウジングを使用してください