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
アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた
Search
新屋 司
August 11, 2024
0
500
アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた
「アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた」というタイトルでDevelopersIO 2024 Odysseyに登壇しました
新屋 司
August 11, 2024
Tweet
Share
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Git: the NoSQL Database
bkeepers
PRO
427
64k
A Modern Web Designer's Workflow
chriscoyier
693
190k
GitHub's CSS Performance
jonrohan
1030
460k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Fireside Chat
paigeccino
34
3.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Transcript
アクセス制御の新時代 OpenFGAできめ細かなアクセ ス制御(FGA)に⼊⾨してみた 2024.7.23 産業⽀援グループゲームソリューション部 新屋 司
Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 2 お願い
⾃⼰紹介 新屋 司 クラスメソッド株式会社 ゲームソリューション部 福岡(北九州) 業務効率化⽀援(認証‧認可) 3
OpenFGA 4
Googleドライブのような、きめ細 かいアクセス制御を実装できる 認可ソリューション 5
Googleドライブのようなものとは? きめ細かいアクセス制御とは? そもそも認可とは?
前提知識 7
認証/認可 8
認証/認可 • 認証はユーザーが本⼈であることを確認する。 • 認可はリソースにアクセスする権限を確認する。 9
アクセス制御 10
ロールベースアクセス制御 ユーザーには「管理者」や「編集者」などのロールが 割り当てられ 、各ロールには特定の権限が関連付け られる。 11 RBAC
ロールベースアクセス制御 • 強み ◦ シンプル ▪ RBACは、開発者とエンドユーザーの両⽅にとってシンプルで使い慣 れたソリューションを提供する。 • 弱み
◦ 限られた柔軟性 ▪ アクセス制御はロールによってのみ定義されるため、システムがス ケールすることによる、きめ細かいアクセス制御要件が出現すると、 RBACのシステムはすぐに不⼗分になる可能性がある。 12
属性ベースアクセス制御 属性(ユーザー、リソース、アクション、条 件)に基づいたアクセス制御を⾏う。 13 ABAC
S3バケットポリシー 14
属性ベースアクセス制御 • 強み ◦ きめ細かさ ▪ ABACは、属性を使⽤して⾮常にきめ細かなアクセス制御ポリ シーを作成する機能を提供する。 • 弱み
◦ 複雑さ ▪ ABACの実装、管理、保守は⼤きな課題となる可能性があり、 設計が⾮常に複雑で時間がかかるだけでなく、システム更改 のたびに⾒直すなど、継続的なメンテナンスが必要。 15
認可って なんか⼤変そう... 16
ReBAC登場 17
ReBACとは Relationship-Based Access Control リソース間の関係性に焦点を当てたアクセス制御モデ ル 18 ReBAC
関係性?
関係ベースアクセス制御 20 Root Folder File Folder Folder File File File
? ? ? ? ? 太郎
関係ベースアクセス制御 21 Root Folder File Folder Folder File File File
? parent parent parent parent 太郎
関係ベースアクセス制御 22 Root Folder File Folder Folder File File File
owner parent parent parent parent 太郎
関係ベースアクセス制御 23 Root Folder File Folder Folder File File File
owner parent parent parent parent editor viewer 太郎 健太郎 花⼦
関係ベースアクセス制御 24 Group Folder Folder editor member member 太郎 健太郎
花⼦ editor viewer
RBACやABACで同じことが出来ないの?
ロールベースアクセス制御 26 Folder Folder editor special_viewer owner edit 太郎 健太郎
花⼦ view edit
属性ベースアクセス制御 27 Folder Folder owner.太郎 editor.太郎 viewer.太郎 editor.健太郎 viewer.健太郎 太郎
健太郎 花⼦ owner.太郎 editor.太郎 viewer.太郎 editor.健太郎 viewer.健太郎 viewer.花⼦ if (user.name == folder.owner) … if (user.name == folder.editor) … if (user.name == folder.viewer) …
関係ベースアクセス制御 • 強み ◦ 複雑な階層の処理 ▪ ReBACは階層とネストされた関係を表すように設計されている。 ▪ ReBACを使⽤すると、チームやグループを使⽤してリソースごとに個 別に
権限を定義するのではなく、⼀括して権限を定義できる。 • 弱み ◦ パフォーマンス ▪ 複雑な関係を処理するために多くの計算リソースを必要とするため、 ⼤規模なシステムではパフォーマンスが低下する可能性がある。 28
RBAC/ABAC/ReBACはなんとなく分かったけど OpenFGAとの関係は?
OpenFGA ReBACは、RBACやABACの機能を含む柔軟なアクセス制御 モデルであり、OpenFGAはこれ(ReBAC)を利⽤して⾼度 なアクセス制御シナリオをサポートします。 30 https://openfga.dev/
実践編 31
認可モデル 32
認可モデル 33
認可モデル 34 対象 主体 関係
関係タプル 35
関係タプル 36
認可モデルの例 37
Direct Access 38
Roles and Permissions 39
User Groups 40
Parent-Child Objects 41
実装編 42
さいごに 43
OpenFGAの使いどころ • Google Driveのような階層構造を持つドキュメント管理アプリ ◦ フォルダーとファイルの階層構造に対して、柔軟なアクセス制御 が可能。 • Githubのような組織(グループ)を持つアプリ ◦
リポジトリや組織の管理権限を動的に設定できる。 • X(旧Twitter)やYouTubeのようなシェア機能を持つアプリ ◦ 特定の投稿や動画に対して、⼀時的なアクセス権を付与すること が可能。 44
None