Comment puis-je sécuriser mon instance de conteneur Amazon ECS à l'aide des bonnes pratiques et des techniques de renforcement ?

Lecture de 8 minute(s)
0

Mes instances Amazon Elastic Container Service (Amazon ECS) ou les instances Amazon Elastic Compute Cloud (Amazon EC2) sous-jacentes rencontrent des problèmes tels que des interruptions inattendues, des redémarrages, des problèmes de mise à l’échelle ou une perte de données. Je souhaite sécuriser mon instance de conteneur Amazon ECS.

Brève description

Si vous utilisez le type de lancement Amazon EC2 dans Amazon ECS, les problèmes d'instance EC2 tels que les résiliations, les redémarrages ou les problèmes de performance affectent le conteneur. Pour résoudre ces problèmes, implémentez les bonnes pratiques pour sécuriser vos instances de conteneur Amazon ECS et gérer la maintenance, la mise à l'échelle et le dépannage d'Amazon EC2.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Sécuriser vos instances de conteneur Amazon ECS

Limiter l'accès des utilisateurs racine aux comptes AWS

N'utilisez pas le compte racine sauf si cela est nécessaire, par exemple pour modifier les paramètres du compte ou modifier le mot de passe de l'utilisateur racine. À la place, utilisez les rôles et les politiques d'AWS Identity and Access Management (IAM) pour configurer un accès qui respecte le principe du moindre privilège. Configurez également l'authentification multifactorielle (MFA) pour le compte racine.

Implémenter le renforcement de la sécurité

Utilisez des groupes de sécurité pour limiter le trafic entrant et sortant aux seules adresses IP et ports requis. Corrigez et mettez à jour régulièrement vos instances de conteneur Amazon ECS. Vous pouvez également utiliser Amazon Inspector pour identifier les vulnérabilités.

Utilisez le chiffrement pour les données sensibles en transit, telles que HTTPS, et au repos, telles que les volumes Amazon Elastic Block Storage (Amazon EBS). Pour plus d'informations, consultez la section Protection de l'infrastructure.

Utilisez AWS Systems Manager pour rationaliser l'application de correctifs et la maintenance des instances de conteneur Amazon ECS. Utilisez AWS Systems Manager Agent (SSM Agent) préinstallé sur des Amazon Machine Images (AMI) optimisées pour Amazon ECS pour implémenter des flux de gestion de correctifs automatisés. Cela inclut des fenêtres de maintenance planifiées et des stratégies de remplacement d’instances. Pour plus d'informations, consultez la section Automatiser l'application de correctifs en remplaçant les instances de conteneur Amazon ECS.

Activer la journalisation et la surveillance

Configurez AWS CloudTrail pour journaliser les activités de l'API. Il est recommandé de configurer des alarmes Amazon CloudWatch pour vous avertir en cas de valeurs élevées pour les paramètres CpuUtilization, DiskReadOps, DiskWriteOps, NetworkIn ou NetworkOut.

Pour surveiller les performances de votre instance de conteneur et l'utilisation des ressources, activez Container Insights.

Configurer une stratégie de sauvegarde et de restauration

Utilisez les instantanés Amazon EBS ou créez des AMI dans le cadre d'un plan de reprise après sinistre. Pour plus d'informations, consultez la section Sauvegarde et restauration d'Amazon EC2 à l'aide d'AWS Backup.

Important : Si vous supprimez un volume EBS, vous ne pouvez le récupérer que si vous avez créé un instantané Amazon EBS ou une sauvegarde AMI.

Pour collecter et exporter des métadonnées, des journaux d'instance et des données d'application, utilisez SSH pour vous connecter à votre instance. Puis, exécutez la commande describe-instances de l'interface de ligne de commande AWS suivante pour exporter les métadonnées d'instance :

aws ec2 describe-instances \
--instance-ids i-abcdxyz\
-- query "Reservations[].Instances[]" \
-- output text > file.txt

Pour exporter les journaux d'instance, exécutez la commande get-console-output suivante :

aws ec2 get-console-output --instance-id i-abcdxyz --output text

Remarque : Dans les commandes précédentes, remplacez i-abcdxyz par votre ID d'instance.

Résoudre les problèmes liés aux instances EC2

Résoudre les problèmes liés aux résiliations et aux redémarrages inattendus

Utilisez le drainage d’instance géré par Amazon ECS pour vous assurer que vos charges de travail s'arrêtent en douceur et passent à des instances stables lors d'interruptions ponctuelles ou d'événements similaires.

Pour des raisons de sécurité et de performance, Amazon EC2 planifie régulièrement des événements de maintenance de routine pour vos instances, tels que les redémarrages, les arrêts et les démarrages et la mise hors service. Vous pouvez utiliser le tableau de bord AWS Health pour suivre ces événements qui peuvent prendre plusieurs minutes. Pour plus d'informations sur les actions que vous pouvez entreprendre après des événements de maintenance de routine, consultez la section Actions recommandées pour les instances Amazon EC2 affectées par des événements planifiés.

Si vous constatez la résiliation d'une instance Spot, consultez la section Pourquoi Amazon EC2 a-t-il interrompu mon instance Spot ?

Amazon EC2 peut résilier votre instance dans le cadre d'une maintenance planifiée. Pour gérer ce type de résiliation d'instance, il est recommandé d'utiliser les hooks de cycle de vie Amazon EC2 Auto Scaling.

Résoudre les problèmes liés à une utilisation élevée des ressources

Pour vérifier l'utilisation élevée du processeur ou de la mémoire, consultez les journaux d'application et les métriques CloudWatch, ** CpuUtilization**, NetworkIn, NetworkOut, DiskReadOps et DiskWriteOps. Vérifiez également la métrique Container Insights MemoryUtilized.

Si votre configuration ne répond pas aux besoins en ressources de vos instances, effectuez une mise à l'échelle horizontale ascendante de vos instances.

Vous pouvez également utiliser les fournisseurs de capacité Amazon ECS pour mettre à l’échelle et optimiser de manière dynamique les ressources de calcul de votre cluster. Pour créer un fournisseur de capacité, utilisez la console Amazon ECS. Vous pouvez également exécuter une commande create-capacity-provider similaire à l'exemple suivant :

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

Résoudre les problèmes d'espace disque insuffisant

Le stockage principal de l'instance EC2 qui exécute les tâches Amazon ECS peut être saturé pour les raisons suivantes :

  • Journaux d’applications
  • Stockage d'un nombre excessif d’images de conteneur
  • Fichiers temporaires créés en exécutant des instances de conteneur

Notez que chaque fichier ou répertoire utilise un inode quelle que soit sa taille. Par conséquent, si vous avez plusieurs fichiers de petite taille, vous risquez de dépasser votre quota d'inodes. Si vous dépassez votre quota d'inodes, vous ne pouvez pas créer de nouveaux fichiers, même si l’espace disque disponible est suffisant.

Utilisez les configurations Amazon ECS pour automatiser le nettoyage des tâches et des images et supprimer les tâches interrompues et les images Docker non utilisées. Utilisez également la variable ECS_RESERVED_MEMORY variable pour vous assurer que les tâches ne consomment pas toute la mémoire disponible.

Pour nettoyer automatiquement les images anciennes ou inutilisées de vos référentiels, utilisez les politiques de cycle de vie d'Amazon Elastic Container Registry (Amazon ECR). Pour nettoyer les objets inutilisés tels que les images, les instances de conteneur, les volumes et les réseaux, utilisez les commandes d’élagage Docker. Pour plus d'informations, consultez la page Supprimer les objets Docker inutilisés sur le site Web de Docker Docs.

Pour afficher l'espace disque utilisé par tous les systèmes de fichiers montés, exécutez la commande suivante :

df -h

Pour afficher l'espace disque utilisé par un système de fichiers spécifique, exécutez la commande suivante :

df -h /

Remarque : La commande précédente affiche les données du système de fichiers racine uniquement.

Des problèmes de ressource peuvent survenir car le nombre d'inodes disponibles est insuffisant. Pour vérifier l'utilisation de vos inodes, exécutez la commande suivante :

df -i

Pour afficher l'espace disque total utilisé par un répertoire spécifique, exécutez la commande suivante :

du -sh /path/to/directory

Remarque : Remplacez directory par le nom de votre répertoire.

Pour répertorier les répertoires ou les fichiers les plus volumineux de votre application, exécutez la commande suivante :

du -ah /path/to/directory | sort -rh | head -n 10

Remarque : La commande précédente répertorie les 10 fichiers ou répertoires les plus volumineux. Remplacez 10 par le nombre de fichiers et de répertoires volumineux que vous souhaitez afficher, et directory par le nom de votre répertoire.

Pour vérifier la taille de chaque sous-répertoire de votre répertoire, exécutez la commande suivante :

du -h --max-depth=1

Pour optimiser votre capacité disponible, utilisez un parc d’instances Spot ou des fournisseurs de capacité pour vos instances EC2. Pour plus d'informations, consultez la section Mise sous tension de vos clusters Amazon ECS avec un parc d’instances Spot.

Informations connexes

Tolérance aux pannes et isolement des pannes

Comment puis-je résoudre les problèmes de connexion à mon instance Linux Amazon EC2 via SSH ?

Chiffrement Amazon EBS

Bonnes pratiques relatives à Amazon EC2

Guide de bonnes pratiques Amazon ECS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois