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
980
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
12k
Classi - Real Tech Night
sasata299
1
4.4k
20151129_Mroongaをとある教育サービスで導入してみた話
sasata299
0
4.8k
20150625_SpeeeTeckParty
sasata299
9
8.8k
前回のMF Geeks Nightに参加してから実践したこと
sasata299
0
950
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
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
620
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
220
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
1.4k
RemoteFunctionを使ったコロケーション
mkazutaka
1
140
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
360
「タコピーの原罪」から学ぶ間違った”支援” / the bad support of Takopii
piyonakajima
0
150
Behind Postgres 18: The People, the Code, & the Invisible Work | Claire Giordano | PGConfEU 2025
clairegiordano
0
150
AIの個性を理解し、指揮する
shoota
3
450
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
220
組織全員で向き合うAI Readyなデータ利活用
gappy50
5
1.6k
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
5
1.9k
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
290
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Code Review Best Practice
trishagee
72
19k
Balancing Empowerment & Direction
lara
5
700
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
A Tale of Four Properties
chriscoyier
161
23k
4 Signs Your Business is Dying
shpigford
186
22k
Documentation Writing (for coders)
carmenintech
75
5.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Cult of Friendly URLs
andyhume
79
6.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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 まとめ - 権限を必要なものに絞り、アクセスされる情報を最小化した - 継続的な見直しや改善は必要 - 不要な権限を検知する仕組み -
重要情報が表示される機能が増えた際の対応、など - あるべき姿に向かって、引き続き一歩ずつ改善を進めていく