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
97
Goの型安全性で実現する複数プロダクトの権限管理
Goの Defined Type と protobuf コード生成を活用し、複数プロダクトにまたがる権限管理をコンパイル時に安全に保つ手法を紹介します
ishikawa-pro
March 13, 2026
Tweet
Share
More Decks by ishikawa-pro
See All by ishikawa-pro
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
620
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
6
4.2k
20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践
ishikawa_pro
0
1.6k
Platform Engineering ことはじめ ~コミュニティと一緒に新たな旅に出よう!~
ishikawa_pro
0
100
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
1.4k
Other Decks in Programming
See All in Programming
Docコメントで始める簡単ガードレール
keisukeikeda
1
110
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
820
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
360
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
420
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
170
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
230
Windows on Ryzen and I
seosoft
0
250
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.5k
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
290
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
350
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
970
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
The Curious Case for Waylosing
cassininazir
0
270
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Side Projects
sachag
455
43k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Unsuck your backbone
ammeep
672
58k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
210
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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