Gérer les règles de sécurité Cloud Armor

Cette page explique comment gérer les stratégies de sécurité Google Cloud Armor et filtrer le trafic entrant vers votre application. Les stratégies de sécurité Cloud Armor contribuent à protéger vos applications et services Web contre les attaques par déni de service distribué (DDoS) et d'autres menaces provenant d'Internet. Pour appliquer une stratégie de sécurité solide, vous devez gérer vos règles de sécurité en les créant, en les testant et en les consolidant. Pour créer ou afficher des stratégies de sécurité, consultez Créer et afficher des stratégies de sécurité Cloud Armor.

Gérer les stratégies de sécurité

Les sections suivantes expliquent comment lister, mettre à jour, supprimer ou tester vos stratégies de sécurité.

Lister les stratégies de sécurité

Suivez les étapes de cette section pour lister les stratégies de sécurité Cloud Armor dans votre projet.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Pour afficher une règle, cliquez sur son nom dans la liste des règles.

gcloud

gcloud compute security-policies list

Exemple :

gcloud compute security-policies list

Résultat :

NAME: my-policy
REGION: us-central1

Pour en savoir plus, consultez la page gcloud compute security-policies list.

Mettre à jour les stratégies de sécurité

Les étapes de cette section décrivent comment mettre à jour une stratégie de sécurité Cloud Armor. Vous pouvez modifier la description de la stratégie, la règle par défaut ou le service de backend cible, ou ajouter des règles.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Recherchez le nom de la règle que vous souhaitez mettre à jour dans la liste des règles, puis cliquez sur Menu pour cette règle.

    • Pour modifier la description ou l'action de règle par défaut, sélectionnez Modifier, apportez les modifications souhaitées, puis cliquez sur Mettre à jour.
    • Pour ajouter une règle, sélectionnez Ajouter une règle, puis suivez les étapes décrites dans Ajouter des règles à une stratégie de sécurité.
    • Pour remplacer le service de backend cible, sélectionnez Appliquer la stratégie à la cible, cliquez sur Ajouter une cible, sélectionnez une cible, puis cliquez sur Ajouter.

gcloud

Pour mettre à jour une stratégie de sécurité, suivez les étapes Google Cloud CLI suivantes :

Supprimer des stratégies de sécurité

Cette section explique comment supprimer une stratégie de sécurité Cloud Armor. Supprimez tous les services de backend de la règle avant de la supprimer.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cochez la case à côté de la règle que vous souhaitez supprimer.

  3. En haut à droite de la page, cliquez sur Supprimer.

gcloud

Utilisez gcloud compute security-policies delete NAME. Remplacez NAME par le nom de la stratégie de sécurité :

gcloud compute security-policies delete NAME

Tester les stratégies de sécurité

Nous vous recommandons de déployer toutes les nouvelles règles en mode aperçu, puis d'examiner vos journaux de requêtes pour vérifier que les stratégies et les règles se comportent comme prévu.

Gérer les règles de stratégie de sécurité

Les sections suivantes décrivent comment lister, ajouter, modifier ou supprimer des règles de stratégie de sécurité.

Lister les règles d'une stratégie de sécurité

Suivez les étapes de cette section pour lister les règles d'une stratégie de sécurité Cloud Armor.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité spécifique. La page Détails de la règle affiche les règles de la stratégie dans l'onglet Règles.

gcloud

Utilisez la commande gcloud suivante pour lister toutes les règles d'une stratégie de sécurité :

gcloud compute security-policies describe NAME \

Utilisez la commande gcloud suivante pour répertorier toutes les règles d'une seule stratégie de sécurité dans une région spécifiée, ainsi qu'une description de la stratégie :

gcloud compute security-policies describe NAME \
  --region REGION

Utilisez la commande gcloud suivante pour décrire une règle :

gcloud compute security-policies rules describe PRIORITY \
    --security-policy POLICY_NAME

Par exemple, la commande suivante décrit la règle ayant la priorité 1000 dans la stratégie de sécurité my-policy :

gcloud compute security-policies rules describe 1000 \
    --security-policy my-policy

Résultat :

action: deny(403)
description: block traffic from 192.0.2.0/24 and 198.51.100.0/24
kind: compute#securityPolicyRule
match:
  srcIpRanges:
  - '192.0.2.0/24'
  - '198.51.100.0/24'
preview: false
priority: 1000

Pour en savoir plus, consultez la page gcloud compute security-policies describe.

Ajouter des règles à une stratégie de sécurité

