Ajuster les règles de stratégie de sécurité

Vous pouvez ajuster les règles en excluant des champs de requête de l'évaluation afin de réduire les faux positifs.

Lorsque vous configurez des exclusions pour une règle, vous pouvez exclure les champs suivants de l'inspection :

Exclure des champs de requête de l'évaluation des règles

Pour configurer une exclusion de champ de requête pour une règle, associez la configuration à une règle de stratégie de sécurité.

Ces règles n'utilisent pas d'ID de règle. À la place, vous pouvez configurer l'option --target-rule-set avec l'une des valeurs suivantes :

  • cel (--target-rule-set "cel") : applique des exclusions uniquement aux règles CEL personnalisées de cette règle de stratégie de sécurité.
  • * (--target-rule-set "*", exclusion globale) : applique des exclusions à toutes les règles associées à cette stratégie de sécurité, y compris les règles CEL personnalisées et celles qui utilisent evaluatePreconfiguredWaf().

Sur les stratégies de sécurité de backend (globales et régionales), vous pouvez configurer jusqu'à 100 éléments de chacun des types suivants par cible (cel ou *) :

  • En-têtes de requête
  • Cookies de requête
  • Paramètres de requête de la requête
  • Demander les URI
  • Corps de la requête

Les opérateurs de champ disponibles sont les suivants :

  • EQUALS : correspond si la valeur du champ est égale à la valeur spécifiée.
  • STARTS_WITH : correspond si la valeur du champ commence par la valeur spécifiée.
  • ENDS_WITH : correspond si la valeur du champ se termine par la valeur spécifiée.
  • CONTAINS : correspond si la valeur du champ contient la valeur spécifiée.
  • EQUALS_ANY : correspond si la valeur du champ est une valeur.

En-têtes de requête

Vous pouvez exclure des en-têtes de requête spécifiques de l'inspection lors de l'évaluation des règles en utilisant leurs noms d'en-tête dans le champ d'exclusion.

Lorsqu'un en-tête de requête correspond à une exclusion, l'intégralité de l'entrée d'en-tête (son nom et sa valeur) est supprimée de la carte request.headers avant l'évaluation de la règle.

Exemple

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour exclure les en-têtes de requête commençant par abc ou se terminant par xyz de l'évaluation des règles (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"

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité

Cookies de requête

Vous pouvez exclure des cookies de requête spécifiques de l'inspection lors de l'évaluation des règles en utilisant leur nom dans le champ d'exclusion.

Lorsqu'un cookie de requête correspond à une exclusion, l'intégralité de l'entrée du cookie (son nom et sa valeur) est exclue des attributs de la requête avant l'évaluation de la règle.

Exemple

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour exclure les cookies de requête commençant par session_ de l'évaluation des règles (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_"

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité

Paramètres de requête de la requête

Vous pouvez exclure des paramètres de requête spécifiques de l'inspection lors de l'évaluation des règles en utilisant leurs noms de paramètres dans le champ d'exclusion. L'option --request-query-param-to-exclude s'applique à la fois aux paramètres de requête d'URL et aux paramètres de corps de requête analysés (JSON, données de formulaire et GraphQL).

Lorsqu'un paramètre correspond à une exclusion, l'intégralité de l'entrée du paramètre (sa clé et sa valeur) est supprimée de request.params avant l'évaluation de la règle. Par conséquent, has(request.params.param_name) est évalué à false.

Pour les corps de requête analysés, vous pouvez utiliser la notation par points pour cibler les champs imbriqués et les éléments de tableau :

  • Champ de premier niveau : val=user
  • Champ imbriqué : val=user.name
  • Élément du tableau : val=items.0.name

Exemple

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour exclure le paramètre de requête d'URL bad-param, le champ JSON imbriqué user.name et le champ d'élément de tableau JSON items.0.name de l'évaluation des règles (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"

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité

Demander les URI

