Skip to main content
この記事はソースコード調査(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 を使った認可の仕組みが用意されていました。
この方式はユーザーの認証状態に依存しており、「ログインしていないと判定できない」という問題がありました。Sentinel はミドルウェアとして動作するため、認証の有無にかかわらずリクエスト単位でアクセスを制御できます。また複数の管理ツールに対して一か所でルールを定義できます。

インストール

composer.jsonextra.laravel.providersSentinelServiceProvider が登録されているため、サービスプロバイダーは自動で検出されます。追加の設定ファイル公開は不要です。

パッケージのアーキテクチャ

デフォルトドライバー(Laravel ドライバー)の動作

デフォルトの Laravel ドライバーは、ローカル環境(APP_ENV=local)においてのみ制御を行います。
フローをまとめると以下のとおりです。
Laravel ドライバーは local 環境以外では常に true(許可)を返します。本番環境でのアクセス制御が必要な場合はカスタムドライバーを作成してください。

プライベート IP の判定

Driver 基底クラスの isPrivateIp() は Symfony の IpUtils を使い、以下の IP 範囲をプライベート IP と判定します。

Docker ローカル環境の検出

REMOTE_ADDR127.0.0.1 で、かつプロジェクトルートに .dockerenv ファイルが存在する場合を Docker ローカル環境と判定します。

ミドルウェアとして使う

基本的な使い方

ドライバーを指定する

ミドルウェアの引数としてドライバー名を渡せます。存在しないドライバー名を渡した場合はデフォルトのドライバーにフォールバックします(driverOrFallback() の挙動)。

ミドルウェアの実装

authorize()false を返すと HTTP 401 で中断します。Driver::authorizeOrFail() を使うと AuthorizationException を投げることもできます(ミドルウェア自体はこちらを使っていません)。

カスタムドライバーの作成

Driver 抽象クラスを継承して authorize() メソッドを実装することでカスタムドライバーを作れます。
extend() の登録は AppServiceProvider::boot() などで行います。

基底クラスのユーティリティメソッドを活用する

Driver クラスには IP 判定などの便利なメソッドが用意されており、カスタムドライバーから自由に利用できます。

SentinelManager の仕組み

SentinelManagerIlluminate\Support\Manager を継承しています。Manager はドライバーパターンを実装するための Laravel の基盤クラスで、driver() でドライバーインスタンスをキャッシュしながら解決します。
driverOrFallback() は指定したドライバーが見つからない場合でもデフォルトドライバーに静かにフォールバックするため、ミドルウェア引数に存在しないドライバー名を渡してもエラーになりません。 SentinelManagerSentinelServiceProvider によってスコープ付きシングルトン(scoped)として登録されるため、1リクエスト内でドライバーのインスタンスが再利用されます。

まとめ

laravel/sentinel は小さなパッケージですが、Illuminate\Support\Manager を使ったドライバーパターンにより高い拡張性を持ちます。 デフォルトの Laravel ドライバーはローカル開発時のトンネリングサービス経由のアクセスを防ぐことに特化しており、本番環境の保護には自前のカスタムドライバーを作成する必要があります。公式ドキュメントが整備されれば、より具体的な利用パターンが明らかになるでしょう。

laravel/sentinel リポジトリ

ソースコードと最新の変更は GitHub の 1.x ブランチで確認できます。
最終更新日 2026年4月15日