Ajusta las reglas de la política de seguridad

Puedes ajustar las reglas excluyendo los campos de solicitud de la evaluación para reducir los falsos positivos.

Cuando configuras exclusiones para una regla, puedes excluir los siguientes campos de la inspección:

Excluye los campos de solicitud de la evaluación de reglas

Para configurar una exclusión de campo de solicitud para una regla, asocia la configuración con una regla de política de seguridad.

Estas reglas no usan IDs de regla. En su lugar, puedes configurar la marca --target-rule-set con uno de los siguientes valores:

  • cel (--target-rule-set "cel"): Aplica exclusiones solo a las reglas de CEL personalizadas en esa regla de política de seguridad.
  • * (--target-rule-set "*", exclusión global): Aplica exclusiones a todas las reglas adjuntas a esa política de seguridad, incluidas las reglas de CEL personalizadas y las que usan evaluatePreconfiguredWaf().

En las políticas de seguridad de backend (tanto globales como regionales), puedes configurar hasta 100 de cada uno de los siguientes elementos por destino (cel o *):

  • Encabezados de la solicitud
  • Cookies de solicitud
  • Parámetros de consulta de solicitud
  • URI de solicitud
  • Cuerpos de la solicitud

Los operadores de campo disponibles son los siguientes:

  • EQUALS: Coincide si el valor del campo es igual al valor especificado.
  • STARTS_WITH: Coincide si el valor del campo comienza con el valor especificado.
  • ENDS_WITH: Coincide si el valor del campo termina con el valor especificado.
  • CONTAINS: Coincide si el valor del campo contiene el valor especificado.
  • EQUALS_ANY: Coincide si el valor del campo es cualquier valor.

Encabezados de la solicitud

Puedes excluir encabezados de la solicitud específicos de la inspección durante la evaluación de reglas con sus nombres de encabezado en el campo de exclusión.

Cuando un encabezado de la solicitud coincide con una exclusión, se quita toda la entrada del encabezado (tanto su nombre como su valor) del mapa request.headers antes de la evaluación de la regla.

Ejemplo

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para excluir de la evaluación de reglas (cel) los encabezados de la solicitud que comienzan con abc o terminan con xyz:

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"

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad

Cookies de solicitud

Puedes excluir cookies de solicitud específicas de la inspección durante la evaluación de reglas usando sus nombres de cookie en el campo de exclusión.

Cuando una cookie de solicitud coincide con una exclusión, toda la entrada de la cookie (tanto su nombre como su valor) se excluye de los atributos de la solicitud antes de la evaluación de la regla.

