Implantação da Imagem Docker da Wallarm no Azure¶
Este guia rápido fornece as etapas para implantar a Imagem Docker do nó Wallarm baseado em NGINX na plataforma de nuvem Microsoft Azure usando o serviço Container Instances do Azure.
Limitações das instruções
Estas instruções não cobrem a configuração do balanceamento de carga e do dimensionamento automático de nós. Se estiver configurando esses componentes por conta própria, recomendamos que você leia a documentação sobre o Gateway de Aplicativos Azure.
Casos de uso¶
Dentre todas as [opções de implementação do Wallarm][plataforma] suportadas, a implementação do Wallarm no Azure Container Instances utilizando a imagem Docker é recomendada nesses casos de uso:
-
Se suas aplicações se beneficiam de uma arquitetura de microsserviços e já estão contêinerizadas e operacionais no Azure Container Instances.
-
Se você precisa de um controle refinado sobre cada contêiner, a imagem Docker se destaca. Ela oferece um maior nível de isolamento de recursos do que normalmente é possível com implementações baseadas em VM tradicionais.
Requisitos¶
-
Assinatura ativa do Azure
-
Acesso à conta com a função de Administrador e autenticação de dois fatores desativada no Console Wallarm para a Nuvem dos EUA ou a Nuvem da UE
Opções para a configuração do contêiner 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 contêiner Docker do nó Wallarm configurado através de variáveis de ambiente¶
Para implantar o nó de filtragem em contêiner Wallarm configurado apenas por meio de variáveis de ambiente, você pode usar as seguintes ferramentas:
Nestas instruções, o contêiner é implantado usando a CLI Azure.
-
Obtenha o token Wallarm do tipo apropriado:
-
Entre na CLI Azure usando o comando
az login
: -
Crie um grupo de recursos usando o comando
az group create
. Por exemplo, crie o grupomeuGrupoDeRecursos
na região Leste dos EUA com o seguinte comando: -
Defina a variável de ambiente local com o token do nó Wallarm a ser usado para conectar a instância à Nuvem Wallarm:
-
Crie um recurso Azure a partir do contêiner Docker do nó Wallarm usando o comando
az container create
:az container create \ --resource-group meuGrupoDeRecursos \ --name wallarm-node \ --dns-name-label wallarm \ --ports 80 \ --image registry-1.docker.io/wallarm/node:4.8.0-1 \ --environment-variables WALLARM_API_TOKEN=${WALLARM_API_TOKEN} NGINX_BACKEND='example.com' WALLARM_API_HOST='us1.api.wallarm.com'
--resource-group
: nome do grupo de recursos criado na segunda etapa.--name
: nome do contêiner.--dns-name-label
: etiqueta de nome DNS para o contêiner.--ports
: porta em que o nó de filtragem está ouvindo.--image
: nome da imagem Docker do nó Wallarm.-
--environment-variables
: 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)
-
Abra o Portal Azure e verifique se o recurso criado é exibido na lista de recursos.
Implantando o contêiner Docker do nó Wallarm configurado através do arquivo montado¶
Para implantar o nó de filtragem em contêiner Wallarm configurado por meio de variáveis de ambiente e arquivo montado, apenas o CLI Azure pode ser usado.
Para implantar o contêiner com variáveis de ambiente e arquivo de configuração montado:
-
Obtenha o token Wallarm do tipo apropriado:
-
Entre na CLI Azure usando o comando
az login
: -
Crie um grupo de recursos usando o comando
az group create
. Por exemplo, crie o grupomeuGrupoDeRecursos
na região Leste dos EUA com o seguinte comando: -
Crie um arquivo de configuração localmente com as configurações do nó de filtragem. Um exemplo do arquivo com as 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 →
-
Localize o arquivo de configuração de uma das maneiras adequadas para montar volumes de dados no Azure. Todos os métodos são descritos na seção Mount data volumes da documentação do Azure.
Nestas instruções, o arquivo de configuração é montado a partir do repositório Git.
-
Defina a variável de ambiente local com o token do nó Wallarm a ser usado para conectar a instância à Nuvem Wallarm:
-
Crie um recurso Azure a partir do contêiner Docker do nó Wallarm usando o comando
az container create
:az container create \ --resource-group meuGrupoDeRecursos \ --name wallarm-node \ --dns-name-label wallarm \ --ports 80 \ --image registry-1.docker.io/wallarm/node:4.8.0-1 \ --gitrepo-url <URL_DO_GITREPO> \ --gitrepo-mount-path /etc/nginx/sites-enabled \ --environment-variables WALLARM_API_TOKEN=${WALLARM_API_TOKEN} WALLARM_API_HOST='us1.api.wallarm.com'
az container create \ --resource-group meuGrupoDeRecursos \ --name wallarm-node \ --dns-name-label wallarm \ --ports 80 \ --image registry-1.docker.io/wallarm/node:4.8.0-1 \ --gitrepo-url <URL_DO_GITREPO> \ --gitrepo-mount-path /etc/nginx/sites-enabled \ --environment-variables WALLARM_API_TOKEN=${WALLARM_API_TOKEN}
--resource-group
: nome do grupo de recursos criado na segunda etapa.--name
: nome do contêiner.--dns-name-label
: etiqueta de nome DNS para o contêiner.--ports
: porta em que o nó de filtragem está ouvindo.--image
: nome da imagem Docker do nó Wallarm.--gitrepo-url
: URL do repositório Git que contém o arquivo de configuração. Se o arquivo estiver localizado na raíz do repositório, você precisará passar apenas este parâmetro. Se o arquivo estiver localizado em um diretório de repositório Git separado, por favor, passe também o caminho para o diretório no parâmetro--gitrepo-dir
(por exemplo,--gitrepo-dir ./dir1
).-
--gitrepo-mount-path
: diretório do contêiner para montar o arquivo de configuração. Os arquivos de configuração podem ser montados nos seguintes diretórios de contêiner 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
. -
--environment-variables
: variáveis de ambiente contendo configurações para o nó de filtragem e conexão com a Nuvem Wallarm (variáveis disponíveis estão listadas na tabela abaixo). Por favor, observe que não é recomendado passar explicitamente o valor deWALLARM_API_TOKEN
.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)
-
Abra o Portal Azure e verifique se o recurso criado é exibido na lista de recursos.
Testando a operação do nó de filtragem¶
-
Abra o recurso criado no Portal Azure e copie o valor FQDN.
Se o campo FQDN estiver vazio, verifique se o contêiner está no status Running.
-
Envie a solicitação com o teste de ataque Path Traversal para o domínio copiado:
-
Abra o Console Wallarm → Events na Nuvem dos EUA ou na Nuvem da UE e verifique se o ataque aparece na lista.
Os detalhes sobre erros ocorridos durante a implantação do contêiner são exibidos na guia Containers → Logs dos detalhes do recurso no Portal Azure. Se o recurso não estiver disponível, verifique se os parâmetros necessários do nó de filtragem com valores corretos são passados para o contêiner.