Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea una pipeline per immagini di container rinforzate utilizzando Image EC2 Builder e Terraform
Creato da Mike Saintcross () e Andrew Ranes () AWS AWS
Archivio di codice: Terraform Image EC2 Builder Container Hardening | Ambiente: produzione | Fonte: Packer, Chef o Pure Ansible |
Obiettivo: EC2 Image Builder | Tipo R: Re-architect | Carico di lavoro: open source |
Tecnologie: sicurezza, identità, conformità; DevOps | AWSservizi: Amazon EC2 Container Registry; EC2 Image Builder |
Riepilogo
Questo modello crea una pipeline di Image Builder che produce un'EC2immagine del contenitore di base Amazon Linux
La build include due EventBridge regole Amazon. Una regola avvia la pipeline di immagini del contenitore quando il risultato di Amazon Inspector è alto o critico, in modo che le immagini non sicure vengano sostituite. Questa regola richiede l'abilitazione della scansione avanzata di Amazon Inspector e Amazon Elastic Container Registry ECR (Amazon). L'altra regola invia notifiche a una coda di Amazon Simple Queue Service (AmazonSQS) dopo che un'immagine è stata inviata con successo al ECR repository Amazon, per aiutarti a utilizzare le immagini più recenti dei container.
Nota: Amazon Linux 2 sta per terminare il supporto. Per ulteriori informazioni, consulta Amazon Linux 2 FAQs
Prerequisiti e limitazioni
Prerequisiti
Un AWSaccount
in cui puoi implementare l'infrastruttura. AWSCommand Line Interface (AWSCLI) installata per impostare le AWS credenziali per la distribuzione locale.
Terraform è stato scaricato
e configurato seguendo le istruzioni nella documentazione di Terraform. Git
(se stai effettuando il provisioning da una macchina locale). Un ruolo all'interno dell'AWSaccount che puoi usare per creare AWS risorse.
Tutte le variabili definite nel file.tfvars.
Oppure puoi definire tutte le variabili quando applichi la configurazione Terraform.
Limitazioni
Questa soluzione crea un'infrastruttura Amazon Virtual Private Cloud (AmazonVPC) che include un NATgateway e un gateway Internet per la connettività Internet dalla sua sottorete privata. Non è possibile utilizzare gli VPCendpoint, poiché il processo di bootstrap di AWS Task Orchestrator ed Executor (AWSTOE) installa la versione 2 da
Internet. AWS CLI
Versioni del prodotto
Amazon Linux 2
AWSCLIversione 1.1 o successiva
Architettura
stack tecnologico Target
Questo modello crea 43 risorse, tra cui:
Due bucket Amazon Simple Storage Service (Amazon S3): uno per i file dei componenti della pipeline e uno per l'accesso al server e i log di flusso di Amazon VPC
Un cloud privato virtuale (VPC) che contiene una sottorete pubblica, una sottorete privata, tabelle di routing, un NAT gateway e un gateway Internet
Una pipeline, una ricetta e componenti di EC2 Image Builder
Un'immagine del contenitore
Una AWS chiave Key Management Service (AWSKMS) per la crittografia delle immagini
Una coda SQS
Tre ruoli: uno per eseguire la pipeline di EC2 Image Builder, un profilo di istanza per EC2 Image Builder e uno per le regole EventBridge
Due regole EventBridge
Struttura del modulo Terraform
Per il codice sorgente, vedere il GitHub repository Terraform Image EC2 Builder
├── 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
Dettagli del modulo
components.tf
contiene una risorsa di caricamento Amazon S3 per caricare il contenuto della/files
directory. Qui puoi anche aggiungere in modo modulare YAML file di componenti personalizzati./files
contiene i.yml
file che definiscono i componenti utilizzati incomponents.tf
.image.tf
contiene le definizioni per il sistema operativo con immagine di base. Qui è possibile modificare le definizioni per una diversa pipeline di immagini di base.infr-config.tf
edist-config.tf
contengono le risorse per l'AWSinfrastruttura minima necessaria per avviare e distribuire l'immagine.infra-network-config.tf
contiene l'VPCinfrastruttura minima in cui distribuire l'immagine del contenitore.hardening-pipeline.tfvars
contiene le variabili Terraform da utilizzare al momento dell'applicazione.pipeline.tf
crea e gestisce una pipeline EC2 Image Builder in Terraform.recipes.tf
è dove puoi specificare diverse miscele di componenti per creare ricette di contenitori.roles.tf
contiene le definizioni delle policy di AWS Identity and Access Management (IAM) per il profilo dell'istanza Amazon Elastic Compute Cloud (AmazonEC2) e il ruolo di distribuzione della pipeline.trigger-build.tf
contiene EventBridge le regole e le risorse di SQS coda.
Architettura di Target
Il diagramma illustra il seguente flusso di lavoro:
EC2Image Builder crea un'immagine del contenitore utilizzando la ricetta definita, che installa gli aggiornamenti del sistema operativo e applica Medium RHEL STIG all'immagine di base di Amazon Linux 2.
L'immagine protetta viene pubblicata su un ECR registro Amazon privato e una EventBridge regola invia un messaggio a una SQS coda quando l'immagine è stata pubblicata con successo.
Se Amazon Inspector è configurato per una scansione avanzata, esegue la scansione del registro Amazon. ECR
Se Amazon Inspector genera un risultato di gravità critica o elevata per l'immagine, una EventBridge regola attiva la pipeline di Image Builder per riavviare la pipeline di EC2 Image Builder e pubblicare un'immagine appena protetta.
Automazione e scalabilità
Questo modello descrive come effettuare il provisioning dell'infrastruttura e creare la pipeline sul computer. Tuttavia, è destinato a essere utilizzato su larga scala. Invece di distribuire i moduli Terraform localmente, puoi utilizzarli in un ambiente multi-account, come un AWSControl Tower con Account Factory for
Terraform. In tal caso, è necessario utilizzare un bucket S3 con stato di backend per gestire i file di stato Terraform anziché gestire lo stato di configurazione localmente. Per un utilizzo scalabile, distribuisci la soluzione su un account centrale, ad esempio un account Shared Services o Common Services, da un modello di account Control Tower o landing zone e concedi agli account dei consumatori l'autorizzazione ad accedere all'ECRarchivio e alla chiave Amazon. AWS KMS Per ulteriori informazioni sulla configurazione, consulta l'articolo Re:post Come posso consentire a un account secondario di inviare o caricare immagini nel mio archivio di ECR immagini Amazon
? Ad esempio, in un distributore automatico di account o Account Factory for Terraform, aggiungi le autorizzazioni a ogni linea di base dell'account o alla baseline di personalizzazione dell'account per fornire l'accesso a quel repository Amazon e alla chiave di crittografia. ECR Dopo aver distribuito la pipeline di immagini del contenitore, puoi modificarla utilizzando le funzionalità di Image EC2 Builder come i componenti, che ti aiutano a impacchettare più componenti nella build Docker.
La AWS KMS chiave utilizzata per crittografare l'immagine del contenitore deve essere condivisa tra gli account in cui è destinata l'immagine.
Puoi aggiungere il supporto per altre immagini duplicando l'intero modulo Terraform e modificando i seguenti attributi:
recipes.tf
Modifica su un altro
parent_image = "amazonlinux:latest"
tipo di immagine.Modifica
repository_name
in modo che punti a un ECR repository Amazon esistente. Questo crea un'altra pipeline che distribuisce un tipo di immagine principale diverso nel tuo repository Amazon ECR esistente.
Strumenti
Strumenti
Terraform (fornitura IaC)
Git (se si effettua il provisioning locale)
AWSCLIversione 1 o versione 2 (se il provisioning viene effettuato localmente)
Codice
Il codice per questo pattern si trova nel GitHub repository Terraform Image EC2 Builder
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Imposta le credenziali locali. | Configura le tue credenziali AWS temporanee.
| AWS DevOps |
Clonare il repository. |
| AWS DevOps |
Aggiorna le variabili. | Aggiorna le variabili nel
Ecco una descrizione di ogni variabile:
| AWS DevOps |
Inizializza Terraform. | Dopo aver aggiornato i valori delle variabili, puoi inizializzare la directory di configurazione Terraform. L'inizializzazione di una directory di configurazione scarica e installa il AWS provider, che è definito nella configurazione.
Dovresti vedere un messaggio che dice che Terraform è stato inizializzato con successo e identifica la versione del provider che è stata installata. | AWS DevOps |
Implementa l'infrastruttura e crea un'immagine del contenitore. | Usa il seguente comando per inizializzare, convalidare e applicare i moduli Terraform all'ambiente utilizzando le variabili definite nel file:
| AWS DevOps |
Personalizza il contenitore. | È possibile creare una nuova versione di una ricetta contenitore dopo che EC2 Image Builder ha distribuito la pipeline e la ricetta iniziale. È possibile aggiungere uno qualsiasi degli oltre 31 componenti disponibili in EC2 Image Builder per personalizzare la build del contenitore. Per ulteriori informazioni, vedere la sezione Componenti di Creare una nuova versione di una ricetta contenitore nella documentazione di EC2 Image Builder. | AWSamministratore |
Attività | Descrizione | Competenze richieste |
---|---|---|
Convalida del provisioning AWS dell'infrastruttura. | Dopo aver completato con successo il primo
| AWS DevOps |
Convalida le singole risorse dell'infrastruttura. AWS | Per convalidare le singole risorse che sono state distribuite, se esegui il provisioning a livello locale, puoi eseguire il comando seguente:
Questo comando restituisce un elenco di 43 risorse. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Rimuovi l'infrastruttura e l'immagine del contenitore. | Quando hai finito di lavorare con la configurazione di Terraform, puoi eseguire il seguente comando per rimuovere le risorse:
| AWS DevOps |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Errore durante la convalida delle credenziali del provider | Quando esegui Terraform
Questo errore è causato dalla scadenza del token di sicurezza per le credenziali utilizzate nella configurazione del computer locale. Per risolvere l'errore, consulta Impostare e visualizzare le impostazioni di configurazione nella AWS CLI documentazione. |
Risorse correlate
Terraform EC2 Image Builder Container Hardening
Pipeline (repository) GitHub AWSAccount Factory di Control Tower per Terraform
(post AWS sul blog) Installazione o aggiornamento della versione più recente di (documentazione) AWS CLI AWS CLI