Ejemplo

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para excluir las cookies de solicitud que comienzan con session_ de la evaluación de reglas (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_"

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad

Parámetros de consulta de solicitud

Puedes excluir parámetros de solicitud específicos de la inspección durante la evaluación de la regla con sus nombres de parámetro en el campo de exclusión. La marca --request-query-param-to-exclude se aplica a los parámetros de consulta de URL y a los parámetros analizados del cuerpo de la solicitud (JSON, datos de formulario y GraphQL).

Cuando un parámetro coincide con una exclusión, se quita toda la entrada del parámetro (tanto su clave como su valor) de request.params antes de la evaluación de la regla, por lo que has(request.params.param_name) se evalúa como false.

Para los cuerpos de solicitud analizados, puedes usar la notación de puntos para segmentar campos anidados y elementos de array:

  • Campo de nivel superior: val=user
  • Campo anidado: val=user.name
  • Elemento de array: val=items.0.name

Ejemplo

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para excluir el parámetro de consulta de URL bad-param, el campo JSON anidado user.name y el campo de elemento de array JSON items.0.name de la evaluación de reglas (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"

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad

URI de solicitud

Puedes excluir los URIs de la línea de solicitud (sin incluir los datos de la cadena de consulta) de la inspección durante la evaluación de la regla.

Cuando se excluye un URI, todo el campo de URI se excluye de la inspección.

Ejemplo

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para excluir los URIs de solicitud que contienen /bad-path de la evaluación de reglas (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"

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad

Cuerpos de la solicitud

Puedes excluir valores específicos del cuerpo de la solicitud de la inspección durante la evaluación de la regla.

Cuando el cuerpo de una solicitud coincide con una exclusión, el atributo request.body se excluye de la evaluación de la regla.

Ejemplo

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para excluir los cuerpos de solicitud que contienen bad-body-value de la evaluación de reglas (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"

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad

Valores de campo

Debes especificar un valor de campo si usas un operador de campo que no sea EQUALS_ANY.

En el caso de los encabezados de la solicitud, las cookies y los parámetros de consulta de la solicitud, el grupo de caracteres permitido para los valores de campo incluye los siguientes caracteres:

  • !, #, $, %, &, *, +, -, ., ^, _, `, |, ~
  • Caracteres alfabéticos de la A a la Z (tanto en mayúsculas como en minúsculas)
  • Caracteres de dígitos del 0 al 9

En el caso de los cuerpos de las solicitudes, el grupo de caracteres permitido para los valores de los campos incluye todos los caracteres ASCII imprimibles, excepto ', \`,(, and)`:

  • Espacio () y caracteres especiales: !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Caracteres alfabéticos de la A a la Z (tanto en mayúsculas como en minúsculas)
  • Caracteres de dígitos del 0 al 9

Cuando aplicas exclusiones para estos campos de solicitud, el valor del campo configurado (val=) se compara sin distinguir mayúsculas de minúsculas (después de la transformación) con lo siguiente para determinar qué entidades se deben excluir de la inspección:

  • Encabezados de la solicitud: Coincide con el nombre del encabezado (clave) para excluir todo el encabezado (nombre y valor).
  • Cookies de solicitud: Coincide con el nombre de la cookie para excluir toda la cookie (tanto el nombre como el valor).
  • Parámetros de consulta de la solicitud: Coincide con el nombre del parámetro o la ruta de acceso JSON anidada (clave) para excluir todo el parámetro (tanto la clave como el valor).
  • Cuerpos de la solicitud: Coincide con la cadena de contenido del cuerpo de la solicitud para excluir todo el atributo request.body.

No necesitas realizar una codificación adicional si deseas excluir un carácter específico que no esté en el grupo de caracteres permitido.

Para los URI de solicitud, el valor del campo se debe proporcionar en un formato de URI con las siguientes restricciones de componentes:

Componente Restricción
Esquema Permitida, pero restringida a http o https
Host Se permite (puede ser una dirección IP)
Puerto Permitido
Ruta Permitido
Consulta No permitido
Fragment No permitido

Cuando aplicas exclusiones para los URIs de solicitud, los valores de campo configurados se comparan sin distinguir mayúsculas de minúsculas (después de la transformación) con los URIs de la línea de solicitud, sin incluir la cadena de consulta. Los URI de la línea de solicitud pueden ser relativos o absolutos. Ten esto en cuenta cuando configures exclusiones para los URI de solicitud.

Quita exclusiones

Para quitar las exclusiones de campos de solicitud de una regla de política de seguridad, usa el comando remove-preconfig-waf-exclusion. Puedes quitar exclusiones de campos específicas indicando las marcas de exclusión de campos correspondientes o puedes omitir las marcas de campos para quitar todas las exclusiones de ese conjunto de reglas de destino (cel o *).

Ejemplos

En el siguiente ejemplo, se actualiza la regla en la política de seguridad POLICY_NAME en PRIORITY para quitar la exclusión de los encabezados de la solicitud que comienzan con abc de la evaluación de reglas (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"

En el siguiente ejemplo, se omiten las marcas de campo para quitar todas las exclusiones de campos de solicitud configuradas para la evaluación de reglas (cel) en la regla en PRIORITY:

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

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad de la regla.
  • POLICY_NAME: el nombre de la política de seguridad