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
ishikawa-pro
March 13, 2026
Programming
1.6k
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
800
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
6
4.6k
20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践
ishikawa_pro
0
1.8k
Platform Engineering ことはじめ ~コミュニティと一緒に新たな旅に出よう!~
ishikawa_pro
0
130
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
1.5k
Other Decks in Programming
See All in Programming
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
560
Inside Stream API
skrb
1
680
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
20
6.5k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
750
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
390
Contextとはなにか
chiroruxx
0
290
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
120
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
710
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
230
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
690
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Documentation Writing (for coders)
carmenintech
77
5.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Test your architecture with Archunit
thirion
1
2.3k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
4 Signs Your Business is Dying
shpigford
187
22k
Faster Mobile Websites
deanohume
310
31k
Code Review Best Practice
trishagee
74
20k
Optimizing for Happiness
mojombo
378
71k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Building AI with AI
inesmontani
PRO
1
1.1k
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