Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FC Tokyo2025 フロントエンドで実現するアクセス制御入門
Search
E_Chanoknan
September 21, 2025
2
510
FC Tokyo2025 フロントエンドで実現するアクセス制御入門
E_Chanoknan
September 21, 2025
Tweet
Share
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
Being A Developer After 40
akosma
91
590k
Six Lessons from altMBA
skipperchong
29
4.1k
Navigating Team Friction
lara
190
16k
How GitHub (no longer) Works
holman
315
140k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
340
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
A Tale of Four Properties
chriscoyier
162
23k
Transcript
フ ロ ン ト エ ン ド で 実 現
す る ア ク セ ス 制 御 入 門 フロントエンドカンファレンス東京2025 EC-9624(@e_chanoknan)
自己紹介 Eakudompong Chanoknan エークドッムポン チャノックナン 株式会社 PRTIMES 2025年新卒 主にフロントエンド領域を担当しています。 X:@e_chanoknan タイ・バンコク出身
Agenda アクセス制御とは? 01. アクセス制御モデル RBAC VS ABAC 02. CASLで実装するABAC 03.
Policy-as-Code 04. まとめ 05.
アクセス制御とは?
あなたは誰ですか? Who are you? あなたは何を許可されていますか? What are you allowed to
do?
アクセス制御 誰が・どのリソースに・何ができるかを定義する 主な2つの役割: 認証(Authentication) — あなたが誰であるかの確認 認可(Authorization) — 何を行う権限があるかの確認 アクセス制御モデル:
Role-base access control Attribute-Based Access Control
Role-Based Access Control
RBAC RBAC (Role-Based Access Control) アクセス判断は、ユーザーに割り当てられたロールに基づいて行われる。 ユーザーはロール(例:‘admin’、‘manager’、‘employee’)を通じて 権限を得る。 例: managerのロールは従業員記録にアクセスできる。
adminのロールは給与データにアクセスできる。 メリット: 実装が容易 デメリット: 柔軟性に欠ける 制御が複雑になるとがロール急増してしまう
Attribute-Based Access Control
ABAC ABAC (Attribute-Based Access Control) アクセス判定はユーザー(主体) 、リソース(対象) 、アクション、環境の 属性に基づいて行われます。 例:
ユーザー: ロール, 部署, 位置情報 アクション: 作成、編集、削除 リソース: カテゴリ, オーナー 環境: 時間、デバイス、ネットワーク メリット 柔軟・細粒度・コンテキストに応じたルールが可能。 デメリット 設計と保守がより複雑になります。
OWASP のガイダンス OWASP Authorization Cheat Sheet は、単純な RBAC の限界を指摘。 より柔軟で安全な
ABAC/リレーションシップベースのモデルを推奨。 以降のフロントエンド例でRBACの限界を説明します。 RBAC VS ABAC
Requirments: Admin すべてを管理可能。 Editor 新規ブログを作成とブログ編集できますが、ブログを削除できない。 例:ブログ配信サービス
要件を最初に見たとき、おそらくこんな感じでやると思います。 でも、このやり方だと、新しいロールが追加されたり権限が変更されたりす るたびに、チェックを行っている箇所をすべて修正しなければならないとい う問題があります
None
ロールや権限が追加する場合 このファイルのみを編集する。
None
ここで要件が変更され、より強力なアクセス制御を適用したいと考えます。 要件: 管理者(Admin) :すべてを管理できる 編集者(Editor) :割り当てられたカテゴリー内で自分のポストを編集・ 削除できるが、公開済みの投稿は削除できない この要件は少し複雑なので、モデルを ABAC に変更し、実装には
CASL とい うライブラリを使用します。 例:ブログ配信サービス
CASLはフロントエンドで ABACスタイルのチェックを実装できる。
None
フロントエンドの責務: ユーザーが実行できない操作を示すUI要素を表示しない Fail-fastなUX: ボタンを非表示/無効化する、ルートをガードする セキュリティにはならない。 認可は必ず サーバー側 で強制すること フロントエンドだけのチェックの限界
スケーリングの問題 バックエンドとフロントエンドも権限を統一しなければならない。 システムがない場合: フロントとバックで権限ロジックが重複。 同期が難しい。 新しいロールや権限を追加するたびにコードを複数箇所編集。 解決策: Policy-as-Code 権限ロジックを宣言的ファイル(YAML/JSON)に保存。 共通エンジン(CEL
など)で評価。 ソースコードとして管理
リーソース アクション Cel evaluator で評価
ポイント: condition は CEL で評価。 同じポリシーファイルをバックエンドでもフロントエンドでも利用可能。(Single Source of truth) バックエンドが強制、フロントエンドは
UI 表示用に消費。 POLICY AS CODE
まとめ RBAC はシンプルだが限界あり。 ABAC(OWASP 推奨)は柔軟で強力。 CASL でフロントエンドでも ABAC を実現可能だが、サーバー側での enforcement
は必須。 Policy-as-Code でスケールし、Single Source of truthを実現。 フロントとバックで同じルールを使うことで、一貫性と保守性が向上。
参照 https://casl.js.org/v6/en/guide/intro https://cheatsheetseries.owasp.org/cheatsheets/Authorizati on_Cheat_Sheet.html https://github.com/WebDevSimplified/permission-system/ https://www.reactmiami.com/speakers/prasad
ご清聴ありがとうございました!