Comment éviter les erreurs courantes lors de la création d'un panneau d'administration SaaS ? Nous allons décrire quelques pièges et solutions potentielles spécifiquement pour tous les développeurs SaaS !
Que se passe-t-il lorsque vous développez une application SaaS qui compte plus de quelques clients ? À un certain point, l'inévitable se produit ! Vos équipes de vente et de succès client se présentent à l'équipe de développement avec des exigences telles que :
- Affichez-moi quels comptes sont activement utilisés
- Permettez-moi d'accéder à un compte client pour le support technique
- Activer ou désactiver un feature flag 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 et il a besoin d'accéder à ses sous-comptes.
- Je dois prolonger un essai gratuit pour un compte
- Un compte nécessite une configuration spécifique que seuls les agents du service client devraient pouvoir configurer
- Affichez-moi le MRR total pour un groupe spécifique de clients.
Une variété d'outils peuvent couvrir certains de ces cas d'utilisation. Des outils PLG comme Segment et journy.io peuvent suivre l'activité. Peut-être utilisez-vous un service de feature flag tel que LaunchDarkly. Stripe ou Chargebee pourraient gérer certains aspects liés à la facturation. Pendant ce temps, les problèmes liés à l'authentification pourraient ê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 pourrez probablement pas couvrir certains cas d'utilisation.
La solution consiste à créer un panneau d'administration personnalisé. Il semble exister des frameworks et des services commerciaux pour démarrer rapidement. Mais, comment choisir entre une solution existante et la construire soi-même à partir de zéro ?
Évitez les panneaux d'administration intégrés à votre application
En principe, nous préconisons 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 :
- De nouvelles routes d'API d'administration peuvent probablement être détectées dans le code client de votre application, et les attaquants peuvent sonder ou exploiter cette vulnérabilité.
- Vous vous retrouverez probablement avec plusieurs types d'utilisateurs au sein d'une même base de code, ce qui complique les revues de contrôle d'accès.
- L'ajout de fonctionnalités de protection supplémentaires, telles que la restriction de l'accès depuis une seule adresse IP, sera beaucoup plus difficile
- 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 faire l'objet d'articles sur Slashdot. En voici un exemple : https://yro.slashdot.org/story/23/01/09/221207/researchers-track-gps-location-of-all-of-californias-new-digital-license-plates. Il est à noter que cet article démontre qu'il est possible de transformer un compte utilisateur en un compte super administrateur capable de consulter les données d'autres utilisateurs.
Choisissez un panneau d'administration avec un journal d'audit des actions utilisateur
Au cas où cela devrait être précisé, cela signifie que vos administrateurs devront s'authentifier avec des comptes utilisateurs distincts. (Pas de connexion avec un mot de passe partagé via support@app.io !). Quel est l'avantage ? Si des paramètres de compte sensibles sont mis à jour, vous pourrez savoir ultérieurement qui a effectué la modification.
Exiger au moins la 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 de la 2FA, tels que des restrictions IP ou un accès via d'autres solutions zero-trust.

Bonus : Utiliser les en-têtes Content Security Policy (CSP) pour bloquer le JavaScript inconnu
Bloquer le JavaScript inconnu est crucial, en particulier sur les portails d'administration internes. Ci-dessous, un exemple de la vulnérabilité d'Apple à une injection d'e-mail, qui aurait pu être résolue avec de simples en-têtes CSP.
Ce tweet m'a rappelé une époque où je participais au programme de bug bounty d'Apple. J'ai trouvé, entre autres choses, une citation de Harry Potter encodée en base64 sur une page interne de débogage et d'administration de compte iCloud. C'est la première fois que je partage cela, car plus de 90 jours se sont écoulés… https://t.co/CBc8QC5y3i pic.twitter.com/BNauDq7w01
— Sam Curry (@samwcyo) 24 décembre 2023
Réflexions finales sur la création d'un panneau d'administration sécurisé
Oui, il est possible de construire 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 démarrer. Tant que vous le maintenez séparé de votre application principale et qu'il communique avec celle-ci via des API privées, vous devriez être en sécurité.
Aikido est un outil de sécurité des applications tout-en-un. Vous voulez savoir si votre application est sécurisée ? Commencez à scanner gratuitement.
Sécurisez votre logiciel dès maintenant.


.jpg)