Suivez les étapes de cette section pour ajouter des règles à une stratégie de sécurité Cloud Armor.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité pour ouvrir la page Détails de la stratégie.

  3. Au milieu de la page, cliquez sur l'onglet Règles.

  4. Cliquez sur Ajouter une règle.

  5. Facultatif : saisissez une description de la règle.

  6. Sélectionnez le mode :

    • Mode de base : autorisez ou refusez le trafic en fonction d'adresses IP ou de plages d'adresses IP.
    • Mode avancé : autorisez ou refusez le trafic en fonction d'expressions de règle.
  7. Dans le champ Correspondance, spécifiez les conditions auxquelles la règle s'applique :

    • Mode de base : saisissez une (1) à 10 plages d'adresses IP à mettre en correspondance dans la règle. Vous pouvez ajouter jusqu'à 10 plages d'adresses IP. Pour connaître les limites, consultez Quotas et limites de Cloud Armor.

    • Mode avancé :

    • L'expression suivante correspond aux requêtes provenant de l'adresse IP 1.2.3.4 qui contiennent la chaîne example dans l'en-tête User-Agent :

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')
      
    • L'expression suivante met en correspondance les requêtes qui comportent un cookie ayant une valeur spécifique :

          has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        

    • L'expression suivante correspond aux requêtes provenant de la région AU :

          origin.region_code == 'AU'
        

    • L'expression suivante met en correspondance les requêtes provenant de la région AU qui ne sont pas comprises dans la plage d'adresses IP spécifiée :

          origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
        

    • L'expression suivante met en correspondance les requêtes si l'URI correspond à une expression régulière :

          request.path.matches('/example_path/')
        

    • L'expression suivante correspond aux requêtes si l'en-tête user-id contient une valeur encodée en base64 qui, une fois décodée, contient une chaîne spécifique :

          has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        

    • L'expression suivante utilise un ensemble d'expressions préconfiguré pour mettre en correspondance les attaques SQLi :

          evaluatePreconfiguredWaf('sqli-stable')
        

  8. Dans la liste Action, sélectionnez Autoriser ou Refuser.

  9. Si vous configurez une règle de refus, sélectionnez un message État de refus.

  10. Pour activer le mode Aperçu pour la règle, sélectionnez Activer.

  11. Dans le champ Priorité, saisissez un entier positif.

  12. Cliquez sur Ajouter.

gcloud

Exécutez la commande gcloud compute security-policies rules create PRIORITY. Remplacez PRIORITY par la priorité de la règle dans la stratégie :

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME \
    --description DESCRIPTION \
    --src-ip-ranges IP_RANGES | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ] \
    --preview

Par exemple, la commande suivante ajoute une règle avec une priorité de 1000 pour bloquer le trafic provenant des plages d'adresses IP 192.0.2.0/24 et 198.51.100.0/24 :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
    --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
    --action "deny-403"

Utilisez le flag --expression pour spécifier une condition. La commande suivante ajoute une règle pour autoriser le trafic provenant de l'adresse IP 1.2.3.4 qui contient la chaîne example dans l'en-tête User-Agent :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
    --action allow \
    --description "Block User-Agent 'example'"

La commande suivante ajoute une règle pour bloquer les requêtes si leur cookie contient une valeur spécifique :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
    --action deny-403 \
    --description "Cookie Block"

La commande suivante ajoute une règle pour bloquer les requêtes provenant de la région AU :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == 'AU'" \
    --action deny-403 \
    --description "AU block"

La commande suivante ajoute une règle pour bloquer les requêtes provenant de la région AU et non comprises dans la plage d'adresses IP spécifiée :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
    --action deny-403 \
    --description "country and IP block"

La commande suivante ajoute une règle pour bloquer les requêtes dont l'URI correspond à une expression régulière :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "request.path.matches('/example_path/')" \
    --action deny-502 \
    --description "regex block"

La commande suivante ajoute une règle pour bloquer les requêtes si la valeur décodée en base64 de l'en-tête user-id contient une valeur spécifique :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
    --action deny-403 \
    --description "country and IP block"

La commande suivante ajoute une règle qui utilise un ensemble d'expressions préconfiguré pour atténuer les attaques SQLi :

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "evaluatePreconfiguredWaf('sqli-stable')" \
    --action deny-403

Mettre à jour une seule règle dans une stratégie de sécurité

