パスワード保護は、サイト全体または特定のパスの前にブラウザのサインインプロンプトを配置する機能で、公開前のサイト、ステージング用コピー、管理エリアなどを非公開にする最もシンプルな方法です。本ガイドでは、設定方法、ユーザーの管理、動作確認、そして保護の解除方法について説明します。
KPanel内でのパスワード保護の場所
- KPanel にサインインします。
- 左サイドバーの ウェブサイト をクリックし、該当のサイトをクリックします。
- サイトの左メニューで 設定 を開き、パスワード保護 を開きます。
直接アクセスするアドレスは /websites/<site-id>/password-protect です。

仕組み
保護機能は、アプリケーションが実行される前に、Webサーバーが HTTP Basic Auth を使って適用します。保護されたURLへの訪問者には、ブラウザ自体のサインインダイアログが表示され、認証するまでコンテンツを一切閲覧できず、アプリケーションのコードにも到達できません。
この仕組みはすべての手前に位置するため、表示されるページだけでなく、同じパス配下のアセット、アップロードファイル、APIエンドポイントも保護されます。また検索エンジンのクローラーも完全にブロックするため、公開前のサイトには最適です。
保護対象の選択
保護を追加 をクリックすると、まず範囲について質問されます。選択肢は2つです。
サイト全体を保護。 ドメイン、ルート、管理画面を含め、サイトを訪れるすべての人にサインインプロンプトが表示されます。これは、まだ公開されていないサイト、ステージング用コピー、またはまったく一般公開すべきでないものに最適な選択です。
特定のパスを保護。 1つのサブパスをロックし、サイトの残りの部分は公開のままにします。そのパス配下のすべてが対象になるため、/admin を保護すると /admin/users も対象に含まれます。
1つのサイトに複数の保護を作成し、それぞれ異なるパスを異なるユーザーで保護することができます。
設定方法
- 保護を追加 をクリックします。
- サイト全体を保護 または 特定のパスを保護 を選択します。パスを指定する場合は、スラッシュから始めて入力します。例:
/admin。 - プロンプトラベル を設定します。これはブラウザのサインインダイアログに表示されるテキストで、最大64文字です。デフォルトは 制限されたエリア です。サイト名など、見覚えのある内容にすると、訪問者はそのプロンプトがフィッシングではなく正当なものだとわかりやすくなります。
- ユーザー名と8文字以上のパスワードを持つユーザーを少なくとも1人追加します。
- アクセスが必要な人が他にもいる場合は、それぞれについて ユーザーを追加 をクリックします。
- 保護を適用 をクリックします。
ルールは適用後、実際にサイトに対してチェックされるため、その後表示されるステータスは実際の動作を反映しています。
Basic Auth の認証情報はリクエストのたびに送信されます。HTTPSでは転送中に暗号化されるため、ステージングサイトや社内向けエリアの制限には問題ありません。ただし、これは本人確認システムではありません。ユーザーごとの監査証跡も、セッションも、パスワードリセット機能も、試行失敗後のロックアウトもありません。本当に機密性の高いものの保護には使用せず、チームが他で使っているパスワードを再利用しないでください。
ユーザーの管理
既存の保護を編集ボタンで開くと、ユーザー一覧を変更できます。
- ユーザーの追加: ユーザーを追加 をクリックし、ユーザー名とパスワードを入力します。
- パスワードの変更: そのユーザーのパスワード欄に新しいパスワードを入力します。
- パスワードの維持: 欄を空欄のままにします。既存ユーザーには、パスワードが変更されていないことを示すプレースホルダーが表示されます。
- ユーザーの削除: 該当行の削除ボタンをクリックします。
パスワードが画面に再表示されることはありません。誰かがパスワードを忘れた場合は、新しいパスワードを設定して本人に伝えてください。
既存の保護の範囲は変更できません。保護対象のパスを変更するには、既存のものを削除してから新しく作成してください。
動作確認
それぞれの保護にはステータスバッジが表示されます。
| バッジ | 意味 |
|---|---|
| 未検証 | チェックがまだ実行されていません。少し待ってから更新してください |
| 保護が検証済み (401) | 外部からそのURLをリクエストし、実際にサインインの要求が返されました |
| 適用済みだが要求されていない(ステータスあり) | ルールは書き込まれましたが、サイトは別の応答を返しました |
目指すべきなのは2番目のバッジです。これは、外部からのリクエストが実際に認証を要求されたことを意味し、単に設定ファイルが書き込まれただけではないことを示します。
各行には Test ボタンもあり、これをクリックすると新しいタブで保護されたURLが開き、プロンプトを自分の目で確認できます。これはプライベートウィンドウで行ってください。一度サインインすると、ブラウザが認証情報を送信し続けるため、サイトが自分には開いているように見えてしまいます。
保存後に、サーバー上の別の設定が同じドメインを使用していると警告が表示された場合、その競合が解決されるまで保護は適用されません。メッセージにはもう一方の設定名が示されます。不明な場合はサポートにお問い合わせください。
保護の解除
保護の削除ボタンをクリックし、確認します。確認画面には影響が明示されます。ログインプロンプトが削除され、そのパス、またはサイト全体が誰でもアクセスできる状態になります。
削除後、パネルはサイトを再チェックします。サイトが開いていることをまだ確認できない場合、確認していない成功を主張する代わりに、約30秒待ってから更新するよう案内されます。
サイト全体の保護を解除すると、検索エンジンを含め、サイトは即座にインターネット全体に公開されます。公開日にこの操作を行う前に、コンテンツが本当に準備できているか確認してください。適切なページが公開されているか、テスト用コンテンツが削除されているか、仮の価格表示が修正されているかなどです。
よくある用途
公開前。 構築中はサイト全体を保護します。公開時に解除します。この方法は「近日公開」プラグインよりも信頼性が高く、管理画面、アップロードファイル、ステージングデータも併せて隠すことができます。
ステージング環境。 一般公開されているステージング用コピーは、重複コンテンツの問題であり、データ漏洩のリスクでもあります。保護をかけ、そのままにしておきましょう。ステージング環境 を参照してください。
WordPress以外のサイトの管理エリア。 /admin パスを持つ静的サイトやカスタムアプリケーションの場合、アプリケーションがすでに行っている制御の前に、さらにもう一段のロックをかけることができます。
クライアントレビュー用サイト。 クライアントに1組のユーザー名とパスワードを渡し、プロンプトラベルによって何にサインインしているのかを伝えられます。
トラブルシューティング
プロンプトは表示されるが、パスワードが拒否される。 ユーザー名の前後に空白がないことを確認し、編集ダイアログからパスワードを再設定してください。パスワードは8文字以上である必要があります。
自分には開いて見えるが、他の人には保護されている。 ブラウザが認証情報をキャッシュしています。プライベートウィンドウで確認してください。
稼働監視でサイトがダウンしていると報告される。 サイト全体の保護時には想定内の動作です。監視側は401を受け取ります。サイトの稼働監視 を参照してください。インシデントの理由として401が表示されます。
検索エンジンからページが除外された。 保護が有効な間も想定内の動作です。保護を解除してサイトがクロール可能になれば戻ってきます。
バッジに「適用済みだが要求されていない」と表示される。 ルールよりも先に何かが応答しています。表示されているステータスコードを確認し、そのパス上のリダイレクトがリクエストを先に処理していないか確認してから、サイトのリダイレクト を参照してください。
保護を解除できない。 削除にはサイトの書き込み権限が必要です。読み取り専用のロールではボタンが無効化されています。
関連ページ
- 証明書、マルウェアスキャン、IPブロック、ログイン強化については サイトのセキュリティ を参照してください。
- 訪問者の国でアクセスを制限したい場合は サイトの国別ブロック を参照してください。
- 訪問者に表示される401ページをブランド化したい場合は カスタムエラーページ を参照してください。