Exemples de stratégies de sécurité

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

Configurer des stratégies de sécurité pour les équilibreurs de charge d'application externes

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 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 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 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 règle.

Vous pouvez également 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 créer des stratégies de sécurité à l'aide de la console Google Cloud ou de gcloud CLI. Les instructions de cette section partent du principe que vous configurez des stratégies de sécurité à appliquer à un équilibreur de charge d'application externe global ou à un équilibreur de charge d'application classique et à un service de backend. 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 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 la façon d'écrire les 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 stratégie de sécurité backend ou CLOUD_ARMOR_EDGE pour créer une stratégie de sécurité périphérique. L'option type est facultative. Si aucun type n'est spécifié, une stratégie de sécurité 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é 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. 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 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('/example_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 stratégies de sécurité pour les équilibreurs de charge d'application externes régionaux

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

Protéger les charges de travail équilibrées de charge régionale

Pour configurer une stratégie de sécurité afin de protéger votre service de backend à l'échelle régionale, procédez comme suit:

  1. Créez une stratégie de sécurité à l'échelle régionale.

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

    gcloud 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

Imaginons que vous soyez un administrateur de sécurité qui souhaite répondre à une exigence de résidence selon laquelle toutes vos charges de travail backend et vos règles WAF doivent être déployées dans une région spécifique. Supposons que vous ayez effectué les opérations suivantes au préalable:

  1. Vous avez créé des services de backend à équilibrage de charge à l'échelle régionale dans la région.
  2. Vous avez désactivé toutes les règles de sécurité à portée globale existantes dans votre déploiement.
  3. Vous avez créé et associé une règle 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 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 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 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
    

Étape suivante