Cette section explique comment mettre à jour une seule règle dans une stratégie de sécurité Cloud Armor. Pour mettre à jour de façon atomique plusieurs règles, consultez Mettre à jour de façon atomique plusieurs règles dans une stratégie de sécurité.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité pour ouvrir la page Détails de la stratégie.

  3. Au milieu de la page, cliquez sur l'onglet Règles.

  4. À côté de la règle que vous souhaitez mettre à jour, cliquez sur Modifier. La page Modifier la règle s'affiche.

  5. Apportez les modifications souhaitées, puis cliquez sur Mettre à jour.

gcloud

Utilisez la commande suivante pour mettre à jour une règle. Vous ne pouvez mettre à jour qu'une seule stratégie de sécurité à la fois :

gcloud compute security-policies rules update PRIORITY [ \
    --security-policy POLICY_NAME  \
    --description DESCRIPTION  \
    --src-ip-ranges IP_RANGES  | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
    --preview
  ]
  

Par exemple, la commande suivante met à jour une règle ayant la priorité 1111 pour autoriser le trafic provenant de la plage d'adresses IP 192.0.2.0/24 :

gcloud compute security-policies rules update 1111 \
    --security-policy my-policy \
    --description "allow traffic from 192.0.2.0/24" \
    --src-ip-ranges "192.0.2.0/24" \
    --action "allow"

Pour en savoir plus sur la commande précédente, consultez gcloud compute security-policies rules update.

Pour mettre à jour la priorité d'une règle, utilisez l'API REST. Consultez securityPolicies.patchRule.

Utiliser le générateur de conditions de correspondance

Le générateur de conditions de correspondance est une interface visuelle de la console Cloud de Confiance qui vous aide à créer des expressions de règles Cloud Armor complexes sans écrire de code CEL (Common Expression Language). Au lieu d'écrire du code, vous pouvez utiliser l'interface utilisateur structurée du générateur pour combiner des conditions et regrouper la logique. Cela peut vous aider à éviter les erreurs de syntaxe et à mieux visualiser la structure de votre règle. Le générateur est compatible avec les listes plates et la logique imbriquée jusqu'à cinq niveaux d'expressions. Utilisez cet outil lorsque vous configurez des règles pour protéger les backends multicloud ou les déploiements hybrides, où vous devrez peut-être inspecter des attributs de requête spécifiques avant de router le trafic.

Fonctionnalités du générateur de conditions de correspondance

Le générateur de conditions de correspondance inclut les fonctionnalités suivantes :

  • Logique et imbrication : combinez plusieurs conditions à l'aide des opérateurs AND et OR. L'outil de création permet de regrouper et d'imbriquer jusqu'à cinq expressions.
  • Transformations de chaînes : pour les attributs basés sur des chaînes (tels que request.path ou request.headers), appliquez des transformations pour normaliser les données avant l'évaluation. Voici quelques exemples de transformations compatibles :
    • Minuscules et majuscules
    • Décodage Base64
    • Décodage d'URL et Décodage d'URL (Unicode)
    • Convertir UTF-8 en Unicode
  • Analyse bidirectionnelle : basculez entre le générateur de conditions de correspondance visuel et l'éditeur de conditions de correspondance en texte brut. L'UI analyse le code CEL brut et le transforme automatiquement en blocs visuels.
  • Prise en charge des fonctions : le générateur fournit des commandes d'interface utilisateur pour les expressions basées sur des fonctions, telles que les règles WAF préconfigurées, les groupes d'adresses et Threat Intelligence.

Limites

Le générateur de conditions de correspondance est l'interface par défaut pour créer des règles avancées. Si une expression contient une logique non acceptée (comme des macros inconnues), le générateur est désactivé. Dans ce cas, utilisez le texte brut dans l'éditeur de conditions de correspondance pour modifier la règle.

De plus, la disponibilité de certaines expressions dans le générateur dépend du niveau Google Cloud Armor Enterprise de votre projet et du type de règle de sécurité.

Mettre à jour de façon atomique plusieurs règles dans une stratégie de sécurité

Vous pouvez utiliser la fonctionnalité de mise à jour atomique pour appliquer des modifications à plusieurs règles en une seule opération. Les mises à jour de règles individuelles peuvent entraîner des comportements inattendus, comme des erreurs, car les anciennes et les nouvelles règles peuvent se chevaucher pendant une courte période.

Pour mettre à jour de façon atomique plusieurs règles, exportez la stratégie de sécurité actuelle vers un fichier JSON ou YAML, puis modifiez-la. Utilisez le fichier modifié pour créer une stratégie de sécurité, puis remplacez la stratégie de sécurité dans les services de backend.

