Comment éviter les erreurs courantes lors de la création d'un panneau d'administration SaaS ? Nous allons vous présenter quelques pièges et des solutions potentielles spécifiquement pour tous les créateurs de SaaS !
Que se passe-t-il lorsque vous créez une application SaaS qui a plus de quelques clients ? À un moment donné, l'inévitable se produit ! Les responsables des ventes et de la satisfaction de la clientèle se présentent à l'équipe de développement avec des exigences telles que :
- Montrez-moi quels sont les comptes activement utilisés
- Me permettre d'entrer dans un compte client pour l'assistance technique
- Activer ou désactiver un indicateur de fonctionnalité spécifique pour un compte donné
- Certains utilisateurs ne peuvent pas se connecter, pouvez-vous me dire quelle méthode ils utilisent pour s'authentifier ?
- J'ai un revendeur qui a besoin d'accéder à ses sous-comptes.
- Je dois prolonger la période d'essai gratuite d'un compte
- Un compte a besoin d'une configuration spécifique que seuls les agents du service clientèle doivent pouvoir mettre en place.
- Montrez-moi le MRR total pour un groupe spécifique de clients.
Une variété d'outils peut couvrir certains de ces cas d'utilisation. Les outils de PLG tels que Segment et journy.io permettent de suivre l'activité. Peut-être utilisez-vous un service de signalement des fonctionnalités tel que LaunchDarkly. Stripe ou Chargebee peuvent gérer certains aspects liés à la facturation. Pendant ce temps, les problèmes liés à l'authentification peuvent être visibles dans votre compte Auth0. Cependant, il est peu probable que vous utilisiez toutes ces plateformes. Même si c'est le cas, vous ne pouvez probablement pas couvrir certains cas d'utilisation.
La solution consiste à créer un panneau d'administration personnalisé. Il semble qu'il y ait quelques frameworks et services commerciaux disponibles pour commencer rapidement. Mais comment choisir l'un d'entre eux plutôt que de créer son propre panneau à partir de zéro ?
Éviter les panneaux d'administration intégrés à l'application
En premier lieu, nous recommandons d'éviter tout panneau d'administration injecté dans le code de votre application principale, comme le fait ActiveAdmin. Cela présente de nombreux inconvénients :
- Les nouvelles routes de l'API d'administration peuvent probablement être détectées dans le code client de votre application et les attaquants peuvent sonder ou attaquer cette vulnérabilité.
- Vous finirez probablement par avoir plusieurs types d'utilisateurs au sein d'une même base de code, ce qui compliquera les révisions du contrôle d'accès.
- Il sera beaucoup plus difficile d'ajouter des fonctions de protection supplémentaires, telles que la restriction de l'accès à partir d'une seule adresse IP.
- Si un problème critique est détecté dans le code du panneau d'administration, il est plus difficile de le mettre hors ligne sans mettre votre application hors ligne.
Les applications qui ne respectent pas ce principe ont plus de chances de se retrouver dans les articles de Slashdot. En voici une : https://yro.slashdot.org/story/23/01/09/221207/researchers-track-gps-location-of-all-of-californias-new-digital-license-plates. Cette histoire montre notamment qu'il est possible de transformer un compte d'utilisateur en un compte de super-administrateur qui peut consulter les données d'autres utilisateurs.
Choisir un panneau d'administration avec un journal d'audit des actions de l'utilisateur
Au cas où cela devrait être dit, cela signifie que vos administrateurs devront s'authentifier avec des comptes d'utilisateurs distincts. (Pas de connexion avec un mot de passe partagé en utilisant support@app.io !). Quel en est l'avantage ? Si les paramètres d'un compte sensible sont mis à jour, vous pouvez savoir plus tard qui a effectué le changement.
Appliquer au moins 2FA (ou 3FA) pour authentifier les utilisateurs administrateurs
Choisissez une solution de panneau d'administration qui vous permet d'ajouter des facteurs supplémentaires en plus du 2FA, tels que des restrictions d'IP ou l'accès via d'autres solutions de confiance zéro.

Bonus : Utiliser les en-têtes de la politique de sécurité du contenu (CSP) pour bloquer le javascript inconnu
Le blocage du javascript inconnu est essentiel, en particulier sur les portails d'administration internes. Ci-dessous, un exemple de la vulnérabilité d'Apple à l'injection de courrier électronique, qui aurait pu être résolue avec de simples en-têtes CSP.
Ce tweet m'a rappelé l'époque où je piratais dans le cadre du programme de récompense des bugs d'Apple. J'ai trouvé, entre autres, une citation d'Harry Potter encodée en base64 sur une page interne de débogage et d'administration d'un compte iCloud. C'est la première fois que je partage ceci, car plus de 90 jours se sont écoulés ... https://t.co/CBc8QC5y3i pic.twitter.com/BNauDq7w01
- Sam Curry (@samwcyo) 24 décembre 2023
Conclusions sur la création d'un panneau d'administration sécurisé
Oui, il est possible de créer un panneau d'administration sécurisé pour votre application. Vous devrez choisir soit un framework pour vous aider, soit une solution SaaS ou low-code existante pour vous aider à démarrer. Tant que vous le séparez de votre application principale et qu'il communique avec elle par le biais d'API privées, tout devrait bien se passer.
Aikido est un outil de sécurité applicative tout-en-un. Vous voulez savoir si votre application est sécurisée ? Commencez à scanner gratuitement.