Implantando o Wallarm na AWS usando Terraform¶
O Wallarm fornece o módulo do Terraform para implantar o nó na AWS a partir do ambiente compatível com o Terraform. Use estas instruções para explorar o módulo e tentar os exemplos de implantação fornecidos.
Ao implementar o módulo Wallarm Terraform, fornecemos a solução que permite duas opções principais de implantação do Wallarm: no modo inline (que é proxy neste método de implantação) e as soluções de segurança Out-of-band (espelho). A opção de implantação é facilmente controlada pela variável preset
do módulo Wallarm.
Casos de uso¶
Entre todas as opções suportadas de implantação do Wallarm, o módulo Terraform é recomendado para a implantação do Wallarm nestes casos de uso:
-
Sua infraestrutura existente reside na AWS.
-
Você aproveita a prática de Infraestrutura como Código (IaC). O módulo Terraform do Wallarm permite o gerenciamento automatizado e provisionamento do nó Wallarm na AWS, aumentando a eficiência e consistência.
Requisitos¶
-
Terraform 1.0.5 ou superior instalado localmente
-
Acesso à conta com a função de Administrador role no Console Wallarm na Nuvem dos EUA ou da UE Cloud
-
Acesso a
https://us1.api.wallarm.com
se estiver trabalhando com a nuvem Wallarm US ou ahttps://api.wallarm.com
se estiver trabalhando com a nuvem Wallarm EU. Verifique se o acesso não está bloqueado por um firewall
Este tópico não inclui instruções para criar todos os recursos da AWS necessários para implantar o Wallarm, como um cluster VPC. Para detalhes, consulte o guia Terraform relevante.
Como usar o Módulo Terraform AWS Wallarm?¶
Para implantar o Wallarm para produção usando o módulo Terraform da AWS:
-
Inscreva-se para o Console Wallarm na Cloud EUA or Cloud EU.
-
Abra o Console Wallarm → Nós e crie o nó do tipo Wallarm node.
-
Copie o token de nó gerado.
-
Adicione o código do módulo
wallarm
à sua configuração Terraform:
module "wallarm" {
source = "wallarm/wallarm/aws"
instance_type = "..."
vpc_id = "..."
preset = "proxy"
proxy_pass = "https://..."
token = "..."
...
}
- Definir valores de variáveis na configuração do módulo
wallarm
:
Variável | Descrição | Tipo | Obrigatório? |
---|---|---|---|
instance_type | Tipo de instância Amazon EC2 a ser usada para a implantação do Wallarm, por exemplo: t3.small . | string | Sim |
vpc_id | ID do Virtual Private Cloud da AWS para implantar a instância EC2 do Wallarm. | string | Sim |
token | Token de nó Wallarm copiado da interface do usuário do Wallarm Console. Usando um token para várias instalações Você pode usar um token em várias instalações, independentemente da plataforma selecionada. Ele permite o agrupamento lógico de instâncias de nó na interface do usuário do Console Wallarm. Exemplo: você implanta vários nós Wallarm em um ambiente de desenvolvimento, cada nó está em sua própria máquina de um determinado desenvolvedor. | string | Sim |
Variáveis específicas do Wallarm | |||
host | Servidor de API Wallarm. Valores possíveis:
api.wallarm.com . | string | Não |
upstream | A versão do nó Wallarm a ser implantada. A versão mínima suportada é 4.0 .Por padrão, 4.6 . | string | Não |
preset | Esquema de implantação do Wallarm. Valores possíveis:
proxy . | string | Não |
proxy_pass | Protocolo do servidor proxy e endereço. O nó Wallarm processará as solicitações enviadas para o endereço especificado e as proxy para as legítimas. Como protocolo, 'http' ou 'https' podem ser especificados. O endereço pode ser especificado como um nome de domínio ou endereço IP, e uma porta opcional. | string | Sim, if preset is proxy |
mode | Modo de filtração de tráfego. Valores possíveis: off , monitoring , safe_blocking , block .Por padrão, monitoring . | string | Não |
libdetection | Esteja para usar a biblioteca libdetection durante a análise de tráfego. Por padrão, true . | bool | Não |
global_snippet | Configuração personalizada a ser adicionada à configuração global do NGINX. Você pode colocar o arquivo com a configuração no diretório de código do Terraform e especificar o caminho para este arquivo nesta variável. Você encontrará o exemplo de configuração da variável no exemplo de implantação da solução proxy avançada. | string | Não |
http_snippet | Configuração personalizada a ser adicionada ao bloco de configuração http do NGINX. Você pode colocar o arquivo com a configuração no diretório de código do Terraform e especificar o caminho para este arquivo nesta variável.Você encontrará o exemplo de configuração da variável no exemplo de implantação da solução proxy avançada. | string | Não |
server_snippet | Configuração personalizada a ser adicionada ao bloco de configuração server do NGINX. Você pode colocar o arquivo com a configuração no diretório de código do Terraform e especificar o caminho para este arquivo nesta variável.Você encontrará o exemplo de configuração da variável no exemplo de implantação da solução proxy avançada. | string | Não |
post_script | Script personalizado a ser executado após o script de inicialização do nó Wallarm (cloud-init.py ). Você pode colocar o arquivo com qualquer script no diretório de código do Terraform e especificar o caminho para este arquivo nesta variável.Você encontrará o exemplo de configuração da variável no exemplo de implantação da solução proxy avançada. | string | Não |
Configuração de implantação da AWS | |||
app_name | Prefixo para os nomes dos recursos da AWS que o módulo Wallarm irá criar. Por padrão, wallarm . | string | Não |
app_name_no_template | Se usar letras maiúsculas, números e caracteres especiais nos nomes dos recursos da AWS que o módulo Wallarm irá criar. Se false , os nomes dos recursos incluirão apenas letras minúsculas.Por padrão, false . | bool | Não |
lb_subnet_ids | Lista de IDs de sub-redes do Virtual Private Cloud da AWS para implantar um Balanceador de Carga de Aplicativos. O valor recomendado são sub-redes públicas associadas a uma tabela de roteamento que tem uma rota para um gateway da internet. | list(string) | Não |
instance_subnet_ids | Lista de IDs de sub-redes do Virtual Private Cloud da AWS para implantar instâncias EC2 Wallarm. O valor recomendado são sub-redes privadas configuradas para conexões somente de saída. | list(string) | Não |
lb_enabled | Se criar um Balanceador de Carga de Aplicativos AWS. Um grupo de destino será criado com qualquer valor passado nesta variável, a menos que um grupo de destino personalizado seja especificado na variável custom_target_group .Por padrão, true . | bool | Não |
lb_internal | Se fazer um Balanceador de Carga de Aplicativos um balanceador de carga interno. Por padrão, um ALB tem o tipo voltado para a internet. Se usar a abordagem assíncrona para lidar com as conexões, o valor recomendado é true .Por padrão, false . | bool | Não |
lb_deletion_protection | Se habilitar proteção para um Balanceador de Carga de Aplicações ser impossibilitado de ser excluído acidentalmente. Para implantações de produção, o valor recomendado é true .Por padrão, true . | bool | Não |
lb_ssl_enabled | Se negociar conexões SSL entre um cliente e um Balanceador de Carga de Aplicativos. Se true , as variáveis lb_ssl_policy e lb_certificate_arn são obrigatórias. Recomendado para implantações de produção.Por padrão, false . | bool | Não |
lb_ssl_policy | Política de segurança para um Balanceador de Carga de Aplicativos. | string | Sim, se lb_ssl_enabled for true |
lb_certificate_arn | Nome do Recurso da Amazon (ARN) de um certificado do Gerenciador de Certificados AWS (ACM). | string | Sim, se lb_ssl_enabled for true |
custom_target_group | Nome do grupo de destino existente para anexar ao grupo Auto Scaling criado. Por padrão, um novo grupo de destino será criado e anexado. Se o valor for não padrão, a criação da ALB AWS será desabilitada. | string | Não |
inbound_allowed_ip_ranges | Lista de IPs e redes de origem para permitir conexões de entrada para instâncias Wallarm. Lembre-se de que a AWS mascara o tráfego do balanceador de carga, mesmo que seja originado de sub-redes públicas. Por padrão:
| list(string) | Não |
outbound_allowed_ip_ranges | Lista de IPs e redes de origem para permitir conexões externas da instância Wallarm. Por padrão: "0.0.0.0/0" . | list(string) | Não |
extra_ports | Lista de portas extras de rede interna para permitir conexões de entrada para instâncias Wallarm. A configuração será aplicada a um grupo de segurança. | list(number) | Não |
extra_public_ports | Lista de portas extras de rede pública para permitir conexões de entrada para instâncias Wallarm. | list(number) | Não |
extra_policies | Políticas IAM AWS a serem associadas à pilha Wallarm. Pode ser útil usar junto com a variável post_script executando o script que solicita dados do Amazon S3. | list(string) | Não |
source_ranges | Lista de IPs e redes de origem para permitir tráfego do Balanceador de Carga de Aplicativos AWS. Por padrão, "0.0.0.0/0" . | list(string) | Não |
https_redirect_code | Código para redirecionamento de solicitação HTTP para HTTPS. Valores possíveis:
0 . | number | Não |
asg_enabled | Se criar um grupo Auto Scaling AWS. Por padrão, true | bool | Não |
min_size | Número mínimo de instâncias no grupo Auto Scaling AWS criado. Por padrão, 1 . | number | Não |
max_size | Número máximo de instâncias no grupo Auto Scaling AWS criado. Por padrão, 3 . | number | Não |
desired_capacity | Número inicial de instâncias no grupo Auto Scaling AWS criado. Deve ser maior ou igual a min_size e menor ou igual a max_size .Por padrão, 1 . | number | Não |
autoscaling_enabled | Se habilitar Auto Scaling da Amazon EC2 para o cluster Wallarm. Por padrão, false . | bool | Não |
autoscaling_cpu_target | Porcentagem média de utilização da CPU para manter o grupo Auto Scaling AWS. Por padrão, 70.0 . | string | Não |
ami_id | ID da Imagem de Máquina Amazon a ser usada para a implantação da instância Wallarm. Por padrão (string vazia), a imagem mais recente do upstream é usada. Você é bem-vindo para criar o AMI personalizado baseado no nó Wallarm. | string | Não |
key_name | Nome do par de chaves AWS a ser usado para se conectar às instâncias Wallarm via SSH. Por padrão, a conexão SSH está desativada. | string | Não |
tags | Tags para os recursos AWS que o módulo Wallarm vai criar. | map(string) | Não |
Experimentando o Módulo Terraform Wallarm com exemplos¶
Preparamos exemplos de diferentes maneiras de usar o módulo Wallarm, para que você possa experimentá-lo antes de implantá-lo na produção:
Mais informações sobre Wallarm e Terraform¶
O Terraform suporta uma série de integrações (provedores) e configurações prontas para uso (módulos) disponíveis para os usuários através do registro público registry, populado por vários fornecedores.
Para este registro, o Wallarm publicou:
-
O módulo Wallarm para implantar o nó na AWS a partir do ambiente compatível com Terraform. Descrito neste artigo.
-
O provedor Wallarm para gerenciamento do Wallarm via Terraform.
Estes dois são elementos independentes usados para diferentes propósitos, não exigem um ao outro.