0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flutterで作る安全な権限制御【Part 2】RBACを支えるデータベース設計とER図(Mermaid付き)

Last updated at Posted at 2025-08-06

はじめに

前回(Part 1)では、モバイルアプリの業界標準に基づいた権限制御の考え方を紹介しました。

今回は、それを支える RBAC(Role-Based Access Control)モデルのデータベース設計とER図 を具体的に解説します。

RBAC モデルとは?

RBAC は次の構成要素で成り立っています:

  • ユーザー(users)
  • ロール(roles)
  • 権限(permissions)
  • ユーザーロール対応(user_roles)
  • ロール権限対応(role_permissions)

さらに柔軟な運用のため、以下も導入可能です:

  • ユーザー個別権限(user_permissions)
  • 権限の階層(parent_id によるツリー構造)

テーブル構成

users(ユーザー)

カラム名 説明
id UUID 主キー
username VARCHAR ログイン名
password VARCHAR パスワード(ハッシュ)
status TINYINT 有効/無効
created_at DATETIME 作成日時

roles(ロール)

カラム名 説明
id UUID 主キー
name VARCHAR ロール名
code VARCHAR ロールコード(adminなど)
description TEXT 説明文
created_at DATETIME 作成日時

permissions(権限)

カラム名 説明
id UUID 主キー
code VARCHAR 権限コード(例:user:view
name VARCHAR 権限名
type ENUM menu, button, api
parent_id UUID 親権限ID(メニュー階層用)
path VARCHAR メニューのパス
method VARCHAR HTTPメソッド(API用)
created_at DATETIME 作成日時

中間テーブル

user_roles

カラム名 説明
user_id UUID 外部キー
role_id UUID 外部キー
created_at DATETIME 登録日

role_permissions

カラム名 説明
role_id UUID 外部キー
permission_id UUID 外部キー
created_at DATETIME 登録日

user_permissions(任意)

カラム名 説明
user_id UUID 外部キー
permission_id UUID 外部キー
scope VARCHAR project:123 など範囲指定
created_at DATETIME 登録日

ER図(Mermaid)

サンプルデータ設計のポイント

permissions.code は前後端で統一すべき識別子

type により、画面 / ボタン / API の判定を柔軟に

parent_id により、メニューの階層化も可能

user_permissions により「特例付与」や「個別スコープ制限」が可能

こんな使い方ができます

画面 判定キー例 説明
ユーザー一覧画面 user:view 見えるかどうか
編集ボタン user:edit 押せるかどうか
削除API user:delete 実行できるかどうか

シリーズリスト

Flutterで作る安全な権限制御【Part 1】業界標準と設計指針のすべて

Flutterで作る安全な権限制御【Part 2】RBACを支えるデータベース設計とER図(Mermaid付き)

Flutterで作る安全な権限制御【Part 3】ページとボタンを権限で制御する実装編(go_router × Riverpod)

Flutterで作る安全な権限制御【Part 4】Flutterアプリの反編譯リスクとセキュリティ対策
Security Flutter obfuscation

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?