Configurar o gerenciamento de bots

Esta página contém informações sobre como configurar as regras da política de segurança do Google Cloud Armor para gerenciamento de bots. Antes de configurar o gerenciamento de bots, familiarize-se com as informações na visão geral do gerenciamento de bots.

Antes de começar

As seções a seguir explicam todos os papéis e permissões do Identity and Access Management (IAM) necessários para configurar as políticas de segurança do Google Cloud Armor. Para os casos de uso deste documento, você só precisa das permissões compute.securityPolicies.create e compute.securityPolicies.update.

Configure permissões de IAM para políticas de segurança do Google Cloud Armor

As operações a seguir exigem o papel de administrador de segurança (roles/compute.securityAdmin) do Identity and Access (IAM):

  • Como configurar modificar, atualizar e excluir uma política de segurança do Google Cloud Armor
  • Usando os seguintes métodos de API:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Um usuário com o papel de administrador da rede do Compute (roles/compute.networkAdmin) pode realizar as seguintes operações:

  • Definir uma política de segurança do Google Cloud Armor para um serviço de back-end
  • Usando os seguintes métodos de API:
    • BackendServices setSecurityPolicy
    • BackendServices list (somente gcloud)

Os usuários com os papéis de administrador de segurança (roles/iam.securityAdmin) e de rede podem ver as políticas de segurança do Google Cloud Armor usando os métodos de API SecurityPolicies, get, list e getRule.

Configure permissões de IAM para papéis personalizados

A tabela a seguir lista as permissões básicas dos papéis de IAM e os métodos de API associados.

Permissão de IAM Métodos da API
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

Usar um desafio manual do reCAPTCHA para distinguir entre clientes humanos e automatizados

Para usar o reCAPTCHA com o Google Cloud Armor, é necessário associar a chave de site do reCAPTCHA WAF (chave reCAPTCHA) do tipo CHALLENGEPAGE a uma política de segurança. Para mais informações sobre chaves reCAPTCHA, consulte a Visão geral das chaves reCAPTCHA.

Para associar ou desassociar sua própria chave reCAPTCHA a uma política de segurança, use o seguinte comando:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key SITE_KEY

Substitua:

  • SECURITY_POLICY: o nome da política de segurança
  • SITE_KEY: sua chave CHALLENGEPAGE de reCAPTCHA

Associar uma chave reCAPTCHA

O exemplo a seguir associa uma chave de site do reCAPTCHA para WAF a uma política de segurança. A chave do reCAPTCHA associada aplica-se a todas as regras que usam o recurso de desafio manual de acordo com a política de segurança especificada.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key "SITE_KEY"

Desassociar uma chave reCAPTCHA

Para desassociar uma chave do reCAPTCHA de uma política de segurança, use este comando:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key ""

Redirecionar o tráfego para teste reCAPTCHA

Depois de associar sua chave reCAPTCHA à política de segurança, é possível criar uma regra nessa política para redirecionar o tráfego internamente para a avaliação do reCAPTCHA. Use o seguinte formato na CLI gcloud para redirecionar o tráfego:

gcloud compute security-policies rules create PRIORITY \
  --security-policy SECURITY_POLICY \
  {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
  --action redirect \
  --redirect-type google-recaptcha

Substitua:

  • PRIORITY: a prioridade com que você quer criar a regra.
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão de linguagem de regras personalizadas que corresponde ao tráfego em que você quer aplicar a avaliação reCAPTCHA.
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esse recurso para aplicar a avaliação de reCAPTCHA a todas as solicitações desse intervalo.

No exemplo a seguir, criamos uma regra que redireciona o tráfego que tenta alcançar /login.html para um desafio manual do reCAPTCHA.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\")" \
    --action redirect \
    --redirect-type google-recaptcha

Aplique a avaliação mais fácil do reCAPTCHA

Antes de continuar, consulte a visão geral do gerenciamento de bots para conferir os pré-requisitos sobre o uso de tokens de ação ou de sessão do reCAPTCHA.

Para extrair atributos de um token de ação reCAPTCHA, use token.recaptcha_action.ATTRIBUTE: Substitua ATTRIBUTE por um atributo de token válido na linguagem de regras do Google Cloud Armor. Da mesma forma, use token.recaptcha_session.ATTRIBUTE para extrair atributos de um token de sessão reCAPTCHA. Para mais informações sobre a sintaxe dos atributos de token do reCAPTCHA disponíveis, consulte a referência de linguagem das regras.

Um token de ação pode vir de um aplicativo da Web, do iOS ou Android, enquanto um token de sessão só pode vir de um aplicativo da Web. Cada plataforma requer uma chave do reCAPTCHA separada. As expressões token.recaptcha_action.ATTRIBUTE e token.recaptcha_session.ATTRIBUTE aplicam-se aos tokens de qualquer uma dessas plataformas. Para distinguir tokens de plataformas diferentes e evitar o roubo deles, recomendamos associar chaves do reCAPTCHA ao configurar regras que usam essas expressões.

Exemplos

O primeiro exemplo cria uma regra que permite a segmentação de tráfego /login.html com um token de ação do reCAPTCHA cuja pontuação não é menor que 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --action allow

O segundo exemplo é igual ao primeiro, mas também requer que o token de ação seja emitido com uma chave do reCAPTCHA de example-site-key-1 ou example-site-key-2:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
    --action allow

O terceiro exemplo cria uma regra que permite a segmentação de tráfego /login.html, com um token de sessão reCAPTCHA emitido com uma chave reCAPTCHA de example-site-key-3 e com uma pontuação não inferior a 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

Redirecionar (resposta 302)

Para criar uma regra de redirecionamento do tráfego a um URL configurado pelo usuário, use o seguinte formato na Google Cloud CLI:

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

Substitua:

  • PRIORITY: a prioridade com que você quer criar a regra.
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão de linguagem de regras personalizadas que corresponde ao tráfego em que você quer aplicar a avaliação reCAPTCHA.
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esse recurso para aplicar a avaliação de reCAPTCHA a todas as solicitações desse intervalo.
  • REDIRECT_URL: o URL para onde você quer redirecionar o tráfego.

O exemplo a seguir cria uma regra que redireciona o tráfego proveniente de 10.10.10.0/24 para https://www.example.com.

gcloud compute security-policies rules create 1000 \
   --security-policy SECURITY_POLICY \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

Decorar solicitação

Para criar uma regra que permita o tráfego, mas adicione cabeçalhos personalizados e valores estáticos definidos pelo usuário antes de enviá-los a back-ends protegidos, use o seguinte formato na CLI gcloud:

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action allow \
    --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

Substitua:

  • PRIORITY: a prioridade com que você quer criar a regra.
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão de linguagem de regras personalizadas que corresponde ao tráfego em que você quer aplicar a avaliação reCAPTCHA.
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esse recurso para aplicar a avaliação de reCAPTCHA a todas as solicitações desse intervalo.
  • HEADER_#: o nome do cabeçalho da solicitação que você quer usar para decorar a solicitação.
  • VALUE_#: o valor do cabeçalho da solicitação que você quer usar para decorar a solicitação.

O exemplo a seguir cria uma regra que permite a segmentação de tráfego /login.html, desde que a solicitação também tenha uma pontuação de token de ação reCAPTCHA menor que 0.2.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
    --action allow \
    --request-headers-to-add "reCAPTCHA-Warning=high"

A seguir