Désormais, le site de The Green Earth Post est déployé, fonctionnel et sécurisé contre les attaques.
Cependant, il est nécessaire de mettre en place un système de surveillance (monitoring) et de notifications d’alerte (alerting) pour s’assurer de la bonne santé du site web. En effet, cela permet de détecter rapidement des anomalies et de les corriger le plus tôt possible. Sans ce type de système, on expose le site web à d’éventuelles pannes et, surtout, on risque de devoir déboguer en catastrophe à n’importe quel moment de la journée (par exemple au milieu de la nuit 😭🤯).
Manipulez les logs et les métriques des ressources AWS
Amazon CloudWatch est le service qui vous permet de collecter des données de vos applications et infrastructures pour pouvoir les surveiller et être notifié en cas de problème. Selon l’architecture générale suivante, CloudWatch est articulé autour de 5 briques :
Métriques
CloudWatch collecte des données de tous les services AWS et les agrège, selon des dimensions, pour obtenir des métriques contenues des noms d’espace (namespaces).
Vous pouvez également créer des métriques personnalisées avec le SDK AWS. Les valeurs des métriques sont horodatées et donc il est possible de les représenter sous forme de graphiques dans des tableaux de bord.
En utilisant les flux de métriques (metrics streams), vous pouvez livrer les métriques à d’autres systèmes en quasi temps réel pour être analysées ; le lac de données est le cas d’usage le plus fréquent :
Alarmes
Une alarme est utilisée pour surveiller une métrique CloudWatch unique ou le résultat d'une expression mathématique basée sur des métriques CloudWatch. Lorsque la métrique dépasse un seuil, défini à la création de l’alarme, celle-ci s’enclenche. Trois actions sont possibles :
effectuer l’arrêt, la résiliation, le redémarrage ou la récupération d’une instance EC2 ;
déclencher un Auto Scaling ;
envoyer une notification (sms, email…) via le service Amazon SNS (à étudier plus tard).
Journaux (Logs)
CloudWatch collecte les logs des applications installées dans les services AWS (Lambda, EC2, ECS, API Gateway…). Ils sont regroupés dans des groupes de journaux et des flux de journaux.
Par défaut, les instances EC2 n’envoient pas de logs. Il faut y installer un agent CloudWatch Logs.
CloudWatch vous permet d’exporter vos logs afin de les analyser avec d’autres systèmes :
Exporter vos logs dans un compartiment S3 où ils pourront être ensuite analysés avec Athena. Les logs ne pourront pas être analysés en temps réel !
Souscrire à un abonnement pour les analyser en temps réel.
A - Il est possible d’ajouter un filtre sur les logs à extraire.
Informations (Insights)
CloudWatch Insights vous aident à obtenir une visibilité opérationnelle sur vos ressources AWS. Il est composé de 4 rubriques :
Container Insights : collecte les logs et métriques systèmes des conteneurs ECS et EKS.
Pour EKS et Kubernetes, il faut une version conteneurisée de l'agent CloudWatch.
Lambda Insights : collecte des métriques détaillées pour dépanner les fonctions Lambda.
Contributors Insights : vous aide à trouver, via CloudWatch Logs, les premiers contributeurs.
exemple : trouvez le top 10 des adresses IP qui accèdent à notre site web.
Application Insights : vous crée automatiquement des tableaux de bord pour dépanner votre application et les services AWS associés.
EventBridge (anciennement CloudWatch Events)
C’est un service de bus d'événements sans serveur qui permet de connecter des services/applications avec d’autres services/applications AWS ou externes.
A - Tous les événements (au format JSON) des services AWS sont envoyés dans le bus par défaut EventBridge.
B - Définissez des règles pour les appliquer à certains types d’événements, et définir à quel(s) service(s) les transmettre.
C - EventBridge dispose d’un registre des schémas (schema registry) qui vous permet de générer du code pour votre application, qui saura à l'avance comment les données sont structurées dans le bus d'événements.
À vous de jouer !
Afin de visualiser et surveiller l'infrastructure et les applications qui composent le site web de The Green Earth Post, il vous faut créer un tableau de bord. Pour vous initier à cela, réalisez les actions suivantes :
créez un tableau de bord vierge ;
ajoutez un graphique basé sur la métrique CPUUtilization du groupe Auto Scaling.
Poursuivez avec moi pour voir si vous avez bien réussi.
Auditez votre compte AWS
Le service AWS CloudTrail, activé par défaut, vous aide à assurer l’audit opérationnel et des risques, la gouvernance et la conformité de votre compte AWS. CloudTrail stocke des événements correspondant à des actions effectuées par :
un utilisateur ;
un rôle ;
un service AWS ;
SDK/CLI ;
des appels d’API AWS.
Trois types d’événements sont capturés :
événements Insights : CloudTrail Insights analyse automatiquement vos événements et génère un événement Insights si une activité inhabituelle est détectée.
Pour faire analyser ces événements par d’autres systèmes de surveillance, créez un journal d'activité/suivi (trail), c’est-à-dire une configuration pour une ou toutes les régions AWS permettant la livraison d'événements vers un compartiment Amazon S3 de votre choix. Vous pouvez également spécifier CloudWatch Logs et EventBridge.
A - Créez un journal d’activité/de suivi pour transférer les événements.
B - Inspectez et auditez les événements CloudTrail via la console.
C - Envoyez certains événements CloudTrail pour être analysés avec CloudWatch Logs.
D - Les événements CloudTrail ne peuvent pas être stockés plus de 90 jours. Sauvegardez-les dans un compartiment et analysez-les avec Athena.
E - Les événements CloudTrail sont envoyés dans EventBridge où vous pouvez activer des alertes si un type d’événement est détecté (ex. : compartiment s3 supprimé).
AWS Config est un autre service AWS intéressant pour auditer et valider la conformité des configurations de vos ressources AWS. Il vous aide à définir des règles de conformité que vos ressources doivent respecter. Quelques exemples :
Quand un volume EBS est créé, le chiffrement doit être activé.
Le nombre d’instances EC2 dans un compte reste inférieur à un seuil.
Les compartiments S3 ne doivent pas autoriser d’accès public.
Qu’est-ce qui se passe si une des règles n’est pas respectée ?
Dans ce cas, AWS Config peut :
envoyer un événement dans EventBridge pour de la notification :
A - AWS Config surveille si les compartiments n’ont pas d’accès public.
B - AWS Config déclenche un événement concernant la ressource non conforme.
C - Notifier un admin, par exemple.
D - Un compartiment n’est pas conforme.
corriger les ressources non-conformes à l’aide d'AWS SSM :
A - AWS Config surveille si les compartiments n’ont pas d’accès public.
B - AWS Config déclenche un correctif via SSM.
C - SSM désactive l’accès public sur le compartiment concerné.
D - Un compartiment n’est pas conforme.
Protégez votre compte
Voici une liste de services AWS pour protéger votre compte :
Amazon GuardDuty protège votre compte en utilisant l'apprentissage automatique pour découvrir des menaces. Il s’appuie sur des sources de données, par exemple les événements dans CloudTrail.
Amazon Inspector détecte et analyse automatiquement les instances EC2 et les images de conteneur résidant dans ECR à la recherche de vulnérabilités logicielles et d'exposition involontaire au réseau.
Amazon Macie utilise l'apprentissage automatique et la correspondance de modèles pour découvrir et protéger vos données sensibles dans AWS.
Amazon Macie aide à identifier et à vous alerter sur les données sensibles non protégées telles que les informations personnelles identifiables.
En résumé
Cloudwatch vous permet de collecter des logs et des métriques à surveiller.
Vous pouvez créer des tableaux de bord avec CloudWatch.
CloudTrail vous aide à auditer votre compte AWS.
Découvrons dans le prochain chapitre comment mettre en place un système de notification !