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é, assurez-vous de maîtriser les concepts d'équilibrage de charge HTTP(S).

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) :

  • Créer, 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 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.

Configurez la stratégie 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
    

Configurer des stratégies de sécurité pour GKE

Suivez la procédure générale suivante pour configurer les stratégies de sécurité Google Cloud Armor pour GKE :

  1. Configurez une stratégie de sécurité Google Cloud Armor avec des règles à l'aide de l'API REST ou de l'outil de ligne de commande gcloud.
  2. Créez une ressource Ingress dans GKE.
  3. Récupérez la configuration de la ressource Ingress pour déterminer les services de backend qui sont associés à la ressource :

    kubectl describe ingress INGRESS_NAME
    

    Les valeurs du champ backends de la section Annotations du résultat correspondent aux noms des services de backend utilisés.

  4. À l'aide de l'API REST ou de l'outil de ligne de commande gcloud, associez la stratégie de sécurité à chacun des backends notés à l'étape précédente.

Si vous supprimez, puis recréez une ressource d'entrée Kubernetes, vous devez réappliquer la stratégie de sécurité au nouveau service de backend ou aux nouveaux services. Pour en savoir plus, consultez la page Fonctionnalités Ingress.

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

Vous pouvez créer des stratégies, des règles et des expressions 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.

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 créez 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 :

    request.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')
    

Les instructions suivantes partent du principe que vous créez 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 créez une règle Refuser, 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 créez, 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]
    

    Exemple :

    gcloud compute security-policies create my-policy \
        --description "block bad traffic"
    
  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"
    

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 :

        request.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 créez une règle Refuser, 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 "request.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

Activer la journalisation des requêtes HTTP(S)

Les journaux Google Cloud Armor concernant le nom de la stratégie de sécurité, la priorité de la règle de correspondance, l'action associée et les informations connexes sont consignés dans le cadre de la journalisation de l'équilibrage de charge HTTP(S). La journalisation des nouveaux services de backend est désactivée par défaut. Vous devez donc activer la journalisation de l'équilibrage de charge HTTP(S) pour enregistrer les informations de journalisation complètes concernant Google Cloud Armor.

La journalisation de l'équilibrage de charge HTTP(S) vous permet d'afficher en détail les requêtes HTTP(S) refusées et autorisées. Par exemple, pour afficher les requêtes refusées, vous pouvez utiliser des filtres tels que jsonPayload.enforcedSecurityPolicy.outcome="DENY" ou jsonPayload.statusDetails="denied_by_security_policy".

Pour activer la journalisation de l'équilibrage de charge HTTP(S), consultez la page Journalisation et surveillance de l'équilibrage de charge HTTP(S).

Afficher les journaux

Vous ne pouvez afficher les journaux d'une stratégie de sécurité Google Cloud Armor que dans Google Cloud Console.

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. À la page Règles de sécurité, sur la ligne d'une règle de sécurité, cliquez sur Menu pour afficher la règle dont vous souhaitez consulter les journaux.

  3. Sélectionnez Afficher les journaux.

Étape suivante