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
20250326_管理ツールの権限管理で改善したこと
Search
Tatsuya Sasaki
March 26, 2025
Technology
1
850
20250326_管理ツールの権限管理で改善したこと
https://mixi.connpass.com/event/348533/
で発表した資料です。 #cre_meetup
Tatsuya Sasaki
March 26, 2025
Tweet
Share
More Decks by Tatsuya Sasaki
See All by Tatsuya Sasaki
20180912_小さな成功体験を積み重ねてチームで負債に立ち向かう_medbeer.pdf
sasata299
3
11k
Classi - Real Tech Night
sasata299
1
4.3k
20151129_Mroongaをとある教育サービスで導入してみた話
sasata299
0
4.8k
20150625_SpeeeTeckParty
sasata299
9
8.8k
前回のMF Geeks Nightに参加してから実践したこと
sasata299
0
920
20141125_エンジニアドリブンな改善の進め方
sasata299
0
2.1k
20140926_VagrantとDockerと普段思ってること
sasata299
2
5.3k
20140219_4社合同技術勉強会
sasata299
2
4.2k
AngularJSを使ったらこんなことが出来るよ
sasata299
40
71k
Other Decks in Technology
See All in Technology
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing
tomzoh
2
120
無理しない AI 活用サービス / #jazug
koudaiii
0
100
VS CodeとGitHub Copilotで爆速開発!アップデートの波に乗るおさらい会 / Rapid Development with VS Code and GitHub Copilot: Catch the Latest Wave
yamachu
3
460
【あのMCPって、どんな処理してるの?】 AWS CDKでの開発で便利なAWS MCP Servers特集
yoshimi0227
6
950
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.7k
How to Quickly Call American Airlines®️ U.S. Customer Care : Full Guide
flyaahelpguide
0
240
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
shake-upを科学する
rsakata
7
1k
マルチプロダクト環境におけるSREの役割 / SRE NEXT 2025 lunch session
sugamasao
1
730
ゼロから始めるSREの事業貢献 - 生成AI時代のSRE成長戦略と実践 / Starting SRE from Day One
shinyorke
PRO
0
110
How Do I Contact Jetblue Airlines® Reservation Number: Fast Support Guide
thejetblueairhelpsupport
0
150
LIXIL基幹システム刷新に立ち向かう技術的アプローチについて
tsukuha
1
380
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Scaling GitHub
holman
460
140k
Music & Morning Musume
bryan
46
6.7k
Gamification - CAS2011
davidbonilla
81
5.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Cult of Friendly URLs
andyhume
79
6.5k
Making Projects Easy
brettharned
116
6.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Transcript
管理ツールの 権限管理で改善したこと 株式会社MIXI みてねプラットフォーム部 CREグループ 佐々木
達也
©MIXI 自己紹介 - ささたつ / @sasata299 - 男子3兄弟の父 - 騒がしい毎日・・
- みてねのCREとして頑張っています
家族アルバム みてねはスマホで撮った子どもの写真や動画を家族と共有 し、コミュニケーションして楽しむ家族アルバムサービスです。
©MIXI みてねのミッション 世界中の家族のこころのインフラをつくる
©MIXI みてねのCRE - 一般的なCREよりもスコープが広い - もともと CXE (Customer eXperience
Engineering) チームだった - カスタマーサポート向け、マーケティング向け、それ以外 - ユーザの信頼性向上に繋がることをやっていく! CS向け マーケ向け それ以外
©MIXI みてねのCRE - 一般的なCREよりもスコープが広い - もともと CXE (Customer eXperience
Engineering) チームだった - カスタマーサポート向け、マーケティング向け、それ以外 - ユーザの信頼性向上に繋がることをやっていく! ここの話をします! CS向け マーケ向け それ以外
©MIXI 前提)みてねの管理ツール - Ruby - ActiveAdmin + 自作のコントローラ -
複雑な処理を ActiveAdmin でやるの大変なので.. - CanCanCan で権限管理 - モデル単位で権限を指定する - 個人ではなく Role に対して権限を付与する 権限設定のイメージ
©MIXI セキュリティ面での漠然とした不安 - 管理ツールでは様々な情報を扱っている - 機能改修や権限追加は、各チームが進めている - 日々、機能や権限が増えていく
チームA チームB チームC 管理ツール
©MIXI 「何が課題なのか?」を具体化する - セキュリティチームとあるべき姿を検討 - 特に守るべき重要な情報は何か? - 権限は、必要な人に、必要なものだけにしたい
- 後から追跡可能に、など - 現状とのギャップ(=解決すべき課題)が見えてきた
©MIXI 解決すべき課題 - 必要以上の権限付与 - 重要情報への適切なアクセス - みてねでは、アップロードされた写真や動画
最小権限の原則 アクセスされる 情報の最小化 ✖
©MIXI 課題① 必要以上の権限付与 - 権限の棚卸し + 不要な権限の剥奪 - 権限付与に気付ける仕組み
- パスごとのアクセス制御の見える化
©MIXI 課題① 必要以上の権限付与 - 権限の棚卸し + 不要な権限の剥奪 - 直近1ヶ月のアクセス数を洗い出して、アクセスの少ない機能から段階的に棚卸しを依頼
- 業務に支障が出ないよう徐々に権限を絞っていった - 権限付与に気付ける仕組み - パスごとのアクセス制御の見える化
©MIXI 課題① 必要以上の権限付与 - 権限の棚卸し + 不要な権限の剥奪 - 権限付与に気付ける仕組み
- GitHubのコードオーナーを指定 - PR時に開発マネージャーに通知が飛ぶようにした - パスごとのアクセス制御の見える化
©MIXI 課題① 必要以上の権限付与 - 権限の棚卸し + 不要な権限の剥奪 - 権限付与に気付ける仕組み
- パスごとのアクセス制御の見える化 - 権限を追加/削除したときに、どのパスがアクセス可/不可になったのか?がわかりにくい - 実際に確認できると安心なのでは? - 各 Role で実際にアクセスして、そのときの status code をチェックするテストを作った - テストが今後も追加されるように管理ツールに機能追加されたらPRでコメントを残す
©MIXI この部分を見れば、どの Role がア クセスできるのか一目瞭然 (生きたドキュメントにもなる )
©MIXI このテストで気付いたこと - 誰も権限の無いパス - 権限管理が効いていないパス - ActiveAdmin で
member_action や collection_action を使って RESTful ではないカスタムメソッドを 定義することもできるが、権限チェックされない(!) - 公式にも書かれている けど明示的に authorize! を呼ぶ必要がある - 権限の不整合状態 - 読み取り権限がないのに書き込み権限だけ持っていた、など
©MIXI - リクエストしたユーザの情報だけが一時的に閲覧可能な仕組み - リクエストはDBに残るので後から検証可能 - アクセスする必要のない情報には(うっかり)アクセスできないようにする 参考:
内部不正の理由の約6割は故意が認められない“うっかり” 課題② 重要情報への適切なアクセス 閲覧制御 事前のリクエストあり 事前のリクエストなし ❌ ⭕
©MIXI まとめ - 権限を必要なものに絞り、アクセスされる情報を最小化した - 継続的な見直しや改善は必要 - 不要な権限を検知する仕組み -
重要情報が表示される機能が増えた際の対応、など - あるべき姿に向かって、引き続き一歩ずつ改善を進めていく