Implante as automações de segurança para a solução AWS WAF usando o Terraform - Recomendações da AWS

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á.

Implante as automações de segurança para a solução AWS WAF usando o Terraform

Criado pelo Dr. Rahul Sharad Gaikwad (AWS) e Tamilselvan P (AWS)

Repositório de código: aws-waf-automation-terraform -samples

Ambiente: PoC ou piloto

Tecnologias: segurança, identidade, conformidade; infraestrutura; entrega de conteúdo; DevOps

Workload: todas as outras workloads

Serviços da AWS: AWS WAF

Resumo

O AWS WAF é um firewall de aplicativos web que ajuda a proteger aplicativos contra explorações comuns usando regras personalizáveis, que você define e implanta nas listas de controle de acesso (ACLs) à web. Configurar as regras do AWS WAF pode ser um desafio, especialmente para organizações que não têm equipes de segurança dedicadas. Para simplificar esse processo, a Amazon Web Services (AWS) oferece a solução Security Automations for AWS WAF, que implanta automaticamente uma única ACL da web com um conjunto de regras do AWS WAF que filtra ataques baseados na web. Durante a implantação do Terraform, você pode especificar quais atributos de proteção incluir. Depois de implantar essa solução, o AWS WAF inspeciona as solicitações da web para CloudFront distribuições existentes da Amazon ou Application Load Balancers e bloqueia todas as solicitações que não correspondam às regras.

A solução Security Automations for AWS WAF pode ser implantada usando a CloudFormation AWS de acordo com as instruções no Guia de implementação de automações de segurança para AWS WAF. Esse padrão fornece uma opção alternativa de implantação para organizações que usam o HashiCorp Terraform como sua ferramenta preferida de infraestrutura como código (IaC) para provisionar e gerenciar sua infraestrutura em nuvem. Quando você implantar essa solução, o Terraform aplicará automaticamente as alterações na nuvem e implantará e configurará as configurações e os atributos de proteção do AWS WAF.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • A AWS Command Line Interface (AWS CLI) foi instalada e configurada com as permissões necessárias. Para obter mais informações, consulte Conceitos básicos (documentação da AWS CLI).

  • Terraform instalado e configurado. Para obter mais informações, consulte Instalar o Terraform (documentação do Terraform).

Versões do produto

  • AWS CLI versão 2.4.25 ou superior

  • Para a versão 1.1.9 ou superior

Arquitetura

Arquitetura de destino

Esse padrão implanta a solução Security Automations para AWS WAF. Para obter mais informações sobre a arquitetura de destino, consulte Visão geral da arquitetura no Guia de automações de segurança para AWS WAF. Para obter mais informações sobre as automações do AWS Lambda nesta implantação, o analisador de log do aplicativo, o analisador de log do AWS WAF, o analisador de listas de IP e o manipulador de acesso, consulte os detalhes do componente no Guia de implementação de automações de segurança para o AWS WAF.

Implantação do Terraform

Quando você executa o terraform apply, o Terraform faz o seguinte:

  1. O Terraform cria perfis do IAM e funções do Lambda com base nas entradas do arquivo testing.tfvars.

  2. O Terraform cria regras de ACL e conjuntos de IP do AWS WAF com base nas entradas do arquivo testing.tfvars.

  3. O Terraform cria os buckets do Amazon Simple Storage Service (Amazon S3), as regras da Amazon EventBridge , as tabelas de banco de dados do AWS Glue e os grupos de trabalho do Amazon Athena com base nas entradas do arquivo testing.tfvars.

  4. O Terraform implanta a CloudFormation pilha da AWS para provisionar os recursos personalizados.

  5. O Terraform cria os recursos do Amazon API Gateway com base nas entradas fornecidas do arquivo testing.tfvars.

Automação e escala

Você pode usar esse padrão para criar regras do AWS WAF para várias contas e regiões da AWS para implantar as automações de segurança para a solução AWS WAF em todo o seu ambiente de nuvem AWS.

Ferramentas

Serviços da AWS

  • A ‭AWS Command Line Interface (AWS CLI)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

  • O AWS WAF é um firewall para aplicativos web que ajuda a monitorar as solicitações HTTP e HTTPS que são encaminhadas a seus recursos protegidos de aplicativos web.

Outros serviços

  • Git é um sistema de controle de versão distribuído e de código aberto.

  • HashiCorp O Terraform é um aplicativo de interface de linha de comando que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.

Repositório de código

O código desse padrão está disponível no repositório GitHub AWS WAF Automation Using Terraform.

Práticas recomendadas

  • Coloque arquivos estáticos em buckets do S3 separados.

  • Evite variáveis de codificação permanente.

  • Limite o uso de scripts personalizados.

  • Adote uma convenção de nomenclatura.

Épicos

TarefaDescriçãoHabilidades necessárias

Instale o Git.

Siga as instruções em Conceitos básicos (site do Git) para instalar o Git na sua estação de trabalho local.

DevOps engenheiro

Clonar o repositório.

Em sua estação de trabalho local, insira o comando a seguir para clonar o repositório de código. Para copiar o comando completo, incluindo o URL do repositório, consulte a seção Informações adicionais desse padrão.

git clone <repo-URL>.git
DevOps engenheiro

Atualize as variáveis.

  1. Navegue até o diretório clonado inserindo o comando a seguir.

    cd terraform-aws-waf-automation
  2. Em qualquer editor de texto, abra o arquivo testing.tfvars.

  3. Atualize os valores das variáveis no arquivo testing.tfvars.

  4. Salve e feche o arquivo.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Inicialize a configuração do Terraform.

Digite o comando a seguir para inicializar seu diretório de trabalho que contém os arquivos de configuração do Terraform.

terraform init
DevOps engenheiro

Visualize o plano do Terraform.

Insira o comando da a seguir. O Terraform avalia os arquivos de configuração para determinar o estado de destino dos recursos declarados. Em seguida, ele compara o estado de destino com o estado atual e cria um plano.

terraform plan -var-file="testing.tfvars"
DevOps engenheiro

Verificar o plano.

Revise o plano e confirme se ele configura a arquitetura necessária em sua conta de destino da AWS.

DevOps engenheiro

Implante a solução.

  1. Insira o comando a seguir para aplicar o plano.

    terraform apply -var-file="testing.tfvars"
  2. Digite yes para confirmar. O Terraform cria, atualiza ou destrói a infraestrutura para atingir o estado de destino declarado nos arquivos de configuração. Para obter mais informações sobre a sequência, consulte Implantação do Terraform na seção Arquitetura desse padrão.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Verifique as alterações.

  1. No console do Terraform, verifique se as saídas correspondem aos resultados esperados.

  2. Faça login no Console de Gerenciamento da AWS.

  3. Verifique se as saídas no console do Terraform foram implantadas com sucesso na sua conta da AWS.

DevOps engenheiro

(Opcional) Limpe a infraestrutura.

Se deseja remover todos os recursos e as alterações de configuração feitas por essa solução, faça o seguinte:

  1. No console do Terraform, insira o seguinte comando:

    terraform destroy -var-file="testing.tfvars”
  2. Digite yes para confirmar.

DevOps engenheiro

Solução de problemas

ProblemaSolução

Erro do WAFV2 IPSet: WAFOptimisticLockException

Se você receber esse erro ao executar o comando terraform destroy, deverá excluir manualmente os conjuntos de IP. Para obter instruções, consulte Excluir um conjunto de IP (documentação do AWS WAF).

Recursos relacionados

Referências da AWS

Referências do Terraform

Mais informações

O comando a seguir clona o GitHub repositório desse padrão.

git clone https://github.com/aws-samples/aws-waf-automation-terraform-samples.git