Laravel Permissionを使おう①解説編 RBAC方式のアクセス制御を簡単に実現できる優れたツール
こんにちは。アプリケーションを作る時に、必ずと行ってよいほど考慮しなくてはならない「アクセス制御」。アプリケーションを作るたびに、1から考えてないでしょうか?Laravelには簡単にアクセス制御できるLaravel Permissionというツールが存在しますので紹介していきたいと思います。
Laravel Permissionとは
LaravelでRBAC方式のアクセス制御を実現するためのプラグインです。RBACってなんぞや?となった方、後ほど詳しく解説しますのでご安心ください。このプラグインを導入すると、専用のテーブルが作成されるので、あとはそのテーブルにデータを設定するだけで簡単にアクセス制御を行うことができます。
RBAC方式とは
RBACとはシステムのアクセス制御方式の一種。Role Base Access Controlの略で、日本語では役割ベースのアクセス制御と呼びます。その名が表す通り、役割に対してアクセス権を付与する仕組みです。役割とは管理者や一般ユーザーといったシステム上の機能を表し、ユーザーには1つ以上の役割を与えることができます。ユーザーは役割を介してシステム機能へのアクセス権を取得します。ユーザーに直接アクセス権を付与しないため、管理の煩雑さを低減できることメリットです。
以下の図はRBAC方式のアクセス制御の簡単な使用例です。ロールは「管理者」と「一般ユーザー」の2種定義されています。管理者は「機能A」にのみアクセス権があり、「一般ユーザー」は「機能B、C」のアクセス権があります。ユーザーAは管理者、ユーザーBは管理者と一般ユーザー、ユーザーCは一般ユーザーをそれぞれ割り当てます。
ポイントは、ロールとユーザーを関連付けるだけで、複数のアクセス権をユーザーに割り当てられることです。ロールを適切に定義できれば管理の負荷をかなり減らすことができ、より柔軟なアクセス管理ができるでしょう。
Laravel Permissionの用語整理
はじめにLaravel Permissionの用語を整理しておきます。ユーザーはmodel、ロールはrole、アクセス権はpermissionと呼びます。
- model‥ユーザー
- role‥ロール(役割)
- permission‥アクセス権
Laravel Permissionをインストールするとそれぞれの要素に該当するテーブルと、要素を関連付けるためのテーブルが作成されます。それらにデータを登録することでアクセス権セットを作っていくわけです。
Laravel Permissionのテーブル構成
Laravel Permissionのテーブル構成を説明するために概念モデルを描いてみました。
各テーブルが持つ役割は以下です。
users | Laravelのデフォルトで存在するusersテーブルです。 ログインユーザーを登録します。 |
model_has_roles | usersとrolesの関連付けに使用します。 |
roles | ロールを登録します。 |
role_has_permissions | rolesとpermissionsの関連付けに使用します。 |
permissions | アクセス権を登録します。 |
RBAC方式を実現するためのシンプルでわかりやすいテーブル構成であることがわかります。
まとめ
今回はLaravel Permissionの概要を解説しました。Laravel Permissionの考え方の基礎となっているRBAC方式は理解いただけたでしょうか。この方式とテーブル構成を理解できれば、もうLaravel Permissionを半分以上理解できたと言っても過言ではありません。
次回は具体的なLaravel Permissionの使い方を具体的なコードを用いて解説していきたいともいます。
ディスカッション
コメント一覧
まだ、コメントがありません