Configurar a gestão de bots

Esta página contém informações sobre como configurar regras de política de segurança do Cloud Armor para a gestão de bots. Antes de começar a configurar a gestão de bots, garanta que você já conhece as informações apresentadas na visão geral da gestão de bots.

Antes de começar

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

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

Para executar as operações abaixo, é necessário ter o papel de administrador de segurança do Compute(roles/compute.securityAdmin) do Identity and Access Management (IAM):

  • Como configurar modificar, atualizar e excluir uma política de segurança do 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 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 administrador de rede do Compute podem visualizar as políticas de segurança do Cloud Armor usando os métodos get, list e getRule da API SecurityPolicies.

Configurar permissões do IAM para papéis personalizados

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

Permissão do 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 Cloud Armor, é necessário associar sua chave do site do reCAPTCHA para WAF (chave do reCAPTCHA) do tipo CHALLENGEPAGE a uma política de segurança. Para mais informações sobre as chaves reCAPTCHA, confira Visão geral das chaves do reCAPTCHA.

Para associar ou desassociar a 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:

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

Associar uma chave do reCAPTCHA

O exemplo a seguir associa uma chave do reCAPTCHA a uma política de segurança. A chave do reCAPTCHA associada se aplica a todas as regras que usam o recurso de desafio manual na política de segurança fornecida.

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

Desassociar uma chave do reCAPTCHA

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

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

Redirecionar o tráfego para o teste reCAPTCHA

Após associar a chave do reCAPTCHA à política de segurança, é possível criar uma regra nessa política para redirecionar internamente o tráfego para o teste reCAPTCHA. Use o seguinte formato na gcloud CLI 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 a qual você deseja criar a regra
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão da linguagem de regras personalizada que corresponde ao tráfego no qual você deseja aplicar o teste reCAPTCHA
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esse comando para aplicar o teste reCAPTCHA em todas as solicitações desse intervalo.

O exemplo a seguir cria uma regra que redireciona o tráfego que tenta acessar /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

Aplicar avaliações mais fáceis do reCAPTCHA

Antes de prosseguir, confira a visão geral da gestão de bots para conhecer os pré-requisitos sobre o uso de tokens de ação ou tokens de sessão do reCAPTCHA.

Para extrair atributos de um token de ação do reCAPTCHA, você pode usar token.recaptcha_action.ATTRIBUTE. Substitua ATTRIBUTE por um atributo de token válido na linguagem de regras do Cloud Armor. Da forma semelhante, 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, confira a referência de linguagem para regras.

Um token de ação pode ter origem em um aplicativo da web ou um aplicativo iOS ou Android, enquanto um token de sessão pode ter origem apenas em um aplicativo da web. Cada plataforma requer uma chave do reCAPTCHA distinta. As expressões token.recaptcha_action.ATTRIBUTE e token.recaptcha_session.ATTRIBUTE se aplicam a tokens de qualquer uma dessas plataformas. Para distinguir tokens de diferentes plataformas e evitar o roubo de tokens, recomendamos que você associe as chaves do reCAPTCHA ao configurar regras que usem essas expressões.

Exemplos

O primeiro exemplo cria uma regra que permite o tráfego direcionado a /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 é idêntico ao primeiro, mas 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 o tráfego direcionado a /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 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_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

Redirecionar (resposta 302)

Para criar uma regra que redireciona o tráfego para um URL configurado pelo usuário, use o seguinte formato na CLI do 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:

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

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

Incrementar a solicitação

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

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 a qual você deseja criar a regra
  • SECURITY_POLICY: o nome da política de segurança
  • EXPRESSION: a expressão da linguagem de regras personalizada que corresponde ao tráfego no qual você deseja aplicar o teste reCAPTCHA
  • SRC_IP_RANGE: um intervalo de endereços IP. Use esse comando para aplicar o teste reCAPTCHA em todas as solicitações desse intervalo.
  • HEADER_#: o nome do cabeçalho da solicitação com o qual você deseja incrementar a solicitação
  • VALUE_#: o valor do cabeçalho da solicitação com o qual você deseja incrementar a solicitação

O exemplo abaixo cria uma regra que permite o tráfego direcionado a /login.html, desde que a solicitação também tenha uma pontuação de 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"

A seguir