Como usar a geração de registros de solicitação

Os registros por solicitação do Google Cloud Armor para o nome da política de segurança, a prioridade da regra de correspondência, a ação associada e as informações relacionadas são registrados como parte da geração de registros do balanceamento de carga HTTP(S), de proxy TCP e de proxy SSL. A geração de registros para novos serviços de back-end é desativada por padrão. Portanto, você precisa ativar a geração de registros para registrar informações completas de geração de registros do Google Cloud Armor.

Como os registros do Google Cloud Armor fazem parte dos registros do Cloud Load Balancing, a geração de registros do Google Cloud Armor está sujeita à taxa de amostragem de registros configurada para seu balanceamento de carga. Se você reduzir a taxa de amostragem do balanceamento de carga HTTP(S), do proxy TCP ou do proxy SSL, os registros de solicitações do Google Cloud Armor serão amostrados nessa taxa reduzida.

Usando a geração de registros, é possível ver todas as solicitações avaliadas por uma política de segurança do Google Cloud Armor e o resultado ou a ação realizada. Por exemplo, para ver solicitações negadas, use filtros como jsonPayload.enforcedSecurityPolicy.outcome="DENY" ou jsonPayload.statusDetails="denied_by_security_policy".

Para ativar a geração de registros para balanceamento de carga HTTP(S), veja Geração de registros e monitoramento do balanceamento de carga HTTP(S). Para o balanceamento de carga de proxy TCP e de proxy SSL, é possível usar os comandos da CLI do Google Cloud conforme listado na página anterior Geração de registros e monitoramento do balanceamento de carga HTTP(S). Não é possível ativar a geração de registros para o balanceamento de carga de proxy TCP e SSL usando o Console do Google Cloud.

Além disso, é possível definir diferentes níveis de registro para ajudar a avaliar se as políticas de segurança e suas regras estão funcionando conforme o esperado. Para informações completas, consulte Registro detalhado.

Entradas de registro da política de segurança

As entradas de registro a seguir, exibidas no Explorador de registros, são destinadas à geração de registros de regras e à política de segurança do Google Cloud Armor. As entradas incluem a seguinte estrutura em jsonPayload: Os detalhes da solicitação HTTP aparecem na mensagem httpRequest.

  • statusDetails (string): uma descrição textual do código de resposta.
    • redirected_by_security_policy: a solicitação foi redirecionada por uma regra de redirecionamento, GOOGLE_RECAPTCHA ou EXTERNAL_302.
    • denied_by_security_policy: uma solicitação foi negada por um balanceador de carga devido a uma política de segurança do Google Cloud Armor.
    • body_denied_by_security_policy: um corpo de solicitação foi negado pelo balanceador de carga devido a uma política de segurança do Google Cloud Armor.
  • enforcedSecurityPolicy: a regra da política de segurança que foi aplicada.
    • name (string): nome da política de segurança
    • priority (número): a prioridade da regra correspondente na política de segurança
    • configuredAction (string): o nome da ação configurada na regra correspondente, por exemplo:ALLOW, DENY, GOOGLE_RECAPTCHA, EXTERNAL_302 e THROTTLE (para uma regra de limitação), RATE_BASED_BAN (para uma regra de proibição baseada em taxa)
    • rateLimitAction: informações sobre a ação de limite de taxa quando há correspondência com uma regra de proibição baseada em taxa ou com uma regra de limitação.
      • key (string): valor da chave de limite de taxa (até 32 bytes). Este campo é omitido quando o tipo de chave é ALL, se o tipo de chave é HTTP-HEADER ou HTTP-COOKIE e o cabeçalho ou cookie especificado não está presente na solicitação.
      • outcome (string): os valores possíveis são os seguintes:
        • "RATE_LIMIT_THRESHOLD_CONFORM" quando está abaixo do limite de taxa configurado
        • "RATE_LIMIT_THRESHOLD_EXCEED" quando ultrapassa o limite de taxa configurado.
        • "BAN_THRESHOLD_EXCEED" quando ultrapassa o limite de banimento configurado.
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY, REDIRECT e EXEMPT.
    • preconfiguredExprIds (string): IDs de todas as expressões de regra WAF pré-configuradas que acionaram a regra.
  • previewSecurityPolicy: preenchido se a solicitação corresponder a uma regra configurada para visualização (presente apenas quando uma regra de visualização tiver prioridade sobre a aplicada).
    • name (string): nome da política de segurança
    • priority (número): a prioridade da regra correspondente na política de segurança
    • configuredAction (string): o nome da ação configurada na regra correspondente, por exemplo:ALLOW, DENY, GOOGLE_RECAPTCHA, EXTERNAL_302 e THROTTLE (para uma regra de limitação), RATE_BASED_BAN (para uma regra de proibição baseada em taxa)
    • rateLimitAction: informações sobre a ação de limite de taxa quando há correspondência com uma regra de proibição baseada em taxa ou com uma regra de limitação.
      • key (string): valor da chave de limite de taxa (até 32 bytes). Este campo é omitido quando o tipo de chave é ALL, se o tipo de chave for HTTP-HEADER ou HTTP-COOKIE e o cabeçalho ou cookie especificado não estiver presente na solicitação.
      • outcome (string): os valores possíveis são os seguintes:
        • "RATE_LIMIT_THRESHOLD_CONFORM" quando está abaixo do limite de taxa configurado
        • "RATE_LIMIT_THRESHOLD_EXCEED" quando ultrapassa o limite de taxa configurado.
        • "BAN_THRESHOLD_EXCEED" quando ultrapassa o limite de banimento configurado.
    • outcome (string): o resultado da execução da configuração.
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY, REDIRECT e EXEMPT.
    • preconfiguredExprIds (string): IDs de todas as expressões de regra WAF pré-configuradas que acionaram a regra.
  • enforcedEdgeSecurityPolicy (Visualização): a regra da política de segurança de borda que foi aplicada.
    • name (string): nome da política de segurança
    • priority (número): a prioridade da regra correspondente na política de segurança
    • configuredAction (string): o nome da ação configurada na regra correspondente. Por exemplo, ALLOW, DENY.
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY.
  • previewEdgeSecurityPolicy (Visualização): preenchido se uma solicitação corresponder a uma regra de política de segurança de borda configurada para visualização. Presente apenas quando uma regra de visualização tiver prioridade sobre a regra aplicada).
    • name (string): nome da política de segurança
    • priority (número): a prioridade da regra correspondente na política de segurança
    • configuredAction (string): o nome da ação configurada na regra correspondente. Por exemplo, ALLOW, DENY.
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY.

