Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree una canalización para imágenes de contenedores reforzadas con EC2 Image Builder y Terraform
Creado por Mike Saintcross (AWS) y Andrew Ranes (AWS)
Resumen
Este patrón crea una canalización de EC2 Image Builder que produce una imagen de contenedor base de Amazon Linux 2
La versión incluye dos EventBridge reglas de Amazon. Una regla inicia el proceso de imágenes de contenedor cuando el resultado de Amazon Inspector es Alto o Crítico, con el fin de sustituir las imágenes no seguras. Esta regla requiere que se habilite el escaneo mejorado de Amazon Inspector y Amazon Elastic Container Registry (Amazon ECR). La otra regla envía las notificaciones a una cola de Amazon Simple Queue Service (Amazon SQS) tras una inserción correcta de las imágenes en el repositorio de Amazon ECR, con el fin de que use siempre las últimas imágenes del contenedor.
nota
Amazon Linux 2 está a punto de finalizar el soporte. Para obtener más información, consulte Amazon Linux 2 FAQs
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS
en la que pueda implementar la infraestructura. Interfaz de la línea de comandos de AWS (AWS CLI) instalada para configurar sus credenciales de AWS para la implementación local.
Terraform descargado
y configurado según las instrucciones de la documentación de Terraform. Git
(si aprovisiona desde una máquina local). Un rol en la cuenta de AWS que pueda usar para crear recursos de AWS.
Todas las variables definidas en el archivo .tfvars.
También puede definir todas las variables al aplicar la configuración de Terraform.
Limitaciones
Esta solución crea una infraestructura de Amazon Virtual Private Cloud (Amazon VPC) que incluye una puerta de enlace NAT y una puerta de enlace de Internet para la conectividad a Internet desde su subred privada. No puede usar puntos de enlace de VPC, ya que el proceso de arranque de AWS Task Orchestrator and Executor () AWSTOE
instala la versión 2 de la CLI de AWS desde Internet.
Versiones de producto
Amazon Linux 2
Versión 1.1 o posterior de la CLI de AWS
Arquitectura
Pila de tecnología de destino
Este patrón crea 43 recursos, incluidos:
Dos buckets de Amazon Simple Storage Service (Amazon S3): uno para los archivos de los componentes del proceso y otro para el acceso al servidor y los registros de flujo de Amazon VPC
Una nube privada virtual (VPC) que contiene una subred pública, una subred privada, tablas de enrutamiento, una puerta de enlace NAT y una puerta de enlace de Internet
Una canalización, una receta y componentes de EC2 Image Builder
Una imagen de contenedor
Una clave de AWS Key Management Service (AWS KMS) para el cifrado de imágenes
Una cola de SQS
Tres funciones: una para ejecutar la canalización de EC2 Image Builder, una para el perfil de instancia para EC2 Image Builder y otra para EventBridge las reglas
Dos EventBridge reglas
Estructura del módulo Terraform
Para ver el código fuente, consulte el GitHub repositorio 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
Detalles del módulo
components.tf
contiene un recurso de carga de Amazon S3 para cargar el contenido del directorio/files
. También puede añadir aquí archivos YAML de componentes personalizados de forma modular./files
contiene los archivos.yml
que definen los componentes usados encomponents.tf
.image.tf
contiene las definiciones del sistema operativo de la imagen base. Aquí es donde puede modificar las definiciones para crear un proceso de imagen base diferente.infr-config.tf
ydist-config.tf
contienen los recursos de la infraestructura de AWS mínima necesaria para crear y distribuir la imagen.infra-network-config.tf
contiene la infraestructura de VPC mínima en la que implementar la imagen del contenedor.hardening-pipeline.tfvars
contiene las variables de Terraform que se usarán en el momento de la aplicación.pipeline.tf
crea y administra una canalización EC2 de Image Builder en Terraform.recipes.tf
es donde puede especificar diferentes combinaciones de componentes para crear recetas de contenedores.roles.tf
contiene las definiciones de la política de AWS Identity and Access Management (IAM) para el perfil de instancia y la función de implementación de canalización de Amazon Elastic Compute Cloud (Amazon EC2).trigger-build.tf
contiene las EventBridge reglas y los recursos de colas de SQS.
Arquitectura de destino

