Protected Node
ノードにパスワード保護機能を追加し、認証されたユーザーのみがコンテンツを閲覧できるようにするモジュールです。
protected_node
概要
Protected Nodeモジュールは、Drupalのノード(コンテンツ)にパスワード保護機能を提供します。コンテンツ作成者は、ノード作成・編集時にパスワードを設定でき、閲覧者はそのパスワードを入力しないとコンテンツを表示できません。
パスワードはノード単位、コンテンツタイプ単位、またはサイト全体でグローバルに設定できます。パスワードを入力すると、セッション中はそのノードにアクセスできるようになります(Cookie必須)。
プライベートファイルシステムを使用している場合、保護されたノードに添付されたファイルもパスワード保護の対象となります。Field CollectionやParagraphsモジュールとの連携もサポートしています。
メール通知機能により、パスワードを特定のユーザーにメールで送信することも可能です。また、Views、Rules、Tokenモジュールとの統合機能をサブモジュールとして提供しています。
Features
- ノード単位でのパスワード保護:各ノードに個別のパスワードを設定可能
- コンテンツタイプ単位でのパスワード設定:特定のコンテンツタイプに共通パスワードを設定
- グローバルパスワード:サイト全体で共通のパスワードを使用可能
- プライベートファイルの保護:保護されたノードに添付されたファイルも自動的に保護
- タイトル表示オプション:パスワード入力画面でノードタイトルを表示/非表示の選択
- メール通知機能:パスワードを指定したメールアドレスに送信
- ランダムパスワード生成:パスワード未入力時に自動生成して通知
- パスワードヒント機能:閲覧者へのヒントを設定可能
- フラッド制御:ブルートフォース攻撃対策として試行回数を制限
- Token統合:メールや説明文でトークンを使用可能
- Views連携(サブモジュール):保護状態でのフィルタリングや表示
- Rules連携(サブモジュール):条件判定やアクションの自動化
- セッション管理:一度パスワードを入力すればセッション中は再入力不要
- Field Collection/Paragraphs対応:これらのモジュール経由で添付されたファイルも保護
Use Cases
会員限定コンテンツの作成
特定のユーザーグループにのみアクセスを許可したいコンテンツを作成する場合、ノードにパスワードを設定し、そのパスワードを対象ユーザーにのみ共有します。ユーザーはパスワードを入力することでコンテンツを閲覧できます。
期間限定コンテンツの保護
イベントやキャンペーンの情報を特定の参加者のみに公開したい場合、パスワード保護を使用します。メール通知機能を有効にして、参加者にパスワードを自動送信することも可能です。
機密文書の共有
プライベートファイルシステムと組み合わせることで、PDFや画像などの添付ファイルもパスワードで保護できます。正しいパスワードを入力したユーザーのみがファイルをダウンロードできます。
コンテンツタイプ全体の保護
特定のコンテンツタイプ(例:社内文書)を常に保護状態にしたい場合、コンテンツタイプ設定で「Always protected」を選択します。すべての新規ノードが自動的に保護されます。
サイト全体でのパスワード共有
複数の保護ノードで同じパスワードを使いたい場合、グローバルパスワードを設定します。ユーザーは一度パスワードを入力すれば、同じパスワードで保護されたすべてのノードにアクセスできます。
Rulesによる自動保護
特定の条件(例:特定のタクソノミータームが付いた場合)でノードを自動的に保護したい場合、protected_node_rulesサブモジュールを使用してRulesを設定します。
保護ノードの管理一覧
admin/content/protectedページで、サイト内の保護されているノードを一覧表示し、管理できます。どのノードが保護されているかを確認し、編集・削除操作を行えます。
Tips
- パスワードは暗号化されてデータベースに保存されるため、管理者でもパスワードを確認できません。パスワードを紛失した場合は再設定が必要です。
- Tokenモジュールをインストールすると、メールや説明文で[node:title]、[node:password]などのトークンが使用できて便利です。
- 大量のノードを一括で保護/解除したい場合は、設定ページの「Protected node actions」セクションを使用してください。
- フラッド制御はデフォルトで1時間に50回の試行制限です。セキュリティ要件に応じて調整してください。
- コンテンツタイプ設定の「Smart mode」を使用すると、保護されているノードの編集時のみフィールドセットが開きます。
- UID:1(スーパーユーザー)とノードの作成者は、パスワードなしで保護ノードにアクセスできます。
- Drushから実行される処理(cron含む)はパスワード保護をバイパスします。
Technical Details
Admin Pages 3
/admin/config/content/protected_node
Protected Nodeモジュールのグローバル設定を行います。パスワード管理方式、メール通知、フラッド制御、パスワード入力画面のカスタマイズなどを設定できます。
/admin/content/protected
保護されているノードの一覧を表示します。タイトル、タイプ、作成者、公開状態、更新日時でソート可能。
/admin/structure/types/manage/[content_type]
各コンテンツタイプごとに保護モード、デフォルトパスワード、フィールドセットの表示方法を設定します。
権限 6
Hooks 1
hook_protected_node_hide
保護されたノードのコンテンツを非表示にする際に呼び出されます。サードパーティモジュールがノードに追加したコンテンツを隠す機会を提供します。
Troubleshooting 6
1. Cookieが有効になっているか確認してください。セッションにパスワード情報を保存するため、Cookieが必要です。2. キャッシュをクリアしてみてください。3. フラッド制御により一時的にブロックされている可能性があります。時間をおいて再試行してください。
パスワード管理方式が「Global password only」になっている可能性があります。admin/config/content/protected_nodeで「Per node password or Global password」に変更してください。
ファイルシステムがプライベートモードになっているか確認してください。パブリックファイルシステムでは添付ファイルは保護されません。admin/config/media/file-systemで設定を確認してください。
admin/people/permissionsで、匿名ユーザーに「Access protected node password form」権限を付与してください。この権限がないとアクセス拒否になります。
1. admin/config/content/protected_nodeでメールサポートが有効になっているか確認。2. ノードが公開状態であること。3. 保護が有効であること。4. パスワードを再入力して保存すること(暗号化されたパスワードはメールに含められないため)。
Protected Nodeはhook_boost_is_cacheableを実装して保護ノードをキャッシュから除外しますが、保護を有効にする前にキャッシュされた場合は残っている可能性があります。Boostのキャッシュをクリアしてください。
Security Notes 5
- パスワードはsha256でハッシュ化されて保存されますが、メール送信時には平文で送信されます。機密性の高いパスワードのメール送信には注意してください。
- グローバルパスワードを削除すると、そのパスワードを使用していたノードはUID:1と作成者以外からアクセスできなくなります。
- 匿名ユーザーによって作成されたノードでは、セキュリティ上の理由からグローバルパスワードは使用できません。
- フラッド制御を無効にするとブルートフォース攻撃に対して脆弱になります。本番環境では適切な制限を設定してください。
- プライベートファイルシステムを使用しないと、添付ファイルは保護されません。