SaaSの管理画面を構築する際、よくあるミスを避けるにはどうすればいいのでしょうか?SaaSの管理画面を構築する際に陥りがちな落とし穴と解決策をご紹介します!
数人以上の顧客を持つSaaSアプリを開発していると、何が起こるでしょうか?ある時点で、避けられないことが起こります!営業やカスタマーサクセスの担当者が、開発チームに次のような要求をしてくるのです:
- アクティブに使用されているアカウントを表示する
- テクニカルサポート用の顧客アカウントを入力できるようにする
- あるアカウントの特定の機能フラグを有効または無効にする
- ログインできないユーザーがいますが、どのような方法で認証しているのか教えてください。
- リセラーがいるのですが、サブアカウントにアクセスする必要があります。
- アカウントの無料トライアルを延長したいのですが。
- アカウントは、カスタマーサクセスエージェントのみが設定できる特定の設定が必要です。
- 特定の顧客グループの総MRRを教えてください。
様々なツールがこれらのユースケースのいくつかをカバーすることができる。Segmentや journy.ioのようなPLGツールは、アクティビティを追跡することができる。LaunchDarklyのようなフィーチャー・フラグ・サービスを使うこともできるだろう。StripeやChargebeeは、課金関連の一部を管理するかもしれない。一方、認証に関する問題は、Auth0アカウントで確認できるかもしれない。しかし、これらすべてのプラットフォームを使っている可能性は低い。使っていたとしても、おそらくいくつかのユースケースをカバーできないだろう。
解決策は、カスタム管理パネルを構築することだ。すぐに始められるフレームワークや商用サービスがいくつかあるようだ。 しかし、一から自分で構築するのと比較して、どのように選べばいいのでしょうか?
アプリに組み込まれた管理パネルを避ける
第一の原則としては、ActiveAdminのように、メインアプリのコードに管理パネルをインジェクションすることは避けたい。これには多くのデメリットがある:
- 新しい管理APIルートは、アプリのクライアントコードで検出される可能性が高く、攻撃者はこの脆弱性を調査したり攻撃したりすることができる。
- 1つのコードベース内に複数のタイプのユーザーが存在することになり、アクセス・コントロールのレビューが複雑になる。
- 単一のIPアドレスからのアクセスを制限するなどの保護機能を追加することは、かなり難しくなります。
- 管理画面のコードに重大な問題が検出された場合、アプリをオフラインにすることなくオフラインにするのは難しい。
この原則に従わないアプリは、スラッシュドットの記事で終わる確率が高くなる。https://yro.slashdot.org/story/23/01/09/221207/researchers-track-gps-location-of-all-of-californias-new-digital-license-plates。特筆すべきは、このストーリーは、ユーザーアカウントを他のユーザーのデータを閲覧できるスーパー管理者アカウントにアップグレードすることが可能であることを示している。
ユーザーアクションの監査ログがある管理パネルを選ぶ
念のため言っておくと、管理者は別々のユーザーアカウントで認証する必要があるということです。(support@app.io を使って共有パスワードでログインすることはできません!)。この利点は何でしょうか?センシティブなアカウント設定が更新された場合、誰が変更したかを後で知ることができます。
管理者ユーザーを認証するために、少なくとも2FA(または3FA)を強制する。
IP制限や他のゼロ・トラスト・ソリューション経由のアクセスなど、2FAの上に追加要素を追加できる管理パネル・ソリューションを選択する。

おまけ:コンテンツ・セキュリティ・ポリシー(CSP)ヘッダーを使用して、未知のjavascriptをブロックする
未知のjavascriptをブロックすることは、特に内部管理ポータルにおいて非常に重要である。以下は、アップルがメール・インジェクションの脆弱性を抱えていた例だが、これは単純なCSPヘッダーで解決できたはずだ。
このツイートを見て、アップルのバグ報奨金プログラムでハッキングしていたときのことを思い出した。iCloudアカウントのデバッグと管理の内部ページで、よりによってbase64エンコードされたハリー・ポッターの引用を見つけたのだ。90日以上経過しているので、これを共有するのは初めてです... https://t.co/CBc8QC5y3i pic.twitter.com/BNauDq7w01
- サム・カレー (@samwcyo)2023年12月24日
安全な管理パネル構築のまとめ
はい、アプリ用に安全な管理画面を構築することは可能です。フレームワークを利用するか、既存のSaaSやローコード・ソリューションを利用する必要があります。メインのアプリから分離し、プライベートAPIを介してメインのアプリと通信するようにすれば、問題ないでしょう。
Aikido オールインワンのアプリケーションセキュリティツールです。あなたのアプリが安全かどうかを確認したいですか?無料でスキャンを始めましょう。