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
Goの型安全性で実現する複数プロダクトの権限管理
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ishikawa-pro
March 13, 2026
Programming
1.5k
2
Share
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
690
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
6
4.4k
20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践
ishikawa_pro
0
1.7k
Platform Engineering ことはじめ ~コミュニティと一緒に新たな旅に出よう!~
ishikawa_pro
0
110
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
1.4k
Other Decks in Programming
See All in Programming
事業会社でのセキュリティ長期インターンについて
masachikaura
0
240
へんな働き方
yusukebe
6
2.9k
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
810
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
890
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
290
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.9k
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
260
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
320
Oxlintとeslint-plugin-react-hooks 明日から始められそう?
t6adev
0
110
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
180
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
220
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
Producing Creativity
orderedlist
PRO
348
40k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
Google's AI Overviews - The New Search
badams
0
960
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The agentic SEO stack - context over prompts
schlessera
0
740
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
120
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Typedesign – Prime Four
hannesfritz
42
3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
96
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