El diagrama ilustra el flujo de trabajo siguiente:
EC2 Image Builder crea una imagen de contenedor mediante la receta definida, que instala las actualizaciones del sistema operativo y aplica el STIG de RHEL Medium a la imagen base de Amazon Linux 2.
La imagen reforzada se publica en un registro privado de Amazon ECR y una EventBridge regla envía un mensaje a una cola de SQS cuando la imagen se ha publicado correctamente.
Si Amazon Inspector está configurado para un escaneo mejorado, escanea el registro de Amazon ECR.
Si Amazon Inspector genera un resultado de gravedad crítica o alta para la imagen, una EventBridge regla activa la canalización de EC2 Image Builder para que se ejecute de nuevo y publique una imagen recién reforzada.
Automatizar y escalar
Este patrón describe cómo aprovisionar la infraestructura y construir el proceso en su equipo. Sin embargo, está pensado para ser utilizado a escala. En lugar de implementar los módulos de Terraform de forma local, puede usarlos en un entorno multicuenta, como un entorno de AWS Control Tower con Account Factory para Terraform
. En ese caso, deberá usar un bucket de S3 con estado de backend para administrar los archivos de estado de Terraform en lugar de gestionar el estado de configuración de forma local. Para un uso a gran escala, implemente la solución en una cuenta central, como una cuenta de Shared Services o Common Services, desde un modelo de cuenta de Control Tower o zona de aterrizaje, y conceda permiso a las cuentas de los consumidores para acceder al repositorio de Amazon ECR y a la clave de AWS KMS. Para obtener más información sobre la configuración, consulte el artículo de Re:post ¿Cómo puedo permitir que una cuenta secundaria inserte o extraiga imágenes de mi repositorio de imágenes de Amazon ECR?
Por ejemplo, en una máquina expendedora de cuentas o en Account Factory para Terraform, añada permisos a cada línea base de cuenta o línea base de personalización de cuenta para proporcionar acceso a ese repositorio de Amazon ECR y a la clave de cifrado. Una vez desplegada la canalización de imágenes del contenedor, puede modificarla mediante las funciones de EC2 Image Builder, como los componentes, que le ayudan a empaquetar más componentes en la compilación de Docker.
La clave de AWS KMS que se usa para cifrar la imagen del contenedor debe compartirse entre las cuentas en las que se va a usar la imagen.
Puede añadir compatibilidad con otras imágenes duplicando todo el módulo Terraform y modificando los siguientes atributos
recipes.tf
:Modifique
parent_image = "amazonlinux:latest"
a otro tipo de imagen.Modifique
repository_name
para que apunte a un repositorio de Amazon ECR existente. Esto crea otro proceso que implementa un tipo de imagen principal diferente en su repositorio de Amazon ECR existente.
Herramientas
Herramientas
Terraform (aprovisionamiento de iAC)
Git (si se aprovisiona localmente)
CLI de AWS versión 1 o versión 2 (si se aprovisiona localmente)
Código
El código de este patrón se encuentra en el GitHub repositorio Terraform EC2 Image Builder Container Hardening
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configure las credenciales locales. | Configure sus credenciales temporales de AWS.
| AWS DevOps |
Clonar el repositorio. |
| AWS DevOps |
Actualice variables. | Actualice las variables del archivo
Aquí tiene una descripción de cada variable:
| AWS DevOps |
Inicialice Terraform. | Tras actualizar los valores de las variables, puede inicializar el directorio de configuración de Terraform. Al inicializar el directorio de configuración, se descarga e instala el proveedor de AWS definido en la configuración.
Aparecerá un mensaje indicando que Terraform se ha inicializado correctamente e identificando la versión del proveedor instalada. | AWS DevOps |
Implemente la infraestructura y cree una imagen de contenedor. | Use el siguiente comando para inicializar, validar y aplicar los módulos de Terraform al entorno mediante las variables definidas en su archivo
| AWS DevOps |
Personalice el contenedor. | Puede crear una nueva versión de una receta de contenedor después de que EC2 Image Builder haya implementado la canalización y la receta inicial. Puede añadir cualquiera de los más de 31 componentes disponibles en EC2 Image Builder para personalizar la construcción del contenedor. Para obtener más información, consulte la sección Componentes de Crear una nueva versión de una receta de contenedor en la documentación de EC2 Image Builder. | Administrador de AWS |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Valide el aprovisionamiento de la infraestructura de AWS. | Una vez que haya completado correctamente su primer comando
| AWS DevOps |
Valide los recursos individuales de la infraestructura de AWS. | Para validar los recursos individuales implementados, si aprovisiona de forma local, puede ejecutar el siguiente comando:
Este comando devuelve una lista de 43 recursos. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine la imagen de la infraestructura y el contenedor. | Cuando haya terminado de trabajar con la configuración de Terraform, puede ejecutar el siguiente comando para eliminar los recursos:
| AWS DevOps |
Solución de problemas
Problema | Solución |
---|---|
Error al validar las credenciales del proveedor | Al ejecutar los comandos
Este error se debe a la caducidad del token de seguridad de las credenciales usadas en la configuración de la máquina local. Para resolver el error, consulte Cómo establecer y ver ajustes de configuración en la documentación de la CLI de AWS. |
Recursos relacionados
Terraform EC2 Image Builder Container Hardening Pipeline (repositorio
) GitHub Fábrica de cuentas de AWS Control Tower para Terraform
(publicación del blog de AWS) Bucket de S3 de estado de backend
(documentación de Terraform) Instalación o actualización de la versión más reciente de la CLI de AWS (documentación de la CLI de AWS)