Implantação da Imagem Docker do Wallarm no GCP¶
Este guia rápido fornece as etapas para implantar a imagem Docker do nó Wallarm baseado em NGINX na Google Cloud Platform usando o componente Google Compute Engine (GCE).
Limitações das instruções
Estas instruções não cobrem a configuração do balanceamento de carga e do auto escalonamento de nós. Se você está configurando esses componentes por conta própria, recomendamos que você leia a documentação do GCP apropriada.
Casos de uso¶
Dentre todas as opções de implantação do Wallarm suportadas, é recomendada a implantação do Wallarm no Google Compute Engine (GCE) usando a imagem Docker nestes casos de uso:
-
Se suas aplicações utilizam uma arquitetura de microserviços e já estão contêinerizadas e operacionais no GCE.
-
Se você precisa de um controle mais detalhado sobre cada contêiner, a imagem Docker se destaca. Ela proporciona um nível maior de isolamento de recursos do que geralmente é possível com implantações tradicionais baseadas em VM.
Requisitos¶
-
Conta GCP ativa
-
API do Compute Engine habilitada
-
Acesso à conta com a função Administrador e autenticação de dois fatores desativada no Console Wallarm para o Cloud dos EUA ou Cloud da UE
Opções para a configuração do container Docker do nó Wallarm¶
Os parâmetros de configuração do nó de filtragem devem ser passados para o contêiner Docker implantado de uma das seguintes maneiras:
-
Nas variáveis do ambiente. Esta opção permite a configuração de apenas os parâmetros básicos do nó de filtragem. A maioria das diretivas não pode ser configurada através de variáveis de ambiente.
-
No arquivo de configuração montado. Esta opção permite a configuração completa do nó de filtragem através de qualquer diretiva. Com este método de configuração, as variáveis de ambiente com as configurações de conexão do nó de filtragem e do Wallarm Cloud também são passadas para o contêiner.
Implantando o container Docker do nó Wallarm configurado por meio de variáveis de ambiente¶
Para implantar o nó de filtragem do Wallarm em um container, configurado apenas por meio de variáveis de ambiente, você pode usar o Console GCP ou gcloud CLI. Nestas instruções, o gcloud CLI é usado.
-
Obtenha o token Wallarm do tipo apropriado:
-
Defina a variável de ambiente local com o token do nó Wallarm a ser usado para conectar a instância ao Cloud Wallarm:
-
Crie a instância com o container Docker em execução usando o comando
gcloud compute instances create-with-container:gcloud compute instances create-with-container <INSTANCE_NAME> \ --zone <DEPLOYMENT_ZONE> \ --tags http-server \ --container-env WALLARM_API_TOKEN=${WALLARM_API_TOKEN} \ --container-env NGINX_BACKEND=<HOST_TO_PROTECT_WITH_WALLARM> \ --container-env WALLARM_API_HOST=us1.api.wallarm.com \ --container-image registry-1.docker.io/wallarm/node:4.8.0-1gcloud compute instances create-with-container <INSTANCE_NAME> \ --zone <DEPLOYMENT_ZONE> \ --tags http-server \ --container-env WALLARM_API_TOKEN=${WALLARM_API_TOKEN} \ --container-env NGINX_BACKEND=<HOST_TO_PROTECT_WITH_WALLARM> \ --container-env WALLARM_API_HOST=us1.api.wallarm.com \ --container-image registry-1.docker.io/wallarm/node:4.8.0-1<INSTANCE_NAME>: nome da instância, por exemplo:wallarm-node.--zone: zona que hospedará a instância.--tags: tags da instância. Tags são usadas para configurar a disponibilidade da instância para outros recursos. No presente caso, a taghttp-serverabrindo a porta 80 é atribuída à instância.--container-image: link para a imagem Docker do nó de filtragem.-
--container-env: variáveis de ambiente com a configuração do nó de filtragem (variáveis disponíveis estão listadas na tabela abaixo). Por favor, observe que não é recomendado passar o valor deWALLARM_API_TOKENexplicitamente.Variável de ambiente Descrição Obrigatório WALLARM_API_TOKENToken de nó ou API do Wallarm. Sim NGINX_BACKENDDomínio ou endereço IP do recurso a ser protegido com a solução Wallarm. Sim WALLARM_API_HOSTServidor de API Wallarm: us1.api.wallarm.compara a Nuvem dos EUAapi.wallarm.compara a Nuvem da UE
api.wallarm.com.Não WALLARM_MODEModo de nó: blockpara bloquear solicitações maliciosassafe_blockingpara bloquear apenas aquelas solicitações maliciosas originadas de endereços IP em lista cinzamonitoringpara analisar, mas não bloquear solicitaçõesoffpara desativar a análise e processamento de tráfego
monitoring.
Descrição detalhada dos modos de filtragem →Não WALLARM_APPLICATIONIdentificador único do aplicativo protegido a ser usado na Nuvem Wallarm. O valor pode ser um número inteiro positivo, exceto 0.
O valor padrão (se a variável não for passada para o contêiner) é-1, o que indica o aplicativo padrão exibido na Console Wallarm → Configurações → Aplicativo.
Mais detalhes sobre a configuração de aplicativos →Não TARANTOOL_MEMORY_GBQuantidade de memória alocada para o Tarantool. O valor pode ser um número inteiro ou um float (um ponto .é um separador decimal). Por padrão: 0.2 gigabytes.Não NGINX_PORTDefine uma porta que o NGINX usará dentro do contêiner Docker.
A partir da imagem Docker4.0.2-1, o serviçowallarm-statusé executado automaticamente na mesma porta que o NGINX.
O valor padrão (se a variável não for passada para o contêiner) é80.
A sintaxe éNGINX_PORT='443'.Não DISABLE_IPV6A variável com qualquer valor que não seja um vazio exclui a linha listen [::]:80 default_server ipv6only=on;do arquivo de configuração NGINX, o que impedirá o NGINX de processar conexões IPv6.
Se a variável não for especificada explicitamente ou tiver um valor vazio"", o NGINX processará conexões IPv6 e IPv4.Não WALLARM_LABELSDisponível a partir do nó 4.6. Funciona apenas se
WALLARM_API_TOKENestiver configurado para token de API com o papelDeploy. Define a etiquetagrouppara a agrupamento de instâncias de nó, por exemplo:WALLARM_LABELS="group=<GRUPO>"...colocará a instância do nó no grupo de instâncias
<GRUPO>(existente, ou, se não existir, será criado).Sim (para tokens de API) -
Todos os parâmetros do comando
gcloud compute instances create-with-containersão descritos na documentação do GCP.
-
Abra o Console GCP → Compute Engine → Instâncias VM e garanta que a instância seja exibida na lista.
Implantando o container Docker do nó Wallarm configurado pelo arquivo montado¶
Para implantar o nó de filtragem do Wallarm em um container, configurado por meio de variáveis de ambiente e arquivo montado, você deve criar a instância, localizar o arquivo de configuração do nó de filtragem no sistema de arquivos desta instância e executar o container Docker nesta instância. Você pode executar estas etapas via Console GCP ou gcloud CLI. Nestas instruções, o gcloud CLI é usado.
-
Obtenha o token Wallarm do tipo apropriado:
-
Crie a instância baseada em qualquer imagem de sistema operacional do registro do Compute Engine usando o comando
gcloud compute instances create:gcloud compute instances create <INSTANCE_NAME> \ --image <PUBLIC_IMAGE_NAME> \ --zone <DEPLOYMENT_ZONE> \ --tags http-server<INSTANCE_NAME>: nome da instância.--image: nome da imagem do sistema operacional do registro do Compute Engine. A instância criada será baseada nesta imagem e será usada para executar o container Docker posteriormente. Se este parâmetro for omitido, a instância será baseada na imagem do Debian 10.--zone: zona que hospedará a instância.--tags: tags da instância. Tags são usadas para configurar a disponibilidade da instância para outros recursos. No presente caso, a taghttp-serverabrindo a porta 80 é atribuída à instância.- Todos os parâmetros do comando
gcloud compute instances createsão descritos na documentação do GCP.
-
Abra o Console GCP → Compute Engine → Instâncias VM e garanta que a instância seja exibida na lista e esteja no status RUNNING.
-
Conecte-se à instância via SSH seguindo as instruções do GCP.
-
Instale os pacotes do Docker na instância seguindo as instruções para um sistema operacional adequado.
-
Defina a variável de ambiente local com o token do nó Wallarm a ser usado para conectar a instância ao Cloud Wallarm:
-
Na instância, crie o diretório com o arquivo
defaultcontendo a configuração do nó de filtragem (por exemplo, o diretório pode ser nomeado comoconfigs). Um exemplo do arquivo com configurações mínimas:server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; #listen 443 ssl; server_name localhost; #ssl_certificate cert.pem; #ssl_certificate_key cert.key; root /usr/share/nginx/html; index index.html index.htm; wallarm_mode monitoring; # wallarm_application 1; location / { proxy_pass http://example.com; include proxy_params; } }Conjunto de diretivas do nó de filtragem que podem ser especificadas no arquivo de configuração →
-
Execute o container Docker do nó Wallarm usando o comando
docker runcom variáveis de ambiente passadas e arquivo de configuração montado:<INSTANCE_PATH_TO_CONFIG>: caminho para o arquivo de configuração criado na etapa anterior. Por exemplo,configs.-
<DIRECTORY_FOR_MOUNTING>: diretório do container para montar o arquivo de configuração. Os arquivos de configuração podem ser montados nos seguintes diretórios do container usados pelo NGINX:/etc/nginx/conf.d— configurações comuns/etc/nginx/sites-enabled— configurações do host virtual/var/www/html— arquivos estáticos
As diretivas do nó de filtragem devem ser descritas no arquivo
/etc/nginx/sites-enabled/default. -
-p: porta que o nó de filtragem escuta. O valor deve ser o mesmo da porta da instância. -
-e: variáveis de ambiente com a configuração do nó de filtragem (variáveis disponíveis estão listadas na tabela abaixo). Note que não é recomendado passar o valor deWALLARM_API_TOKENexplicitamente.Variável de ambiente Descrição Obrigatório WALLARM_API_TOKENToken de nó Wallarm ou API. Sim WALLARM_API_HOSTServidor API Wallarm: us1.api.wallarm.compara a Nuvem dos EUAapi.wallarm.compara a Nuvem da UE
api.wallarm.com.Não WALLARM_LABELSDisponível a partir do nó 4.6. Funciona apenas se
WALLARM_API_TOKENestiver configurado para token da API com a funçãoDeploy. Define a etiquetagrouppara agrupamento de instâncias de nó, por exemplo:WALLARM_LABELS="group=<GROUP>"...colocará a instância de nó no grupo de instâncias
<GROUP>(existente, ou, se não existir, será criado).Sim (para tokens de API)
Teste da operação do nó de filtragem¶
-
Abra o Console GCP → Compute Engine → Instâncias VM e copie o endereço IP da instância da coluna External IP.
Se o endereço IP estiver vazio, verifique se a instância está no status RUNNING.
-
Envie a solicitação com o teste Path Traversal até o endereço copiado:
-
Abra o Console Wallarm → Events no Cloud dos EUA ou Cloud da UE e certifique-se de que o ataque está exibido na lista.

Detalhes de erros que ocorreram durante a implantação do container são exibidos no menu de instância View logs. Se a instância estiver indisponível, verifique se os parâmetros do nó de filtragem necessários com os valores corretos são passados para o container.
