Exemples de règles de sécurité

Cette page décrit des exemples de configuration de règles de sécurité pour différents types d'équilibreurs de charge et de règles de sécurité.

Configurer les règles de sécurité pour les équilibreurs de charge d'application externes

Vous trouverez ci-dessous les principales étapes de configuration des stratégies de sécurité Google Cloud Armor permettant d'activer des règles qui autorisent ou refusent le trafic vers l'équilibreur de charge d'application externe global ou l'équilibreur de charge d'application classique:

  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 d'application externe global ou de l'équilibreur de charge d'application classique 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 règles 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 la console Google Cloud, accédez à la page Règles Google Cloud Armor.

    Accéder aux règles Google Cloud Armor

  2. Cliquez sur Créer des règles.

  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 stratégie.

Vous pouvez éventuellement activer Google Cloud Armor Adaptive Protection:

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

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

  1. Cliquez sur Créer des règles.
  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
    

Créer des règles de sécurité

Vous pouvez utiliser la console Google Cloud ou la gcloud CLI pour créer des règles de sécurité. Les instructions de cette section supposent que vous configurez des règles de sécurité à appliquer à un équilibreur de charge d'application externe global existant ou à un équilibreur de charge d'application classique et à un service de backend. Pour savoir 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 la console Google Cloud, accédez à la page Règles Google Cloud Armor.

    Accéder aux règles Google Cloud Armor

  2. Cliquez sur Créer des règles.

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

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

  5. Pour le champ Type de stratégie, sélectionnez Stratégie de sécurité backend ou Stratégie de sécurité périphérique.

  6. 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.

  7. 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.

  8. 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 l'écriture des expressions, consultez la section Configurer les attributs de 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.

    Dans le champ type, utilisez CLOUD_ARMOR pour créer une règle de sécurité de backend ou CLOUD_ARMOR_EDGE pour créer une règle de sécurité périphérique. L'option type est facultative. Si aucun type n'est spécifié, une stratégie de sécurité de backend est créée par défaut:

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

    Remplacez les éléments suivants :

    • NAME: nom de la stratégie de sécurité
    • DESCRIPTION: description de la stratégie de sécurité

    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.

    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]
    

    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.

    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é 1 000, 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"
    

    Avec l'option --preview ajoutée, la règle est ajoutée à la stratégie, mais n'est pas appliquée, et tout trafic qui la déclenche n'est que 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. Pour en savoir plus, consultez la section Configurer les attributs de langage des 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 example dans l'en-tête user-agent :

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

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

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('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 les règles de sécurité pour les équilibreurs de charge d'application externes régionaux

Cette section contient des informations sur la configuration de règles de sécurité Google Cloud Armor à l'échelle régionale pour les équilibreurs de charge d'application externes régionaux.

Protéger les charges de travail à équilibrage de charge régional

Procédez comme suit pour configurer une stratégie de sécurité afin de protéger votre service de backend à l'échelle d'une région:

  1. Créez une règle de sécurité à l'échelle d'une région.

    gcloud beta compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR \
       --region=REGION
    
  2. Associez la stratégie de sécurité à l'échelle d'une région à un service de backend à l'échelle d'une région. Remplacez BACKEND_NAME par le nom de votre service de backend existant à l'échelle d'une région.

    gcloud beta compute backend-services update BACKEND_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION
    

Appliquer une stratégie de sécurité Google Cloud Armor à l'échelle régionale

Prenons l'exemple d'un administrateur de sécurité qui souhaite satisfaire à une exigence de résidence selon laquelle toutes vos charges de travail de backend et toutes vos règles WAF sont déployées dans une région spécifique. Supposons que vous ayez préalablement effectué les opérations suivantes:

  1. Vous avez créé des services de backend à équilibrage de charge à l'échelle régionale dans la région.
  2. Vous avez désactivé dans votre déploiement les règles de sécurité à l'échelle mondiale existantes.
  3. Vous avez créé et associé une stratégie de sécurité à l'échelle régionale dans la même région (comme dans la section précédente).

Vous pouvez ajouter des règles WAF et d'autres règles avancées à votre stratégie tout en répondant aux exigences, à l'aide des exemples de commandes suivants:

  • Ajoutez une règle WAF à la stratégie:

    gcloud beta compute security-policies rules create 1000 --action=deny-404 \
      --expression="evaluatePreconfiguredExpr('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Ajoutez une règle avancée à la stratégie:

    gcloud beta compute security-policies rules create 1000 --action=allow \
      --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Ajoutez une règle de limitation du débit à la stratégie:

    gcloud beta compute security-policies rules create 1000 --action=throttle \
      --src-ip-ranges="1.1.1.1/32" \
      --rate-limit-threshold-count=1000 \
      --rate-limit-threshold-interval-sec=120 \
      --conform-action="allow" \
      --exceed-action="deny-429" \
      --enforce-on-key=IP \
      --ban-duration-sec=999 \
      --ban-threshold-count=5000 \
      --ban-threshold-interval-sec=60 \
      --security-policy=POLICY_NAME \
      --region=REGION
    

Étapes suivantes