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
740
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
6
4.5k
20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践
ishikawa_pro
0
1.7k
Platform Engineering ことはじめ ~コミュニティと一緒に新たな旅に出よう!~
ishikawa_pro
0
120
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
1.5k
Other Decks in Programming
See All in Programming
空間オーディオの活用
objectiveaudio
0
150
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
23
12k
ハーネスエンジニアリングとは?
kinopeee
13
7k
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
1.9k
t *testing.T は どこからやってくるの?
otakakot
1
940
🦞OpenClaw works with AWS
licux
1
360
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
3
350
Are We Really Coding 10× Faster with AI?
kohzas
0
170
Agentic UI in the Frontend: Architectures with Open Standards @JAX 2026 in Mainz
manfredsteyer
PRO
0
110
PHPer、Cloudflare に引っ越す
suguruooki
2
200
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
120
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
490
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
340
Designing for humans not robots
tammielis
254
26k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
200
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
120
[SF Ruby Conf 2025] Rails X
palkan
2
1k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
200
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
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