Configure a gestão de bots

Esta página contém informações sobre a configuração das regras da política de segurança do Cloud Armor para a gestão de bots. Antes de configurar a gestão de bots, certifique-se de que conhece as informações na vista geral da gestão de bots.

Antes de começar

As secções seguintes explicam todas as funções e autorizações da gestão de identidade e de acesso (IAM) necessárias para configurar as políticas de segurança do Cloud Armor. Para os exemplos de utilização neste documento, só precisa das autorizações compute.securityPolicies.create e compute.securityPolicies.update.

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

As seguintes operações requerem a função de administrador de segurança do Compute do Identity and Access Management (IAM) (roles/compute.securityAdmin):

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

Um utilizador com a função de administrador de rede de computação (roles/compute.networkAdmin) pode realizar as seguintes operações:

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

Os utilizadores com a função de administrador de segurança (roles/iam.securityAdmin) e a função de administrador de rede de computação podem ver as políticas de segurança do Cloud Armor através dos métodos da API SecurityPolicies get, list e getRule.

Configure autorizações da IAM para funções personalizadas

A tabela seguinte apresenta as autorizações base das funções da IAM e os respetivos métodos da API associados.

Autorizaçã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

Use um desafio manual do reCAPTCHA para distinguir entre clientes humanos ou automatizados

Para usar o reCAPTCHA com o Cloud Armor, tem de associar a chave de site do reCAPTCHA WAF (chave do reCAPTCHA) do tipo CHALLENGEPAGE a uma política de segurança. Para mais informações sobre as chaves reCAPTCHA, consulte a vista geral das chaves reCAPTCHA.

Para associar ou desassociar a sua própria chave do 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 o seguinte:

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

Associe uma chave reCAPTCHA

O exemplo seguinte associa uma chave do reCAPTCHA a uma política de segurança. A chave do reCAPTCHA associada aplica-se a todas as regras que usam a funcionalidade de desafio manual na política de segurança especificada.

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

Desassocie 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 ""

Redirecione o tráfego para a avaliação do reCAPTCHA

Quando tiver associado a chave do reCAPTCHA à sua política de segurança, pode criar uma regra nessa política para redirecionar internamente o tráfego 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 o seguinte:

  • PRIORITY: a prioridade com a qual quer criar a regra
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão da linguagem de regras personalizadas que corresponde ao tráfego no qual quer aplicar a avaliação do reCAPTCHA
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esta opção para aplicar a avaliação do reCAPTCHA a todos os pedidos deste intervalo.

O exemplo seguinte cria 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 sem atrito do reCAPTCHA

Antes de continuar, consulte a vista geral da gestão de bots para ver os pré-requisitos da utilização de tokens de ação ou tokens de sessão do reCAPTCHA.

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

Um token de ação pode ter origem numa aplicação Web, numa aplicação iOS ou numa aplicação Android, enquanto um token de sessão só pode ter origem numa aplicação Web. Cada plataforma requer uma chave do reCAPTCHA separada. As expressões token.recaptcha_action.ATTRIBUTE e token.recaptcha_session.ATTRIBUTE aplicam-se a tokens de qualquer uma destas plataformas. Para distinguir tokens de diferentes plataformas e evitar o roubo de tokens, recomendamos que associe chaves do reCAPTCHA quando configurar regras que usam estas expressões.

Exemplos

O primeiro exemplo cria uma regra que permite a segmentação por tráfego /login.html com um token de ação do reCAPTCHA cuja pontuação seja igual ou superior a 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 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 do reCAPTCHA emitido com uma chave do 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

Redirecionamento (resposta 302)

Para criar uma regra para redirecionar o tráfego para um URL configurado pelo utilizador, use o seguinte formato na CLI Google Cloud:

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 o seguinte:

  • PRIORITY: a prioridade com a qual quer criar a regra
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão de linguagem das regras personalizadas que corresponde ao tráfego no qual quer aplicar a avaliação do reCAPTCHA
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esta opção para aplicar a avaliação do reCAPTCHA a todos os pedidos deste intervalo.
  • REDIRECT_URL: o URL para o qual quer redirecionar o tráfego

O exemplo seguinte 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"

Pedido de decoração

Para criar uma regra que permita o tráfego, mas adicione cabeçalhos personalizados e valores estáticos definidos pelo utilizador antes de os enviar para os 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 o seguinte:

  • PRIORITY: a prioridade com a qual quer criar a regra
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão da linguagem de regras personalizadas que corresponde ao tráfego no qual quer aplicar a avaliação do reCAPTCHA
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esta opção para aplicar a avaliação do reCAPTCHA a todos os pedidos deste intervalo.
  • HEADER_#: o nome do cabeçalho do pedido com o qual quer decorar o pedido
  • VALUE_#: o valor do cabeçalho do pedido com o qual quer decorar o pedido

O exemplo seguinte cria uma regra que permite a segmentação de tráfego /login.html, desde que o pedido também tenha uma pontuação do token de ação do reCAPTCHA inferior a 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"

O que se segue?