PHPカンファレンス福岡2024
レギュラートーク(15分)

安心して休めるマルチテナントDB運用 CakePHP運用例

hoge 小川 hoge
1

SaaSでは複数顧客のデータを同じApp、データベースサーバーで扱う設計(マルチテナント)をよく用います。
リソースの運用効率がよく管理も楽ですが、他顧客のデータにアクセス出来てしまうリスクを抱えています。

これでは攻撃が怖くて夜しか眠れない…情報流出のニュースを見るたび不安で寿司しか喉を通らない…恐怖を和らげるために毎日飲みに行ってしまう…
安心して遠くのカンファレンスに行くこともできません。

この対策として、顧客別にデータベース スキーマ(MySQLでの"データベース")を分け、DBユーザも分離する方法を紹介します。
DBユーザ権限の制限により、ロジックミスがあっても、仮にSQLインジェクションが通っても、絶対に他顧客データにはアクセスできない設計です。

またCakePHPのORMでこの運用を自動化し、ロジック側で意識せず運用する方法も紹介します。