Projet N°15 – Mon serveur de base de données liés à une interface web
Le projet consiste à mettre en place une infrastructure complète permettant d’héberger et de sécuriser un annuaire de contacts accessible depuis une interface web. La solution repose sur un serveur Windows Server hébergeant une base de données Microsoft SQL Server ainsi qu’une application web développée avec Symfony et exposée grâce au serveur IIS.
La partie infrastructure a principalement consisté à configurer le serveur, le service DNS et les droits d’accès. Une zone de recherche directe a été créée sur le serveur DNS afin d’associer un nom de domaine à l’application web grâce à un enregistrement de type A. Les droits NTFS ont également été configurés afin d’autoriser le compte IUSR à accéder aux ressources nécessaires au fonctionnement de l’application publiée sur IIS. Une résolution DNS spécifique a ensuite été mise en place sur le DNS du Homelab afin de permettre aux machines du réseau local d’accéder à l’application avec son nom de domaine.
Afin de permettre un accès à distance sécurisé, un tunnel VPN IPsec a été configuré sur le FortiGate 60F. La connexion s’effectue avec FortiClient et les règles de pare-feu ont été définies pour limiter les accès provenant du VPN au VLAN 4 dédié aux bases de données. Seuls les flux et protocoles nécessaires au fonctionnement de l’application et au travail du développeur sont autorisés, permettant ainsi de réduire la surface d’exposition de l’infrastructure.
La partie développement repose sur le framework Symfony. Symfony CLI a été installé sur le serveur et le projet a été configuré pour communiquer avec la base de données SQL Server grâce aux paramètres définis dans le fichier .env. Une entité GestionContact a été créée afin de représenter les données de la table de contacts dans l’application. Un contrôleur ContactApiController a ensuite été développé pour gérer les différentes requêtes envoyées à l’API.
L’API REST permet au front-end de communiquer avec la base de données au moyen de requêtes HTTP. Les méthodes GET permettent de récupérer les contacts, POST d’en ajouter, PUT de les modifier et DELETE de les supprimer. Les réponses sont retournées au format JSON avec des codes HTTP adaptés afin d’indiquer clairement le résultat de chaque opération.
L’ensemble du projet permet ainsi de mettre en œuvre une infrastructure combinant réseau, sécurité, administration système, base de données et développement web, tout en faisant collaborer les compétences SISR et SLAM sur une même infrastructure hébergée dans le Homelab.