Configurer les règles de sécurité Google Cloud Armor

Suivez ces instructions pour créer des stratégies de sécurité Google Cloud Armor afin de filtrer le trafic entrant destiné aux équilibreurs de charge HTTP(S) externes. Pour obtenir des informations conceptuelles sur les règles de sécurité, consultez la présentation des stratégies de sécurité Google Cloud Armor.

Pour en savoir plus sur la configuration de Google Cloud Armor sur Google Kubernetes Engine (GKE), consultez la stratégie de sécurité Google Cloud Armor dans la section Configurer les fonctionnalités Ingress via des paramètres BackendConfig.

Avant de commencer

Avant de configurer des règles de sécurité, procédez comme suit :

  • Assurez-vous de bien connaître les concepts d'équilibrage de charge HTTP(S).

  • Examinez vos services de backend existants pour déterminer ceux qui ne sont pas déjà associés à une stratégie de sécurité. Ces services de backend et leurs backends associés ne sont pas protégés par Google Cloud Armor. Pour ajouter la protection fournie par Google Cloud Armor, suivez les instructions du présent document afin d'associer une stratégie de sécurité nouvellement créée ou existante au service de backend.

Configurer les autorisations IAM pour les stratégies de sécurité Google Cloud Armor

Les opérations suivantes nécessitent le rôle IAM Administrateur de sécurité Compute (roles/compute.securityAdmin) :

  • configurer, modifier, mettre à jour et supprimer une stratégie de sécurité Google Cloud Armor
  • Méthodes d'API autorisées :
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Un utilisateur disposant du rôle d'administrateur réseau Compute (roles/compute.networkAdmin) peut effectuer les opérations suivantes :

  • Définir une stratégie de sécurité Google Cloud Armor pour un service de backend
  • Méthodes d'API autorisées :
    • BackendServices setSecurityPolicy

Les utilisateurs disposant des rôles d'administrateur de sécurité et d'administrateur de réseaux peuvent afficher les stratégies de sécurité Google Cloud Armor à l'aide des méthodes d'API SecurityPolicies get, list et getRule.

Configurer les autorisations IAM pour les rôles personnalisés

Le tableau suivant répertorie les autorisations standards des rôles IAM, ainsi que les méthodes d'API associées.

Autorisation IAM Méthodes d'API
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

Configurer des stratégies de sécurité pour l'équilibrage de charge HTTP(S)

Vous trouverez ci-dessous les principales étapes à suivre pour configurer des stratégies de sécurité Google Cloud Armor afin d'activer des règles qui autorisent ou refusent le trafic vers des équilibreurs de charge HTTP(S) externes :

  1. Créez une stratégie de sécurité Google Cloud Armor.
  2. Ajoutez des règles à la stratégie de sécurité en fonction de listes d'adresses IP, d'expressions personnalisées ou d'ensembles d'expressions préconfigurés.
  3. Associez la stratégie de sécurité à un service de backend de l'équilibreur de charge HTTP(S) externe dont vous souhaitez contrôler l'accès.
  4. Mettez à jour la stratégie de sécurité si nécessaire.

Dans l'exemple suivant, vous créez deux stratégies de sécurité Google Cloud Armor et les appliquez à différents services de backend.

Exemple dans lequel deux stratégies de sécurité sont appliquées à différents services de backend.
Exemple dans lequel deux stratégies de sécurité sont appliquées à différents services de backend (cliquez pour agrandir)

Dans l'exemple, les stratégies de sécurité Google Cloud Armor sont les suivantes :

  • mobile-clients-policy s'applique aux utilisateurs externes de vos services games.
  • internal-users-policy s'applique à l'équipe test-network de votre organisation.

Vous appliquez mobile-clients-policy au service games, dont le service de backend est appelé games, et vous appliquez internal-users-policy au service test interne pour l'équipe de test, dont le service de backend correspondant est appelé test-network.

Si les instances backend d'un service de backend se trouvent dans plusieurs régions, la stratégie de sécurité Google Cloud Armor associée au service est applicable aux instances de toutes les régions. Dans l'exemple précédent, la stratégie de sécurité mobile-clients-policy s'applique aux instances 1, 2, 3 et 4 dans us-central, ainsi qu'aux instances 5 et 6 dans us-east.

Créer l'exemple

Suivez ces instructions pour créer l'exemple de configuration décrit dans la section précédente.

Console