gcloud

  1. Exportez la stratégie à mettre à jour, comme illustré dans l'exemple suivant :

    gcloud compute security-policies export my-policy \
        --file-name my-file \
        --file-format yaml
    

    La stratégie exportée doit ressembler à l'exemple suivant :

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  2. Utilisez un éditeur de texte pour modifier la règle. Par exemple, vous pouvez modifier les priorités des règles existantes et ajouter une règle :

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-new-rule
          match:
            config:
              srcIpRanges:
              - '1.2.3.1'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 10
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 11
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  3. Créez une stratégie de sécurité Cloud Armor, puis spécifiez le nom et le format du fichier modifié, comme indiqué dans l'exemple suivant :

    gcloud compute security-policies create new-policy \
        --file-name modified-policy \
        --file-format yaml
    
  4. Supprimez l'ancienne stratégie de sécurité du service de backend pertinent, comme indiqué dans l'exemple suivant :

    gcloud compute backend-services update my-backend \
        --security-policy ""
    
  5. Ajoutez la nouvelle stratégie de sécurité au service de backend, comme indiqué dans l'exemple suivant :

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. Si l'ancienne stratégie n'est pas utilisée, supprimez-la :

    gcloud compute security-policies delete my-policy
    

Supprimer des règles d'une stratégie de sécurité

Suivez les étapes de cette section pour supprimer des règles d'une stratégie de sécurité Cloud Armor.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité pour ouvrir la page Détails de la stratégie.

  3. Au milieu de la page, dans l'onglet Règles, cochez la case à côté de la règle que vous souhaitez supprimer.

  4. Cliquez sur Supprimer.

gcloud

Utilisez la commande suivante pour supprimer une règle. Vous ne pouvez modifier qu'une seule stratégie de sécurité à la fois, mais vous pouvez en supprimer plusieurs en même temps :

gcloud compute security-policies rules delete PRIORITY [...] [
    --security-policy POLICY_NAME \
  ]

Exemple :

gcloud compute security-policies rules delete 1000 \
    --security-policy my-policy

Associer et supprimer des stratégies de sécurité

Les sections suivantes décrivent comment associer et supprimer des règles de sécurité.

Associer une stratégie de sécurité à un service de backend

Suivez les étapes de cette section pour associer une stratégie de sécurité Cloud Armor à un service de backend. Vous pouvez associer une stratégie de sécurité à plusieurs services de backend, mais un service de backend ne peut être associé qu'à un seul type de stratégie de sécurité.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité pour ouvrir la page Détails de la stratégie.

  3. Au milieu de la page, cliquez sur l'onglet Cibles.

  4. Cliquez sur Appliquer la règle à la nouvelle cible.

  5. Cliquez sur Ajouter une cible.

  6. Dans la liste Cible, sélectionnez une cible, puis cliquez sur Ajouter.

gcloud

Lorsque vous associez une stratégie de sécurité de backend à un service de backend, utilisez la commande gcloud compute backend-services et le flag --security-policy :

gcloud compute backend-services update my-backend \
    --security-policy my-policy

Lorsque vous associez une stratégie de sécurité périphérique à un service de backend, utilisez la commande gcloud compute backend-services et le flag --edge-security-policy :

gcloud compute backend-services update my-backend \
    --edge-security-policy my-policy

Supprimer une stratégie de sécurité d'un service de backend

Suivez les étapes de cette section pour supprimer une stratégie de sécurité Cloud Armor d'un service de backend.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Règles Cloud Armor.

    Accéder à la page Stratégies Cloud Armor

  2. Cliquez sur le nom de la stratégie de sécurité pour ouvrir la page Détails de la stratégie.

  3. Au milieu de la page, cliquez sur l'onglet Cibles.

  4. Sélectionnez le service de backend cible dont vous supprimez la stratégie.

  5. Cliquez sur Supprimer.

  6. Dans le message Supprimer la cible, cliquez sur Supprimer.

gcloud

Lorsque vous supprimez une stratégie de sécurité de backend, utilisez la commande gcloud compute backend-services et le flag --security-policy :

gcloud compute backend-services update my-backend \
    --security-policy ""

Lorsque vous supprimez une stratégie de sécurité périphérique, utilisez la commande gcloud compute backend-services et le flag --edge-security-policy :

gcloud compute backend-services update my-backend \
    --edge-security-policy ""