Ajustar regras da política de segurança

É possível ajustar as regras excluindo campos de solicitação da avaliação para reduzir falsos positivos.

Ao configurar exclusões para uma regra, é possível excluir os seguintes campos da inspeção:

Excluir campos de solicitação da avaliação de regras

Para configurar uma exclusão de campo de solicitação para uma regra, associe a configuração a uma regra de política de segurança.

Essas regras não usam IDs de regra. Em vez disso, configure a flag --target-rule-set com um dos seguintes valores:

  • cel (--target-rule-set "cel"): aplica exclusões apenas a regras CEL personalizadas nessa regra de política de segurança.
  • * (--target-rule-set "*", exclusão global): aplica exclusões a todas as regras anexadas a essa política de segurança, incluindo regras CEL personalizadas e as que usam evaluatePreconfiguredWaf().

Nas políticas de segurança de back-end (globais e regionais), é possível configurar até 100 de cada um dos seguintes itens por destino (cel ou *):

  • Cabeçalhos da solicitação
  • Solicitar cookies
  • Parâmetros de consulta da solicitação
  • URIs de solicitação
  • Corpos de solicitação

Os operadores de campo disponíveis são:

  • EQUALS: corresponde se o valor do campo for igual ao valor especificado.
  • STARTS_WITH: corresponde se o valor do campo começar com o valor especificado.
  • ENDS_WITH: corresponde se o valor do campo terminar com o valor especificado.
  • CONTAINS: corresponde se o valor do campo contém o valor especificado.
  • EQUALS_ANY: corresponde se o valor do campo for qualquer valor.

Cabeçalhos da solicitação

É possível excluir cabeçalhos de solicitação específicos da inspeção durante a avaliação de regras usando os nomes deles no campo de exclusão.

Quando um cabeçalho de solicitação corresponde a uma exclusão, toda a entrada do cabeçalho (nome e valor) é removida do mapa request.headers antes da avaliação da regra.

