SaaS管理パネル構築時によくある間違いを回避するにはどうすればよいでしょうか?SaaS開発者の皆様のために、具体的な落とし穴と潜在的な解決策をいくつかご紹介します。
顧客数が数社を超えるSaaSアプリを構築していると、ある時点で避けられない事態が発生します。営業およびカスタマーサクセス担当者が、以下のような要件を持って開発チームにやってくるのです。
- アクティブに使用されているアカウントを表示してください。
- テクニカルサポートのため、顧客アカウントへのアクセスを許可してください。
- 特定のアカウントに対して、特定の機能フラグを有効または無効にできるようにしてください。
- 一部のユーザーがログインできません。認証に利用している方法を教えていただけますか?
- リセラーがおり、そのサブアカウントへのアクセスが必要となります。
- アカウントの無料トライアルを延長する必要があります。
- アカウントには、カスタマーサクセス担当者のみが設定できる特定の構成が必要となります。
- 特定の顧客グループの総MRRを表示してください。
これらのユースケースの一部は、さまざまなツールでカバー可能です。Segment やjourny.ioのようなPLGツールはアクティビティを追跡できます。LaunchDarklyのような機能フラグサービスを利用しているかもしれません。StripeやChargebeeが請求関連の一部を管理している可能性もあります。また、認証関連の問題はAuth0アカウントで確認できるかもしれません。しかし、これらすべてのプラットフォームを利用している可能性は低く、たとえ利用していたとしても、一部のユースケースはカバーできないでしょう。
ソリューションはカスタム管理パネルを構築することです。迅速に開始できるフレームワークや商用サービスがいくつかあるようです。しかし、それらの中から1つを選ぶか、ゼロから自社で構築するか、どのように判断すればよいでしょうか?
アプリに組み込まれた管理パネルは避けるべきです。
第一原則として、ActiveAdminのようにメインアプリのコードに管理パネルを組み込むことは避けるべきです。これには多くのデメリットがあります。
- 新しい管理者APIルートは、アプリケーションのクライアントコードで検出される可能性があり、攻撃者はこの脆弱性を調査または攻撃することができます。
- 単一のコードベース内に複数の種類のユーザーが存在することになり、アクセス制御のレビューが複雑化する可能性があります。
- 単一のIPアドレスからのアクセス制限といった追加の保護機能の実装は、はるかに困難になります。
- 管理パネルのコードで重大な問題が検出された場合、アプリをオフラインにすることなく管理パネルのみをオフラインにするのは困難です。
この原則に従わないアプリは、Slashdotの記事になる可能性が高まります。一例として、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)を強制してください。
2FAに加えて、IP制限や他のゼロトラストソリューションを介したアクセスなど、追加の認証要素を追加できる管理パネルソリューションを選択してください。

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