Configurez la stratégie de sécurité pour les utilisateurs externes :

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles, cliquez sur Créer une règle.

  3. Dans le champ Nom, saisissez mobile-clients-policy.

  4. Dans le champ Description, saisissez Policy for external users.

  5. Dans le champ Action de règle par défaut, sélectionnez Refuser.

  6. Dans le champ État de refus, sélectionnez 404 (introuvable).

  7. Cliquez sur Next step (Étape suivante).

Ajouter d'autres règles :

  1. Cliquez sur Add rule (Ajouter une règle).
  2. Dans le champ Description, saisissez allow traffic from 192.0.2.0/24.
  3. Dans le champ Mode, sélectionnez Mode de base (adresses/plages d'adresses IP uniquement).
  4. Dans le champ Correspondance, saisissez 192.0.2.0/24.
  5. Dans le champ Action, sélectionnez Autoriser.
  6. Dans le champ Priorité, saisissez 1000.
  7. Cliquez sur OK.
  8. Cliquez sur Next step (Étape suivante).

Appliquer les règles aux cibles :

  1. Cliquez sur Add Target (Ajouter une cible).
  2. Dans la liste Cible, sélectionnez une cible.
  3. Cliquez sur OK.
  4. Cliquez sur Créer une règle.

Vous pouvez également activer Adaptive Protection :

  1. Pour activer Adaptive Protection, cochez la case Activer.

Configurez la stratégie de sécurité pour les utilisateurs internes :

  1. Sur la page Règles, cliquez sur Créer une règle.
  2. Dans le champ Nom, saisissez internal-users-policy.
  3. Dans le champ Description, saisissez Policy for internal test users.
  4. Dans le champ Action de règle par défaut, sélectionnez Refuser.
  5. Dans le champ État de refus, sélectionnez 502 (passerelle incorrecte).
  6. Cliquez sur Next step (Étape suivante).

Ajouter d'autres règles :

  1. Cliquez sur Add rule (Ajouter une règle).
  2. Dans le champ Description, saisissez allow traffic from 198.51.100.0/24.
  3. Dans le champ Mode, sélectionnez Mode de base (adresses/plages d'adresses IP uniquement).
  4. Dans le champ Correspondance, saisissez 198.51.100.0/24.
  5. Dans le champ Action, sélectionnez Autoriser.
  6. Dans le champ Aperçu uniquement, cochez la case Activer.
  7. Dans le champ Priorité, saisissez 1000.
  8. Cliquez sur OK.
  9. Cliquez sur Next step (Étape suivante).

Appliquer les règles aux cibles :

  1. Cliquez sur Add Target (Ajouter une cible).
  2. Dans la liste Cible, sélectionnez une cible.
  3. Cliquez sur OK.
  4. Cliquez sur Créer une règle.

gcloud

  1. Créez les stratégies de sécurité Google Cloud Armor :

    gcloud compute security-policies create mobile-clients-policy \
        --description "policy for external users"
    
    gcloud compute security-policies create internal-users-policy \
        --description "policy for internal test users"
    
  2. Remplacez les règles par défaut par les stratégies de sécurité pour refuser le trafic :

    gcloud compute security-policies rules update 2147483647 \
        --security-policy mobile-clients-policy \
        --action "deny-404"
    
    gcloud compute security-policies rules update 2147483647 \
        --security-policy internal-users-policy \
        --action "deny-502"
    
  3. Ajoutez des règles aux stratégies de sécurité :

    gcloud compute security-policies rules create 1000 \
        --security-policy mobile-clients-policy \
        --description "allow traffic from 192.0.2.0/24" \
        --src-ip-ranges "192.0.2.0/24" \
        --action "allow"
    
    gcloud compute security-policies rules create 1000 \
        --security-policy internal-users-policy \
        --description "allow traffic from 198.51.100.0/24" \
        --src-ip-ranges "198.51.100.0/24" \
        --action "allow"
    
  4. Associez les stratégies de sécurité aux services de backend :

    gcloud compute backend-services update games \
        --security-policy mobile-clients-policy
    
    gcloud compute backend-services update test-network \
        --security-policy internal-users-policy
    
  5. Vous pouvez également activer Adaptive Protection :

    gcloud compute security-policies update mobile-clients-policy \
       --enable-layer7-ddos-defense
    
    gcloud compute security-policies update internal-users-policy \
       --enable-layer7-ddos-defense
    

Configurer des stratégies, des règles et des expressions de sécurité

Vous pouvez configurer des règles, des expressions et des stratégies de sécurité Google Cloud Armor à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de l'API REST.

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.

Exemples d'expressions

Vous trouverez ci-dessous des exemples d'expressions. Pour en savoir plus sur les expressions, consultez la documentation de référence sur le langage des règles personnalisées Google Cloud Armor.

Si vous configurez une règle ou une expression qui utilise des codes de pays ou de région ISO 3166-1 alpha 2, Google Cloud Armor traite chaque code indépendamment. Les règles et expressions Google Cloud Armor utilisent explicitement ces codes de région pour autoriser ou refuser les requêtes.

  • L'expression suivante met en correspondance les requêtes provenant de l'adresse IP 1.2.3.4 et contient la chaîne Godzilla 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('Godzilla')
    
  • 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 met en correspondance les 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('/bad_path/')
    
  • L'expression suivante met en correspondance les requêtes si la valeur décodée en base64 de l'en-tête user-id contient une valeur 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 :

    evaluatePreconfiguredExpr('sqli-stable')
    

Utiliser l'analyse JSON

Vous pouvez activer ou désactiver l'analyse du contenu du corps JSON des requêtes POST pour chaque stratégie de sécurité. Lorsque l'en-tête Content-Type est défini sur application/json, utilisez l'option --json-parsing dans l'outil de ligne de commande gcloud.

Cette option est désactivée par défaut. La syntaxe de l'option est la suivante :

--json-parsing=[STANDARD | DISABLED]

L'option est disponible uniquement avec gcloud compute security-policies update. Cette option ne vous permet pas de créer une stratégie de sécurité, sauf si vous créez une stratégie de sécurité dans un fichier, puis que vous importez ce fichier. Pour en savoir plus, consultez la section Importer des stratégies de sécurité.

Pour en savoir plus sur l'analyse JSON, consultez la section Analyse JSON et journalisation détaillée.

Utiliser la journalisation détaillée

Vous pouvez configurer le niveau de journalisation Google Cloud Armor pour permettre une journalisation plus détaillée de chaque stratégie de sécurité à l'aide de l'option --log-level de l'outil gcloud.

Cette option est désactivée par défaut. La syntaxe de l'option est la suivante :

--log-level=[NORMAL | VERBOSE]

L'option est disponible uniquement avec gcloud compute security-policies update. Cette option ne vous permet pas de créer une stratégie de sécurité, sauf si vous créez une stratégie de sécurité dans un fichier, puis que vous importez ce fichier. Pour en savoir plus, consultez la section Importer des stratégies de sécurité.

Pour en savoir plus sur la journalisation détaillée, consultez la section Analyse JSON et journalisation détaillée.

Configurer des règles de limitation du débit

Cette section contient des informations sur la configuration des règles de Google Cloud Armor de manière à appliquer des limites de débit par client en configurant une action de limitation de débit ou d'exclusion basée sur le taux.

Règles de limitation du débit

Les règles de limitation du débit ont le format suivant dans l'outil gcloud :

gcloud beta compute security-policies rules create PRIORITY
   --security-policy=SECURITY_POLICY
   (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE)
   --action "throttle"
   --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT
   --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC
   --conform-action=[allow]
   --exceed-action=[deny-403|deny-404|deny-429|deny-502]
   --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP]
   --enforce-on-key-name=HTTP_HEADER_NAME

Par exemple, la commande gcloud suivante crée une règle throttle au niveau de priorité 105 avec une limite de débit de 100 requêtes toutes les 60 secondes pour chaque adresse IP dans 1.2.3.0/24. Les requêtes qui dépassent la limite de débit renvoient un code d'erreur 429.

gcloud beta compute security-policies rules create 105 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=100 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=IP

Par exemple, les commandes gcloud suivantes créent une règle throttle au niveau de priorité110 avec une limite de débit de 10 requêtes toutes les 60 secondes pour chaque valeur unique de l'entête HTTP User-Agent sur toutes les requêtes provenant d'adresses IP dans 1.2.3.0/24. Les requêtes qui dépassent la limite de débit renvoient un code d'erreur 429.

gcloud beta compute security-policies rules create 110 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=10 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=HTTP-HEADER \
    --enforce-on-key-name='User-Agent'

Règles pour les exclusions basées sur le taux

Les règles d'exclusion basées sur le taux ont le format suivant dans l'outil gcloud :

gcloud beta compute security-policies rules create PRIORITY \
     --security-policy=SECURITY_POLICY \
     (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE) \
     --action "rate-based-ban" \
     --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \
     --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \
     --ban-duration-sec=BAN_DURATION_SEC \
     --ban-threshold-count=BAN_THRESHOLD_COUNT \
     --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \
     --conform-action=[allow] \
     --exceed-action=[deny-403|deny-404|deny-429|deny-502] \
     --enforce-on-key=[IP|ALL|HTTP-HEADER|XFF-IP] \
     --enforce-on-key-name=HTTP_HEADER_NAME

Par exemple, la commande gcloud suivante crée, pour chaque adresse IP dont les requêtes correspondent à un en-tête fish dont la valeur est tuna, une règle d'exclusion basée sur le taux avec une priorité de 100 qui bannit l'adresse pendant 300 secondes lorsque le débit dépasse 50 requêtes toutes les 120 secondes. Les requêtes envoyées par des adresses bannies renvoient un code d'erreur 404.

gcloud beta compute security-policies rules create 100 \
    --security-policy=sec-policy     \
    --expression="request.headers['fish'] == 'tuna'" \
    --action=rate-based-ban                   \
    --rate-limit-threshold-count=50           \
    --rate-limit-threshold-interval-sec=120   \
    --ban-duration-sec=300           \
    --conform-action=allow           \
    --exceed-action=deny-404         \
    --enforce-on-key=IP

Par exemple, la commande gcloud suivante crée une règle d'exclusion basée sur le taux au niveau de priorité 101 afin de limiter toutes les requêtes dont le code de région correspond à US, à raison de 10 requêtes toutes les 60 secondes. La règle bannit également les requêtes provenant de la région US pendant 300 secondes lorsque le débit dépasse la limite de 1000 demandes pour 600 secondes. Les requêtes envoyées par des adresses bannies renvoient un code d'erreur 403.

 gcloud beta compute security-policies rules create 101 \
    --security-policy sec-policy     \
    --expression "origin.region_code == 'US'" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 10         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 300           \
    --ban-threshold-count 1000       \
    --ban-threshold-interval-sec 600 \
    --conform-action allow           \
    --exceed-action deny-403         \
    --enforce-on-key ALL

Par exemple, la commande gcloud suivante crée une règle d'exclusion basée sur le taux au niveau de priorité 102 pour limiter toutes les requêtes provenant de n'importe quelle plage d'adresses IP source à raison de 20 requêtes toutes les 60 secondes. La règle bannit également les requêtes de toute plage d'adresses IP sources pendant 600 secondes lorsque leur taux dépasse la limite de 500 requêtes pour 400 secondes. Les requêtes envoyées par des adresses bannies renvoient un code d'erreur 429.

 gcloud beta compute security-policies rules create 102 \
    --security-policy sec-policy     \
    --src-ip-ranges="*" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 20         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 600           \
    --ban-threshold-count 500       \
    --ban-threshold-interval-sec 400 \
    --conform-action allow           \
    --exceed-action deny-429         \
    --enforce-on-key ALL

Utiliser Cloud Console et l'outil gcloud pour créer des stratégies de sécurité

Les instructions de cette section partent du principe que vous configurez des stratégies de sécurité à appliquer à un service de backend et à un équilibreur de charge HTTP(S) externe existant. Pour découvrir comment remplir les champs, consultez la section Créer l'exemple.

Console

Créez des règles et des stratégies de sécurité Google Cloud Armor, et associez une stratégie de sécurité à un service de backend :

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles, cliquez sur Créer une règle.

  3. Dans le champ Nom, saisissez le nom de votre stratégie.

  4. Facultatif : saisissez une description de la stratégie.

  5. Dans le champ Action de règle par défaut, sélectionnez Autoriser pour une règle par défaut qui autorise l'accès à une adresse IP ou à une plage d'adresses IP, ou Refuser pour une règle par défaut qui en interdit l'accès.

    La règle par défaut est la règle de priorité la plus basse qui ne prend effet que si aucune autre règle ne s'applique.

  6. Si vous configurez une règle de refus, sélectionnez un message État de refus. Il s'agit du message d'erreur que Google Cloud Armor affiche si un utilisateur sans droit d'accès effectue une tentative d'accès.

  7. Quel que soit le type de règle que vous configurez, cliquez sur Étape suivante.

Ajouter d'autres règles :

  1. Cliquez sur Add rule (Ajouter une règle).
  2. Facultatif : entrez la description de la règle.
  3. Sélectionner 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.
  4. Dans le champ Correspondance, spécifiez les conditions dans lesquelles la règle s'applique :

    • Mode de base : saisissez les adresses IP ou les plages d'adresses IP à mettre en correspondance dans la règle.
    • Mode avancé : saisissez une expression ou des sous-expressions avec lesquelles évaluer les requêtes entrantes. Pour en savoir plus sur la façon d'écrire les expressions, consultez la documentation de référence sur le langage des règles personnalisées.
  5. Dans le champ Action, sélectionnez Autoriser ou Refuser pour autoriser ou refuser le trafic si la règle correspond.

  6. Pour activer le mode Aperçu, cochez la case Activer. En mode aperçu, vous pouvez voir comment la règle se comporte, mais celle-ci n'est pas activée.

  7. Saisissez la priorité de la règle. Il peut s'agir de n'importe quel entier positif compris entre 0 et 2 147 483 646 (inclus). Pour en savoir plus sur l'ordre d'évaluation, consultez la section Ordre d'évaluation des règles.

  8. Cliquez sur OK.

  9. Pour ajouter d'autres règles, cliquez sur Ajouter une règle, puis répétez les étapes précédentes. Sinon, cliquez sur Étape suivante.

Appliquer les règles aux cibles :

  1. Cliquez sur Add Target (Ajouter une cible).
  2. Dans la liste Cible, sélectionnez une cible.
  3. Pour ajouter d'autres cibles, cliquez sur Ajouter une cible.
  4. Cliquez sur OK.
  5. Cliquez sur Créer une règle.

gcloud

  1. Pour créer une stratégie de sécurité Google Cloud Armor, utilisez la commande gcloud compute security-policies create. Remplacez NAME et DESCRIPTION par le nom et la description de la stratégie de sécurité :

    gcloud compute security-policies create NAME \
       [--file-format=FILE_FORMAT | --description=DESCRIPTION] \
       [--file-name=FILE_NAME]
    
    

    La commande suivante met à jour une stratégie que vous avez créée précédemment, active l'analyse JSON et modifie le niveau de journalisation en VERBOSE :

    gcloud compute security-policies update my-policy 
    --json-parsing=STANDARD --log-level=VERBOSE

  2. Pour ajouter des règles à une stratégie de sécurité, utilisez la commande gcloud compute security-policies rules create PRIORITY. Remplacez PRIORITY par la priorité attribuée à la règle dans la stratégie. Pour en savoir plus sur le fonctionnement de la priorité des règles, consultez la section Ordre d'évaluation des règles.

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

    Par exemple, la commande suivante ajoute une règle pour bloquer le trafic provenant des plages d'adresses IP 192.0.2.0/24 et 198.51.100.0/24. La règle a la priorité 1000, et il s'agit d'une règle d'une stratégie appelée my-policy.

    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"
    

    Si vous ajoutez l'option --preview, la règle est ajoutée à la stratégie, mais elle n'est pas appliquée, et tout trafic qui déclenche la règle est uniquement consigné.

    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" \
        --preview
    

    Utilisez l'option --expression pour spécifier une condition personnalisée dans la documentation de référence sur le langage de règles personnalisées. La commande suivante ajoute une règle pour autoriser le trafic provenant de l'adresse IP 1.2.3.4 et contient la chaîne Godzilla 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('Godzilla')" \
        --action allow \
        --description "Block User-Agent 'Godzilla'"
    

    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('cookie_name=cookie_value')" \
        --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 de la région AU qui ne se trouvent pas 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('/bad_path/)')" \
        --action "deny-403" \
        --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 "evaluatePreconfiguredExpr('sqli-stable')" \
        --action "deny-403"
    

    La commande suivante ajoute une règle qui utilise une expression préconfigurée pour autoriser l'accès à partir de toutes les adresses IP d'une liste d'adresses IP nommée :

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \
        --action "allow"
    

Configurer des règles pour la gestion des robots

Cette section contient des informations sur la configuration des règles de stratégie de sécurité Google Cloud Armor pour la gestion des robots. Pour en savoir plus, consultez la présentation de la gestion des robots.

Utiliser une question d'authentification manuelle pour faire la distinction entre les clients humains et les clients automatisés

Pour créer une règle permettant de rediriger le trafic en interne pour l'évaluation reCAPTCHA Enterprise, utilisez le format suivant dans gcloud :

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action redirect
--redirect-type google-recaptcha

L'exemple suivant crée une règle qui redirige le trafic essayant d'atteindre /login.html vers l'évaluation reCAPTCHA Enterprise.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html")"
--action redirect
--redirect-type google-recaptcha

Appliquer l'évaluation reCAPTCHA Enterprise

Avant de continuer, consultez la présentation de la gestion des robots pour connaître les conditions préalables à l'utilisation des jetons d'action ou des jetons de session reCAPTCHA Enterprise. Outre la configuration standard requise pour configurer des règles de sécurité, l'intégration avec reCAPTCHA Enterprise nécessite d'activer l'API reCAPTCHA Enterprise.

Vous pouvez utiliser token.recaptcha.xxx dans le langage des règles Google Cloud Armor afin d'extraire les attributs d'un jeton reCAPTCHA Enterprise. Pour en savoir plus sur la syntaxe des attributs de jeton reCAPTCHA Enterprise disponibles, consultez la documentation de référence sur le langage des règles.

L'exemple suivant crée une règle qui autorise le ciblage du trafic pour /login.html lorsque le score reCAPTCHA Enterprise est supérieur ou égal à 0.8.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html") && token.recaptcha.score >= 0.8"
--action allow

Redirection (réponse 302)

Pour créer une règle permettant de rediriger le trafic vers une URL configurée par l'utilisateur, utilisez le format suivant dans gcloud.

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action redirect
--redirect-type external-302
--redirect-target REDIRECT_URL

L'exemple suivant crée une règle qui redirige le trafic provenant de 10.10.10.0/24 vers https://www.example.com.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--src-ip-ranges "10.10.10.0/24"
--action redirect
--redirect-type external-302
--redirect-target "https://www.example.com"

Décorer la demande

Pour créer une règle qui autorise le trafic mais ajoute des en-têtes personnalisés avant de les transmettre par proxy aux backend protégés, utilisez le format suivant dans gcloud :

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action allow
--request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

L'exemple suivant crée une règle qui autorise mais ajoute un en-tête personnalisé pour le ciblage par trafic pour la zone /login.html et dont le score reCAPTCHA Enterprise est inférieur à 0.2.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html") && token.recaptcha.score < 0.2"
--action allow
--request-headers-to-add "reCAPTCHA-Warning=high"

Utiliser Adaptive Protection

Adaptive Protection est appliqué à l'échelle des stratégies de sécurité.

Console

Pour activer Adaptive Protection pour une stratégie de sécurité :

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles, cliquez sur le nom d'une stratégie de sécurité.

  3. Cliquez sur Modifier.

  4. Sous Adaptive Protection, sélectionnez Activer.

  5. Cliquez sur Mettre à jour.

Pour désactiver Adaptive Protection pour une stratégie de sécurité :

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles, cliquez sur le nom d'une stratégie de sécurité.

  3. Cliquez sur Modifier.

  4. Sous Adaptive Protection, décochez la case Activer.

  5. Cliquez sur Mettre à jour.

gcloud

Pour activer Adaptive Protection pour une stratégie de sécurité :

gcloud compute security-policies update MY-SECURITY-POLICY \
   --enable-layer7-ddos-defense

Pour désactiver Adaptive Protection pour une stratégie de sécurité :

gcloud compute security-policies update MY-SECURITY-POLICY \
   --no-enable-layer7-ddos-defense

Répertorier les règles préconfigurées disponibles

Répertoriez les règles préconfigurées pour afficher les signatures et les règles de protection des applications prédéfinies, par exemple l'ensemble de règles de base ModSecurity fourni par Google Cloud Armor. Ces règles préconfigurées contiennent plusieurs signatures intégrées que Google Cloud Armor utilise pour évaluer les requêtes entrantes. Pour ajouter ces règles préconfigurées à des règles nouvelles ou existantes, utilisez la documentation de référence sur le langage des règles personnalisées.

Pour en savoir plus, consultez la section Règles préconfigurées.

gcloud

  1. Exécutez la commande gcloud compute security-policies list-preconfigured-expression-sets :

    gcloud compute security-policies list-preconfigured-expression-sets
    

    L'exemple suivant montre comment se présente le résultat de la commande :

    EXPRESSION_SET
    expression-set-1
       RULE_ID
       expression-set-1-id-1
       expression-set-1-id-2
    expression-set-2
       alias-1
       RULE_ID
       expression-set-2-id-1
       expression-set-2-id-2
    

    L'exemple suivant inclut un extrait du résultat réel de la commande. Notez que le résultat réel inclut toutes les règles répertoriées dans la section Ajuster les règles WAF Google Cloud Armor.

    gcloud compute security-policies list-preconfigured-expression-sets
    
    EXPRESSION_SET
    sqli-canary
        RULE_ID
        owasp-crs-v030001-id942110-sqli
        owasp-crs-v030001-id942120-sqli
        …
    xss-canary
        RULE_ID
        owasp-crs-v030001-id941110-xss
        owasp-crs-v030001-id941120-xss
    …
    sourceiplist-fastly
    sourceiplist-cloudflare
    sourceiplist-imperva
    

Répertorier les stratégies de sécurité

Suivez ces instructions pour répertorier toutes les stratégies de sécurité Google Cloud Armor dans le projet actuel ou dans un projet que vous spécifiez.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Pour afficher une règle particulière, cliquez sur son nom dans la liste des règles à la page Règles de sécurité.

gcloud

gcloud compute security-policies list

Exemple :

gcloud compute security-policies list
NAME
my-policy

Pour en savoir plus, consultez les sections sur gcloud compute security-policies list

Mettre à jour des règles de sécurité

Utilisez ces instructions pour mettre à jour une stratégie de sécurité Google Cloud Armor. Par exemple, vous pouvez modifier la description de la stratégie, le comportement de la règle par défaut, le service de backend cible ou ajouter de nouvelles règles.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Pour mettre à jour une règle particulière dans la liste des règles à la page Règles de sécurité, cliquez sur Menu pour afficher la règle que vous souhaitez mettre à jour.

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

gcloud

Pour mettre à jour une règle de sécurité, suivez les instructions de l'outil de ligne de commande gcloud ci-dessous :

Exporter des règles de sécurité

Vous pouvez exporter une stratégie de sécurité Google Cloud Armor sous la forme d'un fichier YAML ou JSON à l'aide de l'outil de ligne de commande gcloud. L'exportation d'une stratégie vous permet d'en récupérer une copie que vous pouvez modifier ou enregistrer dans le contrôle de code source.

gcloud

  1. Dans la commande suivante, NAME est le nom de la règle de sécurité. Les formats de fichiers valides sont YAML et JSON. Si vous ne fournissez pas le format de fichier, Google Cloud Armor utilise le format YAML par défaut.

    gcloud compute security-policies export NAME \
        --file-name FILE_NAME  \
        --file-format FILE_FORMAT
    

    L'exemple suivant exporte la règle de sécurité my-policy vers le fichier my-file au format YAML :

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

    L'exemple suivant présente une stratégie de sécurité exportée :

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: allow
      description: default rule
      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. Vous pouvez modifier le fichier exporté avec n'importe quel éditeur de texte, puis le réimporter dans Google Cloud à l'aide de la commande import.

Importer des règles de sécurité

Vous pouvez importer des stratégies de sécurité Google Cloud Armor à partir d'un fichier YAML ou JSON à l'aide de l'outil de ligne de commande gcloud. Vous ne pouvez pas utiliser la commande import pour mettre à jour les règles d'une stratégie existante. À la place, vous devez mettre à jour les règles une par une en suivant la procédure Mettre à jour une seule règle dans une stratégie de sécurité ou en une seule fois en suivant la procédure Mettre à jour de façon atomique plusieurs règles dans une stratégie de sécurité.

gcloud

Pour importer des règles de sécurité, utilisez la commande gcloud compute security-policies import NAME. Remplacez NAME par le nom de la règle de sécurité que vous importez. Si vous ne fournissez pas le format de fichier, le format correct est supposé en fonction de la structure du fichier. Si la structure n'est pas valide, une erreur s'affiche.

gcloud compute security-policies import NAME \
    --file-name FILE_NAME  \
   [--file-format FILE_FORMAT]

Par exemple, la commande suivante met à jour la stratégie my-policy en important le fichier my-file.

gcloud compute security-policies import my-policy \
    --file-name my-file \
    --file-format json

Si l'empreinte de la stratégie est obsolète lorsque vous l'importez, Google Cloud Armor affiche une erreur. Cela signifie que la stratégie a été modifiée depuis votre dernière exportation. Pour résoudre ce problème, utilisez la commande describe sur la stratégie pour obtenir la dernière empreinte. Fusionnez toutes les différences entre la stratégie décrite et votre stratégie, puis remplacez l'empreinte obsolète par la plus récente.

Supprimer des règles de sécurité

Suivez ces instructions pour supprimer une stratégie de sécurité Google Cloud Armor. Vous devez supprimer tous les services de backend de la stratégie avant de pouvoir la supprimer.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cochez la case située à côté du nom de la règle de sécurité que vous souhaitez supprimer.

  3. Dans l'angle supérieur droit de la page, cliquez sur Supprimer.

gcloud

Utilisez gcloud compute security-policies delete NAME. Remplacez NAME par le nom de la règle de sécurité :

gcloud compute security-policies delete NAME

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

Suivez ces instructions pour associer une stratégie de sécurité Google Cloud Armor à un service de backend. Une stratégie de sécurité peut être associée à plusieurs services de backend, mais un service de backend ne peut être associé qu'à une seule stratégie de sécurité.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails des règles s'affiche.

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

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

  5. Cliquez sur Add Target (Ajouter une cible).

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

gcloud

Utilisez la commande gcloud compute backend-services :

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

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

Suivez ces instructions pour supprimer une stratégie de sécurité Google Cloud Armor d'un service de backend.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails des règles s'affiche.

  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

Utilisez la commande gcloud compute backend-services :

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

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

Suivez ces instructions pour ajouter des règles à une stratégie de sécurité Google Cloud Armor.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails des règles s'affiche.

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

  4. Cliquez sur Add rule (Ajouter une règle).

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

  6. Sélectionner 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 dans lesquelles la règle s'applique :

    • Mode de base : saisissez une (1) à cinq (5) plages d'adresses IP à mettre en correspondance dans la règle.
    • Mode avancé : saisissez une expression ou des sous-expressions avec lesquelles évaluer les requêtes entrantes. Pour savoir comment écrire les expressions et lire les exemples suivants, consultez la documentation de référence sur le langage des règles personnalisées.

      • L'expression suivante met en correspondance les requêtes provenant de l'adresse IP 1.2.3.4 et contient la chaîne Godzilla 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('Godzilla')
        
      • 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 met en correspondance les 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('/bad_path/)')
        
      • L'expression suivante met en correspondance les requêtes si la valeur décodée en base64 de l'en-tête user-id contient une valeur 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 :

        evaluatePreconfiguredExpr('sqli-stable')
        
  8. Dans la section Action, sélectionnez Autoriser ou Refuser.

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

  10. Si vous souhaitez activer le mode Aperçu pour la règle, cochez la case 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 pour bloquer le trafic provenant des plages d'adresses IP 192.0.2.0/24 et 198.51.100.0/24. La règle a la priorité 1000, et il s'agit d'une règle d'une stratégie appelée my-policy :

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 l'option --expression pour spécifier une condition dans la documentation de référence sur le langage de règles personnalisées. La commande suivante ajoute une règle pour autoriser le trafic provenant de l'adresse IP 1.2.3.4 et contient la chaîne Godzilla 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('Godzilla')" \
    --action allow \
    --description "Block User-Agent 'Godzilla'"

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 de la région AU qui ne se trouvent pas 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('/bad_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 "evaluatePreconfiguredExpr('sqli-stable')" \
    --action deny-403

Répertorier des règles dans une stratégie de sécurité

Suivez ces instructions pour répertorier les règles d'une stratégie de sécurité Google Cloud Armor.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails de la stratégie s'affiche, et les règles de la stratégie sont répertoriées dans l'onglet Règles au milieu de la page.

gcloud

Utilisez la commande gcloud suivante pour répertorier toutes les règles d'une seule stratégie de sécurité ainsi qu'une description de cette stratégie :

gcloud compute security-policies describe NAME \

Utilisez la commande gcloud suivante pour décrire une règle avec la priorité spécifiée dans la stratégie de sécurité spécifiée :

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

Sortie :

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

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

Suivez ces instructions pour mettre à jour une seule règle dans une stratégie de sécurité Google Cloud Armor. Pour mettre à jour de façon atomique plusieurs règles, consultez la section Mettre à jour de façon atomique plusieurs règles dans une stratégie de sécurité.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails des règles s'affiche.

  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 cette commande pour mettre à jour une règle avec la priorité spécifiée dans une stratégie de sécurité désignée. Vous ne pouvez mettre à jour qu'une seule règle de sécurité à la fois à l'aide de cette commande :

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 cette commande, consultez la page sur gcloud compute security-policies rules update.

Pour mettre à jour la priorité d'une règle, vous devez utiliser l'API REST. Pour en savoir plus, consultez les pages suivantes : securityPolicies.patchRule.

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

Une mise à jour atomique applique des modifications à plusieurs règles en une seule opération. Si vous mettez à jour les règles une par une, il se peut que vous constatiez un comportement inattendu, car les anciennes et les nouvelles règles peuvent fonctionner ensemble 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 correspondants.

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: evaluatePreconfiguredExpr('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 n'importe quel éditeur de texte pour modifier la stratégie. 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: evaluatePreconfiguredExpr('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é Google 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 \
        --description "allow-listed traffic" \
        --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 ces instructions pour supprimer des règles d'une stratégie de sécurité Google Cloud Armor.

Console

  1. Dans Google Cloud Console, accédez à la page Sécurité du réseau.

    Accéder à la page "Sécurité du réseau"

  2. Sur la page Règles de sécurité, cliquez sur le nom de la règle de sécurité. La page Détails des règles s'affiche.

  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 cette commande pour supprimer une règle avec la priorité spécifiée d'une stratégie de sécurité désignée. 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

Étape suivante