As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie um pipeline para imagens de contêiner reforçadas usando o EC2 Image Builder e o Terraform
Criado por Mike Saintcross (AWS) e Andrew Ranes () AWS
Repositório de código: Terraform EC2 Image Builder Container | Ambiente: produção | Origem: Packer, Chef ou Pure Ansible |
Alvo: EC2 Image Builder | Tipo R: redefinir arquitetura | Workload: código aberto |
Tecnologias: Segurança, identidade, conformidade; DevOps | AWSserviços: Amazon EC2 Container Registry; EC2 Image Builder |
Resumo
Esse padrão cria um pipeline do EC2 Image Builder que produz uma imagem reforçada de contêiner base do Amazon Linux
A compilação inclui duas EventBridge regras da Amazon. Uma regra inicia o pipeline de imagens do contêiner quando a descoberta do Amazon Inspector é Alta ou Crítica para que imagens não seguras sejam substituídas. Essa regra exige que o escaneamento aprimorado do Amazon Inspector e do Amazon Elastic Container Registry ECR (Amazon) esteja habilitado. A outra regra envia notificações para uma fila do Amazon Simple Queue Service (AmazonSQS) após um envio bem-sucedido de imagens para o ECR repositório da Amazon, para ajudá-lo a usar as imagens de contêiner mais recentes.
Observação: o Amazon Linux 2 está chegando ao fim do suporte. Para obter mais informações, consulte o Amazon Linux 2 FAQs
Pré-requisitos e limitações
Pré-requisitos
Uma AWSconta na
qual você pode implantar a infraestrutura. AWSInterface de linha de comando (AWSCLI) instalada para definir suas AWS credenciais para implantação local.
O Terraform foi baixado
e configurado seguindo as instruções na documentação do Terraform. Git
(se você estiver provisionando a partir de uma máquina local). Uma função na AWS conta que você pode usar para criar AWS recursos.
Todas as variáveis definidas no arquivo.tfvars.
Ou você pode definir todas as variáveis ao aplicar a configuração do Terraform.
Limitações
Essa solução cria uma infraestrutura da Amazon Virtual Private Cloud (AmazonVPC) que inclui um NATgateway e um gateway de internet para conectividade com a internet a partir de sua sub-rede privada. Você não pode usar VPCendpoints, porque o processo de bootstrap do Orquestrador de AWS Tarefas e do Executor (AWSTOE
) AWS CLI instala a versão 2 da Internet.
Versões do produto
Amazon Linux 2
AWSCLIversão 1.1 ou posterior
Arquitetura
Pilha de tecnologias de destino
Esse padrão cria 43 recursos, incluindo:
Dois buckets do Amazon Simple Storage Service (Amazon S3): um para os arquivos de componentes do pipeline e outro para acesso ao servidor e registros de fluxo da Amazon VPC
Uma nuvem privada virtual (VPC) que contém uma sub-rede pública, uma sub-rede privada, tabelas de rotas, um NAT gateway e um gateway de internet
Um pipeline, receita e componentes do EC2 Image Builder
Uma imagem do contêiner
Uma AWS chave do Key Management Service (AWSKMS) para criptografia de imagens
Uma fila do SQS
Três funções: uma para executar o pipeline do EC2 Image Builder, um perfil de instância para o EC2 Image Builder e outra para EventBridge regras
Duas EventBridge regras
Estrutura do módulo Terraform
Para obter o código-fonte, consulte o GitHub repositório 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
Detalhes do módulo
components.tf
contém um recurso de upload do Amazon S3 para carregar o conteúdo do/files
diretório. Você também pode adicionar YAML arquivos de componentes personalizados de forma modular aqui./files
contém os.yml
arquivos que definem os componentes usados emcomponents.tf
.image.tf
contém as definições do sistema operacional da imagem base. É aqui que você pode modificar as definições de um pipeline de imagem base diferente.infr-config.tf
edist-config.tf
contêm os recursos para a AWS infraestrutura mínima necessária para ativar e distribuir a imagem.infra-network-config.tf
contém a VPC infraestrutura mínima na qual implantar a imagem do contêiner.hardening-pipeline.tfvars
contém as variáveis do Terraform a serem usadas no momento da aplicação.pipeline.tf
cria e gerencia um pipeline do EC2 Image Builder no Terraform.recipes.tf
é onde você pode especificar diferentes misturas de componentes para criar fórmulas em contêineres.roles.tf
contém as definições da política AWS Identity and Access Management (IAM) para o perfil de instância do Amazon Elastic Compute Cloud (AmazonEC2) e a função de implantação do pipeline.trigger-build.tf
contém as EventBridge regras e os recursos da SQS fila.
Arquitetura de destino
![Arquitetura e fluxo de trabalho para criar um pipeline para imagens de contêineres reforçadas](images/pattern-img/4b16bdfa-4f34-41e9-a69a-d023253c8585/images/23443eca-132f-46ac-98bd-32a9e9359a77.png)
O diagrama a seguir mostra o fluxo de trabalho:
EC2O Image Builder cria uma imagem de contêiner usando a receita definida, que instala atualizações do sistema operacional e aplica o RHEL Medium STIG à imagem base do Amazon Linux 2.
A imagem protegida é publicada em um ECR registro privado da Amazon, e uma EventBridge regra envia uma mensagem para uma SQS fila quando a imagem é publicada com sucesso.
Se o Amazon Inspector estiver configurado para escaneamento aprimorado, ele escaneia o registro da Amazon. ECR
Se o Amazon Inspector gerar uma descoberta de severidade crítica ou alta para a imagem, uma EventBridge regra acionará o pipeline do Image Builder para ser executado novamente e publicar uma EC2 imagem recém-reforçada.
Automação e escala
Esse padrão descreve como provisionar a infraestrutura e criar o pipeline em seu computador. No entanto, ele se destina a ser usado em grande escala. Em vez de implantar os módulos do Terraform localmente, você pode usá-los em um ambiente com várias contas, como um ambiente AWSControl Tower com Account Factory for
Terraform. Nesse caso, você deve usar um bucket S3 de estado de backend para gerenciar arquivos de estado do Terraform em vez de gerenciar o estado de configuração localmente. Para uso escalonado, implante a solução em uma conta central, como uma conta de Serviços Comuns ou Serviços Comuns, a partir de um modelo de conta Control Tower ou landing zone, e conceda às contas dos consumidores permissão para acessar o ECR repositório e AWS KMS a chave da Amazon. Para obter mais informações sobre a configuração, consulte o artigo do re:POST Como posso permitir que uma conta secundária envie ou extraia imagens no meu repositório de imagens da Amazon ECR
? Por exemplo, em uma máquina de venda automática de contas ou Account Factory for Terraform, adicione permissões a cada linha de base da conta ou linha de base de personalização da conta para fornecer acesso ao repositório e à chave de criptografia da AmazonECR. Depois que o pipeline de imagem do contêiner for implantado, você poderá modificá-lo usando os recursos do EC2 Image Builder, como componentes, que ajudam a empacotar mais componentes na compilação do Docker.
A AWS KMS chave usada para criptografar a imagem do contêiner deve ser compartilhada entre as contas nas quais a imagem deve ser usada.
Você pode adicionar suporte para outras imagens duplicando todo o módulo Terraform e modificando os seguintes atributos:
recipes.tf
Modifique
parent_image = "amazonlinux:latest"
para outro tipo de imagem.Modifique
repository_name
para apontar para um ECR repositório existente da Amazon. Isso cria outro pipeline que implanta um tipo diferente de imagem principal em seu ECR repositório Amazon existente.
Ferramentas
Ferramentas
Terraform (provisionamento de IaC)
Git (se estiver provisionando localmente)
AWSCLIversão 1 ou versão 2 (se estiver provisionando localmente)
Código
O código desse padrão está no GitHub repositório Terraform EC2 Image Builder Container Hardening
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure as credenciais locais. | Configure suas credenciais AWS temporárias.
| AWS DevOps |
Clonar o repositório. |
| AWS DevOps |
Atualizar variáveis. | Atualizar as variáveis no
Aqui está uma descrição de cada variável:
| AWS DevOps |
Inicializar o Terraform. | Depois de atualizar os valores das variáveis, você pode inicializar o diretório de configuração do Terraform. A inicialização de um diretório de configuração baixa e instala o AWS provedor, que é definido na configuração.
Você verá uma mensagem dizendo que o Terraform foi inicializado com sucesso e identifica a versão do provedor que foi instalada. | AWS DevOps |
Implementar a infraestrutura e criar uma imagem de contêiner. | Usar o comando a seguir para inicializar, validar e aplicar os módulos do Terraform ao ambiente usando as variáveis definidas em seu arquivo:
| AWS DevOps |
Personalizar o contêiner. | Você pode criar uma nova versão de uma receita de contêiner depois que o EC2 Image Builder implantar o pipeline e a receita inicial. Você pode adicionar qualquer um dos mais de 31 componentes disponíveis no EC2 Image Builder para personalizar a construção do contêiner. Para obter mais informações, consulte a seção Componentes de Criar uma nova versão de uma receita de contêiner na documentação do EC2 Image Builder. | AWSadministrador |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Valide o provisionamento AWS da infraestrutura. | Depois de concluir com êxito seu primeiro
| AWS DevOps |
Valide os recursos de AWS infraestrutura individuais. | Para validar os recursos individuais que foram implantados, se você estiver provisionando localmente, execute o seguinte comando:
Este comando retorna uma lista de 43 recursos. | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Remover a infraestrutura e a imagem do contêiner. | Ao terminar de trabalhar com sua configuração do Terraform, você pode executar o seguinte comando para remover recursos:
| AWS DevOps |
Solução de problemas
Problema | Solução |
---|---|
Erro ao validar as credenciais do provedor | Ao executar o Terraform
Esse erro é causado pela expiração do token de segurança das credenciais usadas na configuração da sua máquina local. Para resolver o erro, consulte Definir e visualizar as configurações na AWS CLI documentação. |
Recursos relacionados
Pipeline de endurecimento de contêineres do Terraform EC2 Image Builder (repositório
) GitHub AWSControl Tower Account Factory for Terraform
(publicação AWS do blog) Bucket S3 de estado de backend (documentação
do Terraform) Instalando ou atualizando a versão mais recente do AWS CLI (AWSCLIdocumentação)