Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた
Search
新屋 司
August 11, 2024
0
350
アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた
「アクセス制御の新時代OpenFGAできめ細かなアクセス制御(FGA)に入門してみた」というタイトルでDevelopersIO 2024 Odysseyに登壇しました
新屋 司
August 11, 2024
Tweet
Share
Featured
See All Featured
KATA
mclloyd
29
14k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Code Reviewing Like a Champion
maltzj
520
39k
Being A Developer After 40
akosma
87
590k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Building an army of robots
kneath
302
43k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
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