Vous pouvez exclure les URI de la ligne de requête (à l'exclusion des données de la chaîne de requête) de l'inspection lors de l'évaluation de la règle.

Lorsque vous excluez un URI, l'intégralité du champ d'URI est exclue de l'inspection.

Exemple

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour exclure les URI de requête contenant /bad-path de l'évaluation des règles (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"

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité

Corps de la requête

Vous pouvez exclure de l'inspection des valeurs spécifiques du corps de la requête lors de l'évaluation des règles.

Lorsqu'un corps de requête correspond à une exclusion, l'attribut request.body est exclu de l'évaluation de la règle.

Exemple

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour exclure les corps de requête contenant bad-body-value de l'évaluation des règles (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"

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité

Valeurs des champs

Vous devez spécifier une valeur de champ si vous utilisez un opérateur de champ autre que EQUALS_ANY.

Pour les en-têtes de requête, les cookies et les paramètres de requête, le jeu de caractères autorisés pour les valeurs de champ inclut les caractères suivants :

  • !, #, $, %, &, *, +, -, ., ^, _, `, |, ~
  • Caractères alphabétiques A à Z (minuscules et majuscules)
  • Caractères numériques 0 à 9

Pour les corps de requête, le jeu de caractères autorisé pour les valeurs de champ inclut tous les caractères ASCII imprimables, à l'exception de ', \`,(, and) :

  • Espace () et caractères spéciaux : !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Caractères alphabétiques A à Z (minuscules et majuscules)
  • Caractères numériques 0 à 9

Lorsque vous appliquez des exclusions pour ces champs de requête, la valeur de champ configurée (val=) est comparée sans tenir compte de la casse (après transformation) aux éléments suivants pour déterminer les entités à exclure de l'inspection :

  • En-têtes de requête : correspond au nom de l'en-tête (clé) pour exclure l'en-tête entier (nom et valeur).
  • Cookies de requête : correspond au nom du cookie pour exclure l'intégralité du cookie (nom et valeur).
  • Paramètres de requête : correspond au nom du paramètre ou au chemin d'accès JSON imbriqué (clé) pour exclure l'intégralité du paramètre (clé et valeur).
  • Corps de requête : correspond à la chaîne de contenu du corps de la requête pour exclure l'intégralité de l'attribut request.body.

Vous n'avez pas besoin d'effectuer un encodage supplémentaire si vous souhaitez exclure un caractère spécifique qui ne figure pas dans le jeu de caractères autorisés.

Pour les URI de la demande, la valeur du champ doit être fournie au format URI, avec les restrictions de composants suivantes :

Composant Restriction
Schéma Autorisé, mais limité à http ou https
Hôte Autorisé (peut être une adresse IP)
Port Autorisé
Chemin d'accès Autorisé
Requête Non autorisé
Fragment Non autorisé

Lorsque vous appliquez des exclusions pour les URI de requête, les valeurs de champ configurées sont comparées sans tenir compte de la casse (après transformation) aux URI de la ligne de requête, à l'exclusion de la chaîne de requête. Les URI de la ligne de requête peuvent être relatifs ou absolus. Tenez-en compte lorsque vous configurez des exclusions pour les URI de requête.

Supprimer les exclusions

Pour supprimer les exclusions de champs de requête d'une règle de stratégie de sécurité, utilisez la commande remove-preconfig-waf-exclusion. Vous pouvez supprimer des exclusions de champs spécifiques en spécifiant les options d'exclusion de champs correspondantes, ou omettre les options de champs pour supprimer toutes les exclusions de cet ensemble de règles cible (cel ou *).

Exemples

L'exemple suivant met à jour la règle dans la stratégie de sécurité POLICY_NAME à PRIORITY pour supprimer l'exclusion des en-têtes de requête commençant par abc de l'évaluation des règles (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"

L'exemple suivant omet les options de champ pour supprimer toutes les exclusions de champs de requête configurées pour l'évaluation des règles (cel) sur la règle à l'emplacement PRIORITY :

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

Remplacez les éléments suivants :

  • PRIORITY : priorité de la règle.
  • POLICY_NAME : nom de la stratégie de sécurité