Ce Document d'Architecture Technique a pour objectif de décrire en détail l'architecture et la mise en œuvre technique du déploiement d’un serveur web WordPress et de sa base de données MariaDB sur Amazon Web Services de manière automatisée à l'aide de Terraform.
Le déploiement d'un serveur web WordPress sur AWS à l'aide de Terraform repose sur :
- L'hypothèse que toutes les autorisations et configurations AWS nécessaires sont en place avec une connexion stable et sécurisée pour les administrateurs.
- Les contraintes incluent la sécurité des flux, la restriction des accès notamment SSH, la minimisation des coûts et la garantie de la performance et de la disponibilité via des configurations adaptées et d’un load balancer.
- Les exigences générales stipulent que l'infrastructure doit être définie et automatisée avec Terraform, utiliser Amazon EC2 pour la création du serveur web et Amazon RDS pour la base de données.
- Utilisation de zones de disponibilité multiples pour assurer une haute disponibilité.
- Sécurité renforcée grâce à des groupes de sécurité bien définis.
- Gestion de l'infrastructure en tant que code avec Terraform.
Les composants logiques incluent :
- VPC (Virtual Private Cloud)
- Sous-réseaux (Subnets)
- Groupes de sécurité (Security Groups)
- Instances EC2 (Elastic Compute Cloud)
- Amazon RDS (Relational Database Service)
- NAT Gateway
- Internet Gateway
Les échanges de données se feront principalement via :
- HTTP/HTTPS : Pour les communications entre les utilisateurs et les applications web.
- MySQL : Pour les interactions avec la base de données.
Les composants de la solution sont répartis et organisés comme suit :
- Instances EC2 : Hébergeant le serveur web WordPress.
- Amazon RDS : Héberge la base de données MySQL.
- VPC et sous-réseaux : Fournissent un environnement réseau isolé.
- NAT Gateway et Internet Gateway : Gèrent le trafic entrant et sortant.
- Groupes de sécurité : Contrôlent l'accès aux ressources.
- HTTP/HTTPS : Pour les communications entre les utilisateurs et le serveur web.
- MySQL : Pour les interactions entre le serveur web et la base de données.
- SSH : Pour la gestion et la maintenance des instances EC2.
Les environnements seront distribués dans des sous-réseaux publics et privés pour la sécurité et la gestion.
L'architecture du système est conçue pour assurer la résilience et la scalabilité en utilisant :
- Une instance EC2 avec un load balancer pour la répartition de la charge web
- Un RDS pour la base de données.
L'architecture réseau inclut :
- VPC : Contient tous les composants réseau.
- Sous-réseaux publics et privés : Séparent les ressources accessibles depuis Internet de celles qui ne le sont pas.
- Internet Gateway : Permet aux instances dans les sous-réseaux publics d'accéder à Internet.
- NAT Gateway : Permet aux instances dans les sous-réseaux privés d'accéder à Internet de manière sécurisée.
- Groupes de sécurité : Gèrent les règles de trafic entrant et sortant.
L'infrastructure utilise Terraform pour la gestion et l'orchestration des ressources AWS. Les configurations sont stockées dans un dépôt Git pour assurer la gestion de version et la collaboration.
Les éléments matériels incluent les instances EC2 pour le serveur web et les bases de données, et divers composants réseau AWS pour assurer la connectivité et la sécurité.
- Disponibilité : Utilisation de plusieurs zones de disponibilité pour assurer la redondance.
- Sécurité : Mise en place de groupes de sécurité stricts et utilisation de NAT Gateway pour les sous-réseaux privés.
Pour l'environnement AWS, les types de machines utilisés incluent :
- EC2 T3a.Small :
- Utilisation : Hébergement du serveur web WordPress.
- Configuration : Instances EC2 de type t2.medium pour équilibrer le coût et les performances.
- Sécurité : Accès SSH limité à des adresses IP spécifiques, communication sécurisée via HTTPS.
L'architecture réseau est conçue pour fournir une connectivité sécurisée et performante aux composants de la solution déployée sur AWS en utilisant une combinaison de sous-réseaux publics et privés, des gateways et des groupes de sécurités.
La mise en place d’un load balancer pour la répartition de la charge web.
Les ressources critiques sont déployées sur plusieurs zones de disponibilité pour la tolérance aux pannes.
Les clés de chiffrement sont gérées par AWS KMS (Key Management Service) avec des politiques de rotation et de gestion appropriées.
Les sauvegardes de la base de données RDS sont effectuées de manière régulière et automatisée.
Les mises à jour de sécurité et les correctifs sont appliqués régulièrement aux instances EC2.
Le système est conçu pour gérer les charges de travail prévues en utilisant des instances EC2 adaptées et des stratégies de répartition de la charge.
Les normes et standards appliqués incluent les meilleures pratiques de sécurité et de gestion, que ce soit au niveau de Terraform ou de l'infrastructure AWS.
Des groupes de sécurité stricts sont mis en place pour contrôler l'accès et protéger les données.
Utilisation de IAM (Identity and Access Management) pour gérer l'authentification des utilisateurs et des services.
Les utilisateurs finaux sont authentifiés via des méthodes sécurisées telles que les connexions HTTPS et les authentifications multi-facteurs.
Les accès sont contrôlés par des politiques IAM et des groupes de sécurité.
Les autorisations sont gérées en fonction des rôles et des responsabilités des utilisateurs.
Les autorisations sont gérées en fonction des rôles et des responsabilités des utilisateurs:
- Administrateurs : gestion de l'infrastructure et de la sécurité.
- Utilisateurs WordPress : gestion du site web.
Les règles d'accès sont basées sur le principe du moindre privilège et sont régulièrement révisées.
Les données en transit sont chiffrées via TLS (Transport Layer Security).
Les données stockées sont chiffrées à l'aide de services AWS comme RDS.
Le système est conçu pour supporter en moyenne 1000 utilisateurs simultanés.
Le trafic réseau est surveillé et optimisé pour assurer la performance.
Les charges des instances EC2 sont réparties et surveillées.
Le volume de données stockées est de 20 Go.
Les échanges se font entre l'instance EC2 et notre RDS.
Nous utilisons des services comme AWS CloudWatch pour la surveillance en temps réel des performances et des événements.
L'administration du système est centralisée via AWS Management Console, AWS CLI et Terraform pour l'infrastructure.