É 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:
- Cabeçalhos das solicitações
- Cookies da solicitação
- Parâmetros de consulta da solicitação
- URIs de solicitação
- Corpos de solicitaçã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 usamevaluatePreconfiguredWaf().
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
AaZ(maiúsculos e minúsculos) - Caracteres numéricos de
0a9
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
AaZ(maiúsculos e minúsculos) - Caracteres numéricos de
0a9
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