RBAC
RBAC(Role-Based Access Control:ロールベースアクセス制御)とは、
「ユーザー個人に権限を与えるのではなく、“役割(ロール)”に権限をまとめて管理する仕組み」 です。
✅ 一言でいうと
「どのユーザーが何をできるか」を “役割” を介して管理するアクセス制御モデル
🔍 RBAC の基本構造
RBAC は 3つの要素で成り立ちます:
-
User(ユーザー)
→ 実際にシステムを使う人 -
Role(ロール)
→ 権限のグループ(例:管理者、一般ユーザー、閲覧者) -
Permission(権限)
→ 実行できる操作(例:閲覧、編集、削除)
そして
User → Role → Permission
という 紐づけの“中間にロール”が入るのがポイントです。
🧱 RBAC がない場合(権限を直接付けると…)
例:
-
ユーザーA → 編集権限
-
ユーザーB → 閲覧権限
-
ユーザーC → 編集+削除
→ ユーザーごとに権限管理が複雑になる
→ 大人数の組織では破綻しやすい
🧱 RBAC の場合(ロールを使う)
例:
■ ロール
-
admin(閲覧・編集・削除)
-
editor(閲覧・編集)
-
viewer(閲覧のみ)
■ ユーザー
-
ユーザーA → editor
-
ユーザーB → viewer
-
ユーザーC → admin
→ 権限はロールにまとめておくので 管理が圧倒的に楽
🎯 RBAC を使うメリット
✔ 管理が簡単(スケールする)
ユーザーが増えても、ロールを付け替えるだけ。
✔ セキュリティが明確
誰が何をできるかが一目で分かる。
✔ 役割に応じた権限変更が容易
部署異動や役割変更のとき、ロールを変更するだけ。
✔ 組織の構造と一致させやすい
現実の組織(管理者・チームリーダー・メンバー)と対応。
🛠 RBAC がよく使われる場面
-
Webアプリ・SaaS のユーザー管理
-
AWS IAM
-
Auth0 や Keycloak などの IAM サービス
-
業務システムのアクセス権管理
-
ファイルサーバー、DB などのアクセス権限
-
管理画面の閲覧制御
🔐 Auth0 での RBAC(補足)
Auth0 では:
-
Role に Permission を付ける
-
User に Role を付ける
-
API 用の Access Token に permissions クレームが入る
例:
{
"permissions": [
"read:users",
"edit:articles"
]
}
API 側は JWT の permissions を見てアクセス制御できる。
🧩 まとめ
-
RBAC は「ユーザー → ロール → 権限」で管理する方式
-
権限を直接ユーザーにつけないので管理が楽
-
組織にスケールしやすく、セキュア
-
Auth0、AWS、各種サービスで標準的に使われている
-
RBAC と ABAC(属性ベース)比較
-
RBAC の図解
-
Auth0 で RBAC を有効にする手順
-
RBAC 設計のベストプラクティス