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
1
410
FC Tokyo2025 フロントエンドで実現するアクセス制御入門
E_Chanoknan
September 21, 2025
Tweet
Share
Featured
See All Featured
Writing Fast Ruby
sferik
629
62k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Why Our Code Smells
bkeepers
PRO
339
57k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Designing Experiences People Love
moore
142
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
970
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The World Runs on Bad Software
bkeepers
PRO
71
11k
BBQ
matthewcrist
89
9.8k
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
ご清聴ありがとうございました!