Exemplo

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para excluir cabeçalhos da solicitação que começam com abc ou terminam com xyz da avaliação de regras (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc" \
    --request-header-to-exclude "op=ENDS_WITH,val=xyz"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança

Cookies da solicitação

É possível excluir cookies de solicitação específicos da inspeção durante a avaliação de regras usando os nomes deles no campo de exclusão.

Quando uma correspondência de cookie de solicitação corresponde a uma exclusão, toda a entrada do cookie (nome e valor) é excluída dos atributos da solicitação antes da avaliação da regra.

Exemplo

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para excluir cookies de solicitação que começam com session_ da avaliação de regras (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-cookie-to-exclude "op=STARTS_WITH,val=session_"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança

Parâmetros de consulta da solicitação

É possível excluir parâmetros de solicitação específicos da inspeção durante a avaliação de regras usando os nomes deles no campo de exclusão. A flag --request-query-param-to-exclude se aplica aos parâmetros de consulta de URL e aos parâmetros do corpo da solicitação analisados (JSON, dados de formulário e GraphQL).

Quando um parâmetro corresponde a uma exclusão, toda a entrada do parâmetro (chave e valor) é removida de request.params antes da avaliação da regra. Assim, has(request.params.param_name) é avaliado como false.

Para corpos de solicitação analisados, use a notação de ponto para segmentar campos aninhados e itens de matriz:

  • Campo de nível superior: val=user
  • Campo aninhado: val=user.name
  • Item da matriz: val=items.0.name

Exemplo

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para excluir o parâmetro de consulta de URL bad-param, o campo JSON aninhado user.name e o campo de item de matriz JSON items.0.name da avaliação de regras (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-query-param-to-exclude "op=EQUALS,val=bad-param" \
    --request-query-param-to-exclude "op=EQUALS,val=user.name" \
    --request-query-param-to-exclude "op=EQUALS,val=items.0.name"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança

URIs de solicitação

É possível excluir URIs da linha de solicitação (exceto dados de string de consulta) da inspeção durante a avaliação de regras.

Ao excluir um URI, todo o campo de URI é excluído da inspeção.

Exemplo

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para excluir URIs de solicitação que contêm /bad-path da avaliação de regras (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-uri-to-exclude "op=CONTAINS,val=/bad-path"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança

Corpos de solicitação

É possível excluir valores específicos do corpo da solicitação da inspeção durante a avaliação da regra.

Quando um corpo de solicitação corresponde a uma exclusão, o atributo request.body é excluído da avaliação da regra.

Exemplo

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para excluir corpos de solicitação que contêm bad-body-value da avaliação de regras (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-body-to-exclude "op=CONTAINS,val=bad-body-value"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança

Valores dos campos

É necessário especificar um valor de campo se usar um operador de campo diferente de EQUALS_ANY.

Para cabeçalhos da solicitação, cookies da solicitação e parâmetros de consulta da solicitação, o conjunto de caracteres permitido para os valores dos campos inclui os seguintes caracteres:

  • !, #, $, %, &, *, +, -, ., ^, _, `, | e ~
  • Caracteres alfabéticos de A a Z (maiúsculos e minúsculos)
  • Caracteres numéricos de 0 a 9

Para corpos de solicitação, o conjunto de caracteres permitido para valores de campo inclui todos os caracteres ASCII imprimíveis, exceto ', \`,(, and)`:

  • Espaço () e caracteres especiais: !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Caracteres alfabéticos de A a Z (maiúsculos e minúsculos)
  • Caracteres numéricos de 0 a 9

Ao aplicar exclusões para esses campos de solicitação, o valor do campo configurado (val=) é comparado sem diferenciar maiúsculas de minúsculas (após a transformação) com o seguinte para determinar quais entidades excluir da inspeção:

  • Cabeçalhos da solicitação: corresponde ao nome do cabeçalho (chave) para excluir todo o cabeçalho (nome e valor).
  • Cookies da solicitação: corresponde ao nome do cookie para excluir todo o cookie (nome e valor).
  • Parâmetros de consulta de solicitação: corresponde ao nome do parâmetro ou ao caminho JSON aninhado (chave) para excluir todo o parâmetro (chave e valor).
  • Corpos de solicitação: corresponde à string de conteúdo do corpo da solicitação para excluir todo o atributo request.body.

Não é necessário realizar codificação adicional se você quiser excluir um caractere específico que não esteja no conjunto de caracteres permitido.

No caso de URIs de solicitação, o valor do campo deve estar no formato de URI, obedecendo às seguintes restrições de componentes:

Componente Restrição
Esquema Permitido, mas restrito a http ou https
Host Permitido (pode ser um endereço IP)
Porta Permitido
Caminho Permitido
Consulta Não permitido
Fragment Não permitido

Ao aplicar exclusões para URIs de solicitação, os valores de campo configurados são comparados sem diferenciar maiúsculas de minúsculas (após a transformação) com os URIs da linha de solicitação, excluindo a string de consulta. Os URIs da linha de solicitação podem ser relativos ou absolutos. Considere isso ao configurar exclusões para URIs de solicitação.

Remover exclusões

Para remover exclusões de campos de solicitação de uma regra de política de segurança, use o comando remove-preconfig-waf-exclusion. É possível remover exclusões de campos específicas especificando as flags de exclusão de campo correspondentes ou omitir as flags de campo para remover todas as exclusões desse conjunto de regras de destino (cel ou *).

Exemplos

O exemplo a seguir atualiza a regra na política de segurança POLICY_NAME em PRIORITY para remover a exclusão de cabeçalhos da solicitação que começam com abc da avaliação de regras (cel):

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc"

O exemplo a seguir omite as flags de campo para remover todas as exclusões de campo de solicitação configuradas para avaliação de regras (cel) na regra em PRIORITY:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel"

Substitua:

  • PRIORITY: a prioridade da regra.
  • POLICY_NAME: o nome da política de segurança