この記事はソースコード調査(
1.x ブランチ)に基づく情報です。公式ドキュメントはまだ存在せず、正式リリース前のパッケージです(2026年4月時点)。Sentinel とは
Laravel Sentinel は、ルートへのアクセスをドライバーベースで制御するセキュリティミドルウェアパッケージです。Taylor Otwell と Mior Muhammad Zaki によって開発され、PHP ^8.0 / Laravel 8〜13 に対応しています。 主な用途は Telescope・Horizon・Pulse といった管理ツール系ルートの保護です。SentinelMiddleware をルートに適用するだけで、ドライバーが定義した認可ロジックでアクセスを制御できます。
従来の方法との比較
Telescope や Horizon にはそれぞれgate を使った認可の仕組みが用意されていました。
インストール
composer.json の extra.laravel.providers に SentinelServiceProvider が登録されているため、サービスプロバイダーは自動で検出されます。追加の設定ファイル公開は不要です。
パッケージのアーキテクチャ
デフォルトドライバー(Laravel ドライバー)の動作
デフォルトのLaravel ドライバーは、ローカル環境(APP_ENV=local)においてのみ制御を行います。
プライベート IP の判定
Driver 基底クラスの isPrivateIp() は Symfony の IpUtils を使い、以下の IP 範囲をプライベート IP と判定します。
Docker ローカル環境の検出
REMOTE_ADDR が 127.0.0.1 で、かつプロジェクトルートに .dockerenv ファイルが存在する場合を Docker ローカル環境と判定します。
ミドルウェアとして使う
基本的な使い方
ドライバーを指定する
ミドルウェアの引数としてドライバー名を渡せます。存在しないドライバー名を渡した場合はデフォルトのドライバーにフォールバックします(driverOrFallback() の挙動)。
ミドルウェアの実装
authorize() が false を返すと HTTP 401 で中断します。Driver::authorizeOrFail() を使うと AuthorizationException を投げることもできます(ミドルウェア自体はこちらを使っていません)。
カスタムドライバーの作成
Driver 抽象クラスを継承して authorize() メソッドを実装することでカスタムドライバーを作れます。
extend() の登録は AppServiceProvider::boot() などで行います。
基底クラスのユーティリティメソッドを活用する
Driver クラスには IP 判定などの便利なメソッドが用意されており、カスタムドライバーから自由に利用できます。
SentinelManager の仕組み
SentinelManager は Illuminate\Support\Manager を継承しています。Manager はドライバーパターンを実装するための Laravel の基盤クラスで、driver() でドライバーインスタンスをキャッシュしながら解決します。
driverOrFallback() は指定したドライバーが見つからない場合でもデフォルトドライバーに静かにフォールバックするため、ミドルウェア引数に存在しないドライバー名を渡してもエラーになりません。
SentinelManager は SentinelServiceProvider によってスコープ付きシングルトン(scoped)として登録されるため、1リクエスト内でドライバーのインスタンスが再利用されます。
まとめ
laravel/sentinel は小さなパッケージですが、Illuminate\Support\Manager を使ったドライバーパターンにより高い拡張性を持ちます。
デフォルトの
Laravel ドライバーはローカル開発時のトンネリングサービス経由のアクセスを防ぐことに特化しており、本番環境の保護には自前のカスタムドライバーを作成する必要があります。公式ドキュメントが整備されれば、より具体的な利用パターンが明らかになるでしょう。
laravel/sentinel リポジトリ
ソースコードと最新の変更は GitHub の
1.x ブランチで確認できます。