Monitore e calibre o Bot Manager
Execute uma instância do Bot Manager em observação, leia as pontuações no log de report e defina threshold e regras a partir do seu próprio tráfego.
Você calibra uma instância do Bot Manager elevando o nível de log dela, lendo o log de report que ela escreve e definindo o threshold e as regras a partir do que esse log mostra.
Os mesmos passos se aplicam ao Bot Manager e ao Bot Manager Lite. Os argumentos que cada edição carrega são diferentes, e o procedimento não é. Boas práticas de Firewall cobre o que cada escolha custa e por quanto tempo mantê-la; esta página cobre os passos que produzem a escolha.
Mude uma coisa por vez. Uma mudança de argumento alcança o caminho da requisição em cerca de dois minutos, então uma leitura feita antes disso descreve a configuração que a precedeu.
Pré-requisitos
- Uma instância de função do Bot Manager em um firewall, executada por uma regra do Rules Engine for Firewall. Para mais informações, consulte Primeiros passos com Bot Manager.
- Acesso ao Azion Console. Para entrar, consulte Como acessar o Azion Console.
- Um personal token, para a consulta que lê o log de report. Para mais informações, consulte Personal Tokens.
Eleve o nível de log
Uma instância escreve uma linha de report para as requisições que internal_logs seleciona, e o argumento é entregue em 0. Eleve-o para 2 para que toda requisição produza uma linha, inclusive uma que pontue 0, e defina action como allow para que uma requisição que alcança o threshold seja pontuada e ainda assim atendida.
| Argumento | O que ele faz na janela de observação |
|---|---|
action | Em allow, uma requisição igual ou acima do threshold segue para a aplicação |
internal_logs | Em 2, a função escreve uma linha para toda requisição. O valor é um número, nunca uma string |
log_tag | A tag que o prefixo da linha carrega, que é o que separa as linhas de uma instância das de outra |
log_headers | Os cabeçalhos de requisição que a função escreve na linha. Os nove acima são o padrão entregue |
Para substituir os argumentos de uma instância existente no Azion Console:
Acesse o Azion Console > Firewalls e selecione esse firewall.
Selecione a instância do Bot Manager que você quer calibrar.
Na seção Arguments, informe o objeto. O Bot Manager Lite não carrega schema de argumentos, então a seção traz um editor JSON e não constrói formulário a partir dele.
A instância pontua toda requisição que a regra envia a ela e não recusa nenhuma. Espere cerca de dois minutos antes de tirar qualquer conclusão de uma resposta, e mantenha a janela aberta por tempo suficiente para cobrir horários de pico, crawlers semanais e jobs noturnos. Para saber quanto tempo é esse e o que ele custa, consulte Boas práticas de Firewall.
Leia o log de report no Real-Time Events
O Real-Time Events entrega cada linha de report como um registro do dataset functionConsoleEvents. No Azion Console esses registros são renderizados em uma coluna Time e uma coluna Log Body, e a interface não carrega nenhum campo próprio do Bot Manager: o objeto JSON chega inteiro, em vez de dividido em colunas que você possa ordenar. Estreite o período para a janela que você rodou e leia as linhas cujo prefixo carrega o seu log_tag.
Para ler os mesmos registros como uma consulta, envie o seguinte para https://api.azion.com/v4/events/graphql, com um cabeçalho Authorization: Token [TOKEN VALUE] e um tsRange que cubra a janela:
A consulta responde 200 e devolve um registro por linha que a função escreveu. line carrega a linha de report inteira, functionId é o id da função instalada, e configurationId é o id do workload em que a requisição chegou, não o id do firewall em que a instância é executada.
Uma linha abre com o prefixo [Bot-Protection][<log_tag>] Report: e continua como um único objeto JSON:
Quatro valores carregam a calibração. score é o total que a função calculou, matched_rules nomeia as regras que o produziram, action é o que a função aplicou, e classified é o veredito a que ela chegou. Na linha acima a pontuação é 28 sob um threshold de 30, então action lê allow e classified lê legitimate. Sob um threshold que 28 alcança, a mesma requisição lê bad bot e encontra a ação configurada.
bot_category é uma lista, unida por vírgula, das categorias das regras que a requisição correspondeu, então uma linha classificada como legitimate ainda pode nomear categorias de bad bot. Para cada campo que uma linha carrega e para os quatro valores que classified assume, consulte Logs.
A pontuação está na linha e em nenhum outro lugar. Os dois datasets GraphQL de Real-Time Metrics contam requisições por classificação, ação, modo, host, geografia e pelas URLs que o tráfego de bots alcançou, e nenhum dos dois carrega uma pontuação, então uma distribuição de pontuações é lida do log de report, e não de uma consulta. Esses datasets respondem às perguntas agregadas: consulte Consulte dados do Bot Manager com GraphQL para as contagens de classificação, Consulte as URLs mais atingidas por bots com GraphQL para as URLs, e Real-Time Metrics para os mesmos dados em gráficos.
Defina o threshold a partir das pontuações que você leu
threshold é a pontuação em que action é executada. O valor vem da distribuição no seu próprio log de report: os clientes que você reconhece se agrupam na ponta baixa, os clientes automatizados se agrupam mais acima, e o threshold vai no intervalo entre os dois.
Para calibrá-lo:
Leia score nas linhas que a janela produziu e separe as requisições que você reconhece das que você não reconhece.
Defina-o acima das pontuações do tráfego que você reconhece, e igual ou abaixo das pontuações do tráfego que você não reconhece.
Substitua os argumentos da instância pelo novo threshold e pela action que uma requisição igual ou acima dele encontra.
Uma mudança em uma instância chega ao caminho das requisições em cerca de dois minutos.
Leia as linhas classificadas como legitimate cuja pontuação fica logo abaixo dele. Essas requisições estão a uma regra correspondida da ação.
A instância aplica a ação ao tráfego acima do threshold, e as linhas abaixo dele nomeiam as requisições que chegaram mais perto. Repita o ciclo: baixe o threshold enquanto tráfego automatizado ainda passa, e eleve-o quando requisições que você reconhece forem recusadas.
Retire uma regra da pontuação
Uma pontuação é a soma dos incrementos das regras que a requisição correspondeu, e a linha nomeia as duas coisas: matched_rules carrega os IDs e score carrega o total. Uma regra que dispara em tráfego que você reconhece é encontrada lendo esses IDs. Nenhum ID entra no objeto de argumentos antes de aparecer nas suas próprias linhas.
Para impedir que uma regra eleve uma pontuação:
Leia as linhas classificadas como legitimate cuja pontuação fica no threshold ou perto dele, e as linhas que carregam requisições que você reconhece.
matched_rules carrega os IDs das regras que cada requisição correspondeu. Compare várias linhas, para que uma requisição sozinha não decida a questão.
disabled_rules os recebe no Bot Manager Lite, e disabled_static_rules os recebe no Bot Manager. Os dois são arrays.
Uma regra desabilitada dessa forma continua rodando e não soma nada à pontuação.
As requisições que correspondiam à regra pontuam menos pelo incremento dela, e cada correspondência passa a cair no campo disabled_matched_rules. Uma regra retirada da pontuação fica fora dela para toda requisição que a instância pontua, então vale ler antes os instrumentos mais estreitos: consulte Boas práticas de Firewall. Para os dois argumentos e os tipos que eles recebem, consulte Argumentos.
Eleve a tolerância das regras dinâmicas
O Bot Manager documenta um método de regras dinâmicas que pontua uma requisição contra a linha de base do tráfego da própria aplicação. dynamic_rules_tolerance define o quanto essa comparação é estrita, e os valores documentados são soft, medium e hard, com soft como padrão documentado.
Mova um passo por vez. Uma mudança de tolerância repontua toda requisição que a instância vê, então cada passo precisa de uma janela de observação própria antes do seguinte. Dois passos dados juntos produzem os seus falsos positivos juntos, sem nada nas linhas que diga qual passo os produziu.
dynamic_rules_logs_enabled escreve os logs de depuração do método. Ligue-o durante a janela e desligue-o quando a janela fechar, por causa do volume que ele acrescenta ao log. Para os quatro argumentos que o método recebe, consulte Argumentos.
Guarde uma cópia do log de report
A plataforma descarta os dados agregados com o tempo. botManagerMetrics é retido por 2 anos e botManagerBreakdownMetrics por 60 dias, então uma pergunta sobre as URLs que o tráfego de bots alcançou três meses atrás não tem resposta ali. Uma cópia em um destino seu dura o quanto você a mantiver, e fica ao lado dos registros da aplicação que essas requisições alcançaram.
O Data Stream encaminha a linha de report da data source Functions para um endpoint que você configura, no momento em que a função a escreve. Baixe internal_logs quando a janela de observação fechar: em 2 toda requisição produz uma linha, e esse é o volume que o stream carrega. Para os endpoints em que um stream escreve, consulte Endpoints.