Registro detalhado

Pode ser difícil saber por que uma regra WAF pré-configurada foi acionada por uma solicitação específica. Os registros de eventos padrão do Google Cloud Armor contêm a regra que foi acionada, bem como a subassinatura. No entanto, talvez seja necessário identificar os detalhes da solicitação recebida que acionou a regra para solucionar problemas, validar ou ajustar a regra.

É possível alterar o nível de detalhes registrados para uma política usando a sinalização --log-level. Essa sinalização pode ter os valores NORMAL ou VERBOSE:

--log-level=[NORMAL | VERBOSE]

Exemplo:

gcloud compute security-policies update ca-policy-1 \
    --log-level=VERBOSE

Recomendamos que você ative o registro detalhado ao criar uma política, fazer alterações ou solucionar problemas.

Valores registrados quando o registro detalhado está ativado

Quando o registro detalhado está ativado, mais informações são registradas no registro de solicitação de balanceamento de carga que é enviado para o Cloud Logging. Os seguintes campos adicionais aparecem no registro de solicitação quando o registro detalhado está ativado:

  • matchedFieldType (string): é o tipo de campo que gera a correspondência.

    • ARG_NAMES
    • ARG_VALUES
    • BODY

      • Quando o campo BODY está no registro, significa que todo o corpo da postagem corresponde a uma regra.
    • COOKIE_VALUES

    • COOKIE_NAMES

    • FILENAME

    • HEADER_VALUES

    • RAW_URI

    • REFERER

    • REQUEST_LINE

    • URI

    • USER_AGENT

    • HEADER_NAMES

    • ARGS_GET

    • X_FILENAME

    • ARG_NAME_COUNT

    • TRANSFER_ENCODING

    • REQUEST_METHOD

  • matchedFieldName (string): se isso corresponder à parte do valor de um par de chave-valor, o valor da chave será armazenado nesse campo. Caso contrário, ele estará vazio.

  • matchedFieldValue (string): um prefixo de até 16 bytes para a parte do campo que causa a correspondência.

  • matchedFieldLength (número inteiro): o comprimento total do campo.

  • matchedOffset (número inteiro): o deslocamento inicial no campo que causa a correspondência.

  • matchedLength (inteiro): a duração da correspondência.

