Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez un pipeline pour les images de conteneurs renforcées à l'aide d' EC2 Image Builder et de Terraform
Créée par Mike Saintcross (AWS) et Andrew Ranes (AWS)
Récapitulatif
Ce modèle crée un pipeline EC2 Image Builder qui produit une image de conteneur de base Amazon Linux 2
La version inclut deux EventBridge règles Amazon. Une règle lance le pipeline d'images du conteneur lorsque le résultat d'Amazon Inspector est élevé ou critique, de sorte que les images non sécurisées sont remplacées. Cette règle exige que le scan amélioré Amazon Inspector et Amazon Elastic Container Registry (Amazon ECR) soit activé. L'autre règle envoie des notifications à une file d'attente Amazon Simple Queue Service (Amazon SQS) après un transfert d'image réussi vers le référentiel Amazon ECR, afin de vous aider à utiliser les dernières images de conteneur.
Note
Le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez Amazon Linux 2 FAQs
Conditions préalables et limitations
Prérequis
Un compte AWS
dans lequel vous pouvez déployer l'infrastructure. Interface de ligne de commande AWS (AWS CLI) installée pour définir vos informations d'identification AWS pour le déploiement local.
Terraform a été téléchargé
et configuré en suivant les instructions de la documentation Terraform. Git
(si vous effectuez le provisionnement depuis une machine locale). Rôle au sein du compte AWS que vous pouvez utiliser pour créer des ressources AWS.
Toutes les variables définies dans le fichier .tfvars.
Vous pouvez également définir toutes les variables lorsque vous appliquez la configuration Terraform.
Limites
Cette solution crée une infrastructure Amazon Virtual Private Cloud (Amazon VPC) qui inclut une passerelle NAT et une passerelle Internet pour la connectivité Internet depuis son sous-réseau privé. Vous ne pouvez pas utiliser les points de terminaison VPC, car le processus d'amorçage d'AWS Task Orchestrator and Executor () AWSTOE
installe la version 2 de l'interface de ligne de commande AWS depuis Internet.
Versions du produit
Amazon Linux 2
AWS CLI version 1.1 ou ultérieure
Architecture
Pile technologique cible
Ce modèle crée 43 ressources, dont :
Deux compartiments Amazon Simple Storage Service (Amazon S3) : un pour les fichiers des composants du pipeline et un pour l'accès au serveur et aux journaux de flux Amazon VPC
Un cloud privé virtuel (VPC) qui contient un sous-réseau public, un sous-réseau privé, des tables de routage, une passerelle NAT et une passerelle Internet
Un pipeline, une recette et des composants d' EC2 Image Builder
Une image de conteneur
Une clé AWS Key Management Service (AWS KMS) pour le chiffrement des images
Une file d'attente SQS
Trois rôles : un pour exécuter le pipeline EC2 Image Builder, un profil d'instance pour EC2 Image Builder et un pour les EventBridge règles
Deux EventBridge règles
Structure du module Terraform
Pour le code source, consultez le GitHub référentiel Terraform EC2 Image Builder Container Hardening
├── components.tf ├── config.tf ├── dist-config.tf ├── files │ └──assumption-policy.json ├── hardening-pipeline.tfvars ├── image.tf ├── infr-config.tf ├── infra-network-config.tf ├── kms-key.tf ├── main.tf ├── outputs.tf ├── pipeline.tf ├── recipes.tf ├── roles.tf ├── sec-groups.tf ├── trigger-build.tf └── variables.tf
Détails du module
components.tf
contient une ressource de téléchargement Amazon S3 pour télécharger le contenu du/files
répertoire. Vous pouvez également y ajouter des fichiers YAML de composants personnalisés de manière modulaire./files
contient les.yml
fichiers qui définissent les composants utilisés danscomponents.tf
.image.tf
contient les définitions du système d'exploitation de l'image de base. C'est ici que vous pouvez modifier les définitions d'un autre pipeline d'images de base.infr-config.tf
etdist-config.tf
contiennent les ressources nécessaires à l'infrastructure AWS minimale nécessaire pour créer et distribuer l'image.infra-network-config.tf
contient l'infrastructure VPC minimale dans laquelle déployer l'image du conteneur.hardening-pipeline.tfvars
contient les variables Terraform à utiliser au moment de l'application.pipeline.tf
crée et gère un pipeline EC2 Image Builder dans Terraform.recipes.tf
est l'endroit où vous pouvez spécifier différents mélanges de composants pour créer des recettes de conteneurs.roles.tf
contient les définitions de la politique AWS Identity and Access Management (IAM) pour le profil d'instance Amazon Elastic Compute Cloud (Amazon EC2) et le rôle de déploiement du pipeline.trigger-build.tf
contient les EventBridge règles et les ressources de file d'attente SQS.
Architecture cible

Le diagramme illustre le flux de travail suivant :
EC2 Image Builder crée une image de conteneur en utilisant la recette définie, qui installe les mises à jour du système d'exploitation et applique le RHEL Medium STIG à l'image de base Amazon Linux 2.
L'image renforcée est publiée dans un registre Amazon ECR privé, et une EventBridge règle envoie un message à une file d'attente SQS lorsque l'image a été publiée avec succès.
Si Amazon Inspector est configuré pour une analyse améliorée, il analyse le registre Amazon ECR.
Si Amazon Inspector génère un résultat de gravité critique ou élevé pour l'image, une EventBridge règle déclenche la réexécution du pipeline EC2 Image Builder et la publication d'une image récemment durcie.
Automatisation et mise à l'échelle
Ce modèle décrit comment provisionner l'infrastructure et créer le pipeline sur votre ordinateur. Cependant, il est destiné à être utilisé à grande échelle. Au lieu de déployer les modules Terraform localement, vous pouvez les utiliser dans un environnement multi-comptes, tel qu'un environnement AWS Control Tower with Account Factory pour
Terraform. Dans ce cas, vous devez utiliser un compartiment S3 d'état principal pour gérer les fichiers d'état Terraform au lieu de gérer l'état de configuration localement. Pour une utilisation à grande échelle, déployez la solution sur un compte central, tel qu'un compte Shared Services ou Common Services, à partir d'un modèle de compte Control Tower ou landing zone, et autorisez les comptes clients à accéder au référentiel Amazon ECR et à la clé AWS KMS. Pour plus d'informations sur la configuration, consultez l'article Re:Post Comment autoriser un compte secondaire à envoyer ou à extraire des images dans mon référentiel d'images Amazon ECR ?
Par exemple, dans un distributeur automatique de comptes ou Account Factory for Terraform, ajoutez des autorisations à chaque ligne de base de compte ou à chaque ligne de base de personnalisation du compte pour donner accès à ce référentiel Amazon ECR et à cette clé de chiffrement. Une fois le pipeline d'images de conteneur déployé, vous pouvez le modifier à l'aide des fonctionnalités EC2 d'Image Builder, telles que les composants, qui vous aident à intégrer davantage de composants dans la version Docker.
La clé AWS KMS utilisée pour chiffrer l'image du conteneur doit être partagée entre les comptes dans lesquels l'image est destinée à être utilisée.
Vous pouvez ajouter la prise en charge d'autres images en dupliquant l'intégralité du module Terraform et en modifiant les attributs suivants :
recipes.tf
Passez
parent_image = "amazonlinux:latest"
à un autre type d'image.Modifiez
repository_name
pour pointer vers un référentiel Amazon ECR existant. Cela crée un autre pipeline qui déploie un type d'image parent différent dans votre référentiel Amazon ECR existant.
Outils
Outils
Terraform (provisionnement iAC)
Git (en cas de provisionnement local)
CLI AWS version 1 ou version 2 (en cas de provisionnement local)
Code
Le code de ce modèle se trouve dans le GitHub référentiel Terraform EC2 Image Builder Container Hardening
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Configurez les informations d'identification locales. | Configurez vos informations d'identification temporaires AWS.
| AWS DevOps |
Pour cloner le référentiel. |
| AWS DevOps |
Mettez à jour les variables. | Mettez à jour les variables du
Voici une description de chaque variable :
| AWS DevOps |
Initialisez Terraform. | Après avoir mis à jour les valeurs de vos variables, vous pouvez initialiser le répertoire de configuration Terraform. L'initialisation d'un répertoire de configuration télécharge et installe le fournisseur AWS, qui est défini dans la configuration.
Vous devriez voir un message indiquant que Terraform a été correctement initialisé et identifiant la version du fournisseur qui a été installée. | AWS DevOps |
Déployez l'infrastructure et créez une image de conteneur. | Utilisez la commande suivante pour initialiser, valider et appliquer les modules Terraform à l'environnement en utilisant les variables définies dans votre fichier :
| AWS DevOps |
Personnalisez le conteneur. | Vous pouvez créer une nouvelle version d'une recette de conteneur une fois qu' EC2 Image Builder a déployé le pipeline et la recette initiale. Vous pouvez ajouter n'importe lequel des 31 composants disponibles dans EC2 Image Builder pour personnaliser la construction du conteneur. Pour plus d'informations, consultez la section Composants de la section Créer une nouvelle version d'une recette de conteneur dans la documentation EC2 d'Image Builder. | Administrateur AWS |
Tâche | Description | Compétences requises |
---|---|---|
Validez le provisionnement de l'infrastructure AWS. | Une fois que vous avez terminé avec succès votre première
| AWS DevOps |
Validez les ressources individuelles de l'infrastructure AWS. | Pour valider les ressources individuelles qui ont été déployées, si vous approvisionnez localement, vous pouvez exécuter la commande suivante :
Cette commande renvoie une liste de 43 ressources. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez l'image de l'infrastructure et du conteneur. | Lorsque vous avez fini de travailler avec votre configuration Terraform, vous pouvez exécuter la commande suivante pour supprimer des ressources :
| AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Erreur lors de la validation des informations d'identification du fournisseur | Lorsque vous exécutez la
Cette erreur est due à l'expiration du jeton de sécurité pour les informations d'identification utilisées dans la configuration de votre machine locale. Pour résoudre l'erreur, consultez la section Définir et afficher les paramètres de configuration dans la documentation de l'AWS CLI. |
Ressources connexes
Pipeline de renforcement des conteneurs Terraform EC2 Image Builder
(référentiel) GitHub AWS Control Tower Account Factory pour Terraform
(article de blog AWS) État du compartiment S3 du backend
(documentation Terraform) Installation ou mise à jour de la dernière version de l'AWS CLI (documentation de l'AWS CLI)