Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20250326_管理ツールの権限管理で改善したこと

 20250326_管理ツールの権限管理で改善したこと

https://mixi.connpass.com/event/348533/ で発表した資料です。 #cre_meetup

Tatsuya Sasaki

March 26, 2025
Tweet

More Decks by Tatsuya Sasaki

Other Decks in Technology

Transcript

  1. ©MIXI みてねのCRE 
 - 一般的なCREよりもスコープが広い
 - もともと CXE (Customer eXperience

    Engineering) チームだった 
 - カスタマーサポート向け、マーケティング向け、それ以外 
 - ユーザの信頼性向上に繋がることをやっていく!
 CS向け
 マーケ向け
 それ以外

  2. ©MIXI みてねのCRE 
 - 一般的なCREよりもスコープが広い
 - もともと CXE (Customer eXperience

    Engineering) チームだった 
 - カスタマーサポート向け、マーケティング向け、それ以外 
 - ユーザの信頼性向上に繋がることをやっていく!
 ここの話をします! 
 CS向け
 マーケ向け
 それ以外

  3. ©MIXI 前提)みてねの管理ツール 
 - Ruby
 - ActiveAdmin + 自作のコントローラ
 -

    複雑な処理を ActiveAdmin でやるの大変なので.. 
 - CanCanCan で権限管理
 - モデル単位で権限を指定する 
 - 個人ではなく Role に対して権限を付与する 
 権限設定のイメージ 

  4. ©MIXI 課題① 必要以上の権限付与 
 - 権限の棚卸し + 不要な権限の剥奪
 - 直近1ヶ月のアクセス数を洗い出して、アクセスの少ない機能から段階的に棚卸しを依頼

    
 - 業務に支障が出ないよう徐々に権限を絞っていった 
 - 権限付与に気付ける仕組み
 - パスごとのアクセス制御の見える化

  5. ©MIXI 課題① 必要以上の権限付与 
 - 権限の棚卸し + 不要な権限の剥奪
 - 権限付与に気付ける仕組み


    - GitHubのコードオーナーを指定 
 - PR時に開発マネージャーに通知が飛ぶようにした 
 - パスごとのアクセス制御の見える化

  6. ©MIXI 課題① 必要以上の権限付与 
 - 権限の棚卸し + 不要な権限の剥奪
 - 権限付与に気付ける仕組み


    - パスごとのアクセス制御の見える化
 - 権限を追加/削除したときに、どのパスがアクセス可/不可になったのか?がわかりにくい 
 - 実際に確認できると安心なのでは? 
 - 各 Role で実際にアクセスして、そのときの status code をチェックするテストを作った 
 - テストが今後も追加されるように管理ツールに機能追加されたらPRでコメントを残す 

  7. ©MIXI このテストで気付いたこと 
 - 誰も権限の無いパス
 - 権限管理が効いていないパス
 - ActiveAdmin で

    member_action や collection_action を使って RESTful ではないカスタムメソッドを 定義することもできるが、権限チェックされない(!) 
 - 公式にも書かれている けど明示的に authorize! を呼ぶ必要がある 
 - 権限の不整合状態
 - 読み取り権限がないのに書き込み権限だけ持っていた、など 

  8. ©MIXI - リクエストしたユーザの情報だけが一時的に閲覧可能な仕組み
 - リクエストはDBに残るので後から検証可能 
 - アクセスする必要のない情報には(うっかり)アクセスできないようにする 
 参考:

    内部不正の理由の約6割は故意が認められない“うっかり” 
 課題② 重要情報への適切なアクセス 
 閲覧制御
 事前のリクエストあり 
 事前のリクエストなし 
 ❌
 ⭕

  9. ©MIXI まとめ
 - 権限を必要なものに絞り、アクセスされる情報を最小化した
 - 継続的な見直しや改善は必要
 - 不要な権限を検知する仕組み 
 -

    重要情報が表示される機能が増えた際の対応、など 
 - あるべき姿に向かって、引き続き一歩ずつ改善を進めていく