Pular para conteúdo

Especificação do Script cloud-init da Wallarm

Ao seguir a abordagem de Infraestrutura como Código (IaC), você pode precisar usar o script cloud-init para implantar o nó Wallarm na nuvem pública. A partir do lançamento 4.0, a Wallarm distribui suas imagens na nuvem com o script cloud-init.py pronto para uso que é descrito neste tópico.

Visão geral do script cloud-init da Wallarm

O script cloud-init da Wallarm está disponível no caminho /usr/share/wallarm-common/cloud-init.py na imagem na nuvem da Wallarm na AWS. Este script realiza um inicial e uma configuração de instância avançada com as seguintes principais etapas:

  • Executa o nó Wallarm criado anteriormente na Nuvem Wallarm executando o script register-node da Wallarm

  • Configura a instância de acordo com a abordagem de proxy ou espelho especificada na variável preset (se implantar o Wallarm usando o módulo Terraform)

  • Refina a instância de acordo com os snippets do NGINX

  • Refina o nó da Wallarm

  • Executa verificações de saúde para o Load Balancer

O script cloud-init é executado apenas uma vez na inicialização da instância, a reinicialização da instância não força seu lançamento. Você encontrará mais detalhes na documentação da AWS sobre o conceito de script.

Executando o script cloud-init da Wallarm

Você pode executar o script cloud-init da Wallarm da seguinte maneira:

  • Inicie uma instância na nuvem e use seus metadados para descrever a execução do script cloud-init.py

  • Crie um modelo de lançamento de instância com o script cloud-init.py e aplique com base nele um grupo de dimensionamento automático

Exemplo da execução do script para executar o nó Wallarm como um servidor proxy para httpbin.org:

#!/bin/bash
set -e

### Impedir a execução do NGINX sem
### Wallarm habilitado, não é recomendado
### verificar a saúde antes de tudo estar pronto
###
systemctl stop nginx.service

/usr/share/wallarm-common/cloud-init.py \
    -t xxxxx-base64-registration-token-from-wallarm-cloud-xxxxx \
    -p proxy \
    -m monitoring \
    --proxy-pass https://httpbin.org

systemctl restart nginx.service

echo  Wallarm configurado com sucesso!

Para atender à abordagem Infraestrutura como Código (IaC), implementamos o módulo Terraform para AWS que pode ser um exemplo ilustrativo do uso do script cloud-init da Wallarm.

Dados de ajuda do script cloud-init da Wallarm

usage: /usr/share/wallarm-common/cloud-init.py [-h] -t TOKEN [-H HOST] [--skip-register] [-p {proxy,mirror,custom}]
                                                      [-m {off,monitoring,safe_blocking,block}] [--proxy-pass PROXY_PASS]
                                                      [--libdetection] [--global-snippet GLOBAL_SNIPPET_FILE]
                                                      [--http-snippet HTTP_SNIPPET_FILE] [--server-snippet SERVER_SNIPPET_FILE]
                                                      [-l LOG_LEVEL]

Executa o nó Wallarm com a configuração especificada no cluster PaaS. https://docs.wallarm.com/waf-installation/cloud-
platforms/cloud-init/

argumentos opcionais:
  -h, --help            mostrar esta mensagem de ajuda e sair
  -t TOKEN, --token TOKEN
                        Token do nó Wallarm copiado da interface de usuário do Console Wallarm.
  -H HOST, --host HOST  Servidor de API Wallarm específico para a nuvem Wallarm em uso: https://docs.wallarm.com/about-wallarm-
                        waf/overview/#cloud. Por padrão, api.wallarm.com.
  --skip-register       Pula a etapa de execução local do nó criado na nuvem Wallarm (pula a execução do script register-node).
                        Esta etapa é crucial para o sucesso da implantação do nó.
  -p {proxy,mirror,custom}, --preset {proxy,mirror,custom}
                        Preset do nó Wallarm: "proxy" para o nó operar como um servidor proxy, "mirror" para o nó processar
                        tráfego espelhado, "custom" para configuração definida apenas via snippets NGINX.
  -m {off,monitoring,safe_blocking,block}, --mode {off,monitoring,safe_blocking,block}
                        Modo de filtragem de tráfego: https://docs.wallarm.com/admin-en/configure-parameters-en/#wallarm_mode.
  --proxy-pass PROXY_PASS
                        Protocolo e endereço do servidor proxy. Necessário se "proxy" for especificado como um preset.
  --libdetection        Se deve usar a biblioteca libdetection durante a análise de tráfego: https://docs.wallarm.com/about-wallarm-
                        waf/protecting-against-attacks.md#library-libdetection.
  --global-snippet GLOBAL_SNIPPET_FILE
                        Configuração personalizada para ser adicionada à configuração global do NGINX.
  --http-snippet HTTP_SNIPPET_FILE
                        Configuração personalizada para ser adicionada ao bloco de configuração "http" do NGINX.
  --server-snippet SERVER_SNIPPET_FILE
                        Configuração personalizada para ser adicionada ao bloco de configuração "server" do NGINX.
  -l LOG_LEVEL, --log LOG_LEVEL
                        Nível de verbosidade.

Este script abrange algumas das configurações mais populares para AWS, GCP, Azure e outros PaaS. Se você precisa de uma configuração mais poderosa,
você está convidado a revisar a documentação pública do nó Wallarm: https://docs.wallarm.com.