Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Goの型安全性で実現する複数プロダクトの権限管理
Search
ishikawa-pro
March 13, 2026
Programming
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goの型安全性で実現する複数プロダクトの権限管理
Goの Defined Type と protobuf コード生成を活用し、複数プロダクトにまたがる権限管理をコンパイル時に安全に保つ手法を紹介します
ishikawa-pro
March 13, 2026
More Decks by ishikawa-pro
See All by ishikawa-pro
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
980
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
6
5k
20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践
ishikawa_pro
0
2k
Platform Engineering ことはじめ ~コミュニティと一緒に新たな旅に出よう!~
ishikawa_pro
0
140
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
1.5k
Other Decks in Programming
See All in Programming
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
530
Building an Out-of-Order CPU
latte72
1
800
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
AHC070解法紹介
eijirou
0
130
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
250
FreeBSDでZabbixを動かす
kenkino
0
320
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
310
SREの越境 / SRE Collaboration
y0hgi
2
280
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
160
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
160
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
620
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Embracing the Ebb and Flow
colly
88
5.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
830
New Earth Scene 8
popppiees
4
2.6k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
580
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
710
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
We Are The Robots
honzajavorek
0
380
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Transcript
Goの型安全性で実現する 複数プロダクトの権限管理 ishikawa-pro アカウント基盤開発部
自己紹介 石川諒(ishikawa-pro) © LayerX Inc. 2025/10 入社 アカウント基盤開発部 共通管理(テナント・アカウント管理)や認証・認可を担当 2
バクラクの権限管理 各テナントで、アカウントごとに 有効なプロダクトのロール を設定・管理する 共通管理 申請・経費精算 ビジネスカード 勤怠 田中 管理者
一般 — 一般 鈴木 閲覧者 — 管理者 — 佐藤 一般 経理担当 一般 管理者 © LayerX Inc. 3
ロールに応じたアクセス制御 ロールごとに「できる操作(Permission) 」が決まっている → この組み合わせ爆発を 安全に管理するのが課題 © LayerX Inc. 複数プロダクト
× プロダクトごとに 複数ロール × ロール固有の 権限 プロダクトが増えるたびに、ロールと権限の組み合わせも増える 4
文字列で管理するとどうなるか © LayerX Inc. タイポ → 実行時まで気づけない 存在しない権限名 → コンパイルが通ってしまう
プロダクトが増えるほど破綻する 5
Go の Defined Type type で既存の型から 新しい型 を作れる Permission と
ProductRole は 互換性のない別の型 になる © LayerX Inc. 6
Defined Type の恩恵 正しい型で正しい値だけ渡せる状態を強制できる © LayerX Inc. 7
proto の enum で権限を定義する © LayerX Inc. 8
protoc-gen-go が Defined Type を生成 新しい権限の追加 = proto に1行書くだけ ©
LayerX Inc. 9
ロールと権限の対応も proto に宣言する 「このロールはどの権限を持つか」を proto 上で宣言的に定義 © LayerX Inc. 10
自社製プラグインが逆引きマップを自動生成 キーは Permission 、値のキーは ProductRole — 両方が Defined Type ©
LayerX Inc. 11
RPC 定義にも必要な Permission を宣言する 「この RPC にはどの Permission が必要か」も proto
に宣言するだけ © LayerX Inc. 12
権限チェックの流れ — Interceptor が全 RPC の手前で自動実行 © LayerX Inc. 13
HasPermission — 照合の実装 © LayerX Inc. 引数・マップ・トークン、すべて Defined Type で型が一致
14
ビジネスロジックでも同じ型で権限チェック Interceptor でもビジネスロジックでも 同じ型・同じ関数で一貫した権限チェックが書ける © LayerX Inc. 15
まとめ Defined Type × コード生成 で スケールしても壊れない権限管理を実現 © LayerX Inc.
Defined Type で型の混在・タイポをコンパイル時に検知 proto × コード生成 で 2000個超の定数と逆引きマップを自動管理 認証トークン × 生成マップ を同じ Defined Type でつなぎ Interceptor でもビジネスロジックでも一貫した権限チェック 16