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-1
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-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-server
abrindo 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_TOKEN
explicitamente.Variável de ambiente Descrição Obrigatório WALLARM_API_TOKEN
Token de nó ou API do Wallarm. Sim NGINX_BACKEND
Domínio ou endereço IP do recurso a ser protegido com a solução Wallarm. Sim WALLARM_API_HOST
Servidor de API Wallarm: us1.api.wallarm.com
para a Nuvem dos EUAapi.wallarm.com
para a Nuvem da UE
api.wallarm.com
.Não WALLARM_MODE
Modo de nó: block
para bloquear solicitações maliciosassafe_blocking
para bloquear apenas aquelas solicitações maliciosas originadas de endereços IP em lista cinzamonitoring
para analisar, mas não bloquear solicitaçõesoff
para desativar a análise e processamento de tráfego
monitoring
.
Descrição detalhada dos modos de filtragem →Não WALLARM_APPLICATION
Identificador ú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_GB
Quantidade 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_PORT
Define 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_IPV6
A 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_LABELS
Disponível a partir do nó 4.6. Funciona apenas se
WALLARM_API_TOKEN
estiver configurado para token de API com o papelDeploy
. Define a etiquetagroup
para 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-container
sã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-server
abrindo a porta 80 é atribuída à instância.- Todos os parâmetros do comando
gcloud compute instances create
sã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
default
contendo 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 run
com 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_TOKEN
explicitamente.Variável de ambiente Descrição Obrigatório WALLARM_API_TOKEN
Token de nó Wallarm ou API. Sim WALLARM_API_HOST
Servidor API Wallarm: us1.api.wallarm.com
para a Nuvem dos EUAapi.wallarm.com
para a Nuvem da UE
api.wallarm.com
.Não WALLARM_LABELS
Disponível a partir do nó 4.6. Funciona apenas se
WALLARM_API_TOKEN
estiver configurado para token da API com a funçãoDeploy
. Define a etiquetagroup
para 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.