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). A geração de registros para novos serviços de back-end é desativada por padrão. Portanto, é necessário ativar a geração de registros do balanceamento de carga HTTP(S) para registrar informações completas 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 o balanceamento de carga HTTP(S). Se você reduzir a taxa de amostragem do balanceador de carga HTTP(S) externo, os registros de solicitações do Google Cloud Armor serão amostrados com essa 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, consulte Geração de registros e monitoramento de balanceamento de carga HTTP(S).

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 Visualizador de registros, são destinadas à geração de registros 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.
    • throttled_by_security_policy: a solicitação foi bloqueada por uma regra de limitação
    • rate_based_banned_by_security_policy: a solicitação foi banida por uma regra de proibição baseada em taxa
    • 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 de 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)
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY, REDIRECT, THROTTLE e RATE_BASED_BAN
    • preconfiguredExprIds (string): IDs de todas as expressões de regra WAF pré-configuradas que acionaram a regra
  • previewSecurityPolicy: será preenchida se a solicitação corresponder a uma regra 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, GOOGLE_RECAPTCHA, EXTERNAL_302 e THROTTLE (para uma regra de limitação), RATE_BASED_BAN (para uma regra de proibição baseada em taxa)
    • outcome (string): o resultado da execução da ação configurada, por exemplo, ACCEPT, DENY, REDIRECT, THROTTLE e RATE_BASED_BAN
    • 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 e 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 e 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 HTTP(S) 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.
    • recaptchaToken: dados relacionados a um token do reCAPTCHA Enterprise (token de ação ou token de sessão).
      • score (float): uma pontuação de legitimidade do usuário incorporada em um token do reCAPTCHA Enterprise. Presente somente quando um token do reCAPTCHA Enterprise é anexado à solicitação e o token é decodificado corretamente. O Google Cloud Armor só tentará decodificar o token se houver uma regra baseada em token do reCAPTCHA Enterprise em vigor. 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: "THROTTLE"
 }
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 statusDetails: "throttled_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: "RATE_BASED_BAN"
  configuredAction: "RATE_BASED_BAN"
 }
 statusDetails: "rate_based_banned_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.