Por exemplo, é possível enviar essa solicitação para um projeto em que as regras WAF de injeção SQL estejam ativadas:

curl http://IP_ADDR/?sql_table=abc%20pg_catalog%20xyz

A entrada no Explorador de registros seria assim:

enforcedSecurityPolicy: {
 name: "user-staging-sec-policy"
 priority: 100
 configuredAction: "DENY"
 outcome: "DENY
 preconfiguredExprIds: [
   0: "owasp-crs-v030001-id942140-sqli"
  ]
matchedFieldType: "ARG_VALUES"
matchedFieldName: "sql_table"
matchedFieldValue: "pg_catalog"
matchedFieldLength: 18
matchedOffset: 4
matchedLength: 10
}

Como manter a privacidade quando o registro detalhado está ativado

Quando você usa o registro detalhado, o Google Cloud Armor registra snippets dos elementos das solicitações recebidas que acionaram uma determinada regra WAF pré-configurada. Esses snippets podem conter partes de cabeçalhos de solicitação, parâmetros de solicitação ou elementos do corpo do POST. É possível que um snippet contenha dados sensíveis, como um endereço IP ou outros dados sensíveis da solicitação recebida, dependendo do que está nos cabeçalhos ou no corpo da solicitação e do que aciona a regra WAF.

Ao ativar a geração de registros detalhados, você corre o risco de acumular dados potencialmente sensíveis nos registros do Logging. Recomendamos que você ative o registro detalhado apenas durante a criação e validação da regra ou para a solução de problemas. Durante as operações normais, recomendamos que você mantenha o registro detalhado desativado.

Como ver registros

É possível ver os registros de uma política de segurança do Google Cloud Armor somente no Console do Google Cloud.

Console

  1. No Console do Google Cloud, acesse a página Segurança de rede.

    Acesse Segurança de rede

  2. Na página Políticas de segurança, na linha de uma política de segurança, clique em Menu da política com os registros que você quer ver.

  3. Selecione Ver registros.

Gerenciamento de bots

Para dar visibilidade sobre como o Google Cloud Armor avalia os tokens do Google Enterprise, o jsonPayload tem o seguinte campo adicional.

  • securityPolicyRequestData: dados relativos à solicitação enquanto estão sendo processados por uma política de segurança, independentemente de qual regra será correspondida.
    • recaptchaActionToken: dados relacionados a um token de ação do reCAPTCHA Enterprise.
      • score (float): uma pontuação de legitimidade do usuário incorporada em um token de ação do reCAPTCHA Enterprise. Presente apenas quando um token de ação do reCAPTCHA Enterprise é anexado à solicitação e decodificado com base em uma regra de política de segurança. Para mais informações, consulte Aplicar a avaliação do reCAPTCHA Enterprise.
    • recaptchaSessionToken: dados relacionados a um token de sessão reCAPTCHA Enterprise.
      • score (float): uma pontuação de legitimidade do usuário incorporada em um token de sessão do reCAPTCHA Enterprise. Presente apenas quando um token de sessão do reCAPTCHA Enterprise é anexado à solicitação e é decodificado com base em uma regra de política de segurança. Para mais informações, consulte Aplicar a avaliação do reCAPTCHA Enterprise.

Exemplos de registro

Veja a seguir um exemplo de detalhes de registro para uma regra de limitação que bloqueia uma solicitação:

jsonPayload: {
 enforcedSecurityPolicy: {
  priority: 100
  name: "sample-prod-policy"
  configuredAction: "THROTTLE"
  outcome: "DENY"
  rateLimitAction: {
    key:"sample-key"
    outcome:"RATE_LIMIT_THRESHOLD_EXCEED"
  }
 }
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:16:48.185763Z"

Veja a seguir um exemplo de detalhes de registro para uma regra de proibição baseada em taxa que bloqueia uma solicitação:

jsonPayload: {
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 enforcedSecurityPolicy: {
  priority: 150
  name: "sample-prod-policy"
  outcome: "DENY"
  configuredAction: "RATE_BASED_BAN"
  rateLimitAction: {
    key:"sample-key"
    outcome:"BAN_THRESHOLD_EXCEED"
  }
 }
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:27:17.393244Z"

A seguir

Saiba mais sobre a solução de problemas do Google Cloud Armor.