Créer des règles de pare-feu App Engine

Dans App Engine, vous pouvez créer un pare-feu avec un maximum de 1 000 règles individuelles prioritaires qui autorisent ou restreignent une plage d'adresses IP et de sous-réseaux. Votre application ne répond qu'aux requêtes autorisées par le pare-feu.

Pour en savoir plus sur le fonctionnement du pare-feu App Engine, consultez la section Comprendre les pare-feu.

Avant de commencer

Pour pouvoir créer des règles de pare-feu App Engine pour votre application, vous devez disposer de l'un des rôles IAM App Engine ci-dessous. Ces rôles vous accordent les droits nécessaires pour créer ou modifier des règles de pare-feu :

  • Administrateur App Engine
  • Éditeur
  • Propriétaire

Créer des règles de pare-feu

Utilisez l'une des méthodes suivantes pour créer une règle de pare-feu. Répétez ces étapes pour chaque règle supplémentaire.

Console

Référez-vous à la page "Règles de pare-feu" de la console Google Cloud pour créer une règle de pare-feu :

  1. Accédez à la page "Créer une règle de pare-feu" dans la console Google Cloud :

    Accéder à la page "Créer une règle de pare-feu"

  2. Spécifiez les détails de la règle de pare-feu :

    1. Dans Priorité, indiquez un nombre entier pour spécifier l'importance relative de la règle et définir l'ordre selon lequel elle doit être évaluée.

      Les valeurs valides sont comprises entre 1 et 2147483646. La priorité 1 correspond à la première règle évaluée. La priorité 2147483647 correspond à la dernière règle évaluée. Elle est réservée à la règle "default".

    2. Dans Action en cas de correspondance, indiquez si vous souhaitez autoriser ou refuser l'accès des requêtes correspondant à la règle. Les règles définies sur allow transfèrent la requête vers l'application. Celles définies sur deny répondent aux requêtes en renvoyant l'erreur 403 Forbidden.
    3. Dans Plage d'adresses IP, définissez la plage d'adresses IP qui s'applique à la règle. Celle-ci doit respecter le format CIDR et peut inclure des masques de sous-réseau. Elle est par ailleurs compatible avec les protocoles IPv4 et IPv6.
    4. Facultatif : Dans Description, ajoutez une description de la règle de 100 caractères maximum.
  3. Cliquez sur Enregistrer pour créer la règle.
  4. Testez la règle pour vous assurer que la priorité et l'action engendrent le comportement attendu :
    1. Cliquez sur Tester une adresse IP.
    2. Saisissez l'adresse IP que vous souhaitez valider, puis cliquez sur Tester pour vérifier que la règle correspondante est correctement évaluée.
gcloud

Exécutez les commandes gcloud app firewall-rules suivantes pour créer une règle de pare-feu :

  1. Exécutez la commande suivante pour créer une règle de pare-feu :

    gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
    où :
    • PRIORITY est un nombre entier compris entre 1 et 2147483646, qui définit l'importance de la règle et l'ordre selon lequel elle est évaluée. La priorité 1 correspond à la première règle évaluée. La priorité 2147483647 correspond à la dernière règle évaluée. Elle est réservée à la règle "default".
    • ALLOW_OR_DENY indique s'il faut autoriser ou refuser l'accès des requêtes correspondant à la règle. Les valeurs valides sont allow ou deny. Les règles définies sur allow transfèrent la requête vers l'application. Celles définies sur deny répondent aux requêtes en renvoyant l'erreur 403 Forbidden.
    • IP_RANGE définit la plage d'adresses IP qui s'applique à la règle. Elle doit respecter le format CIDR et peut inclure des masques de sous-réseau. Elle est par ailleurs compatible avec les protocoles IPv4 et IPv6.
    • DESCRIPTION est une description facultative de la règle comportant 100 caractères au maximum.
  2. Exécutez la commande suivante pour tester la règle, et pour vérifier que la priorité et l'action engendrent le comportement attendu :
    gcloud app firewall-rules test-ip IP_ADDRESS
    IP_ADDRESS est l'adresse IP que vous souhaitez tester sur le pare-feu.
  3. Exécutez la commande suivante pour afficher la liste des règles existantes :
    gcloud app firewall-rules list
  4. Exécutez la commande suivante pour supprimer une règle existante :
    gcloud app firewall-rules delete PRIORITY
    PRIORITY correspond à la valeur de priorité de la règle à supprimer.
Exemples :
Utilisez les exemples ci-dessous pour créer votre pare-feu :
  • Ajoutez une règle qui autorise un masque de sous-réseau et une adresse IPv6, puis testez-la pour vérifier qu'elle est évaluée avant vos autres règles :

    gcloud app firewall-rules create 123 --source-range fe80::3636:3bff:fecc:8778/128 --action allow
    gcloud app firewall-rules test-ip fe80::3636:3bff:fecc:8778
  • Ajoutez une règle pour refuser un masque de sous-réseau et une adresse IPv4, puis testez-la pour vérifier qu'elle est correctement évaluée :

    gcloud app firewall-rules create 123456 --source-range "74.125.0.0/16" --action deny
    gcloud app firewall-rules test-ip 74.125.0.8
  • Mettez à jour, puis testez la règle par défaut pour vérifier qu'elle bloque toutes les adresses IP qui ne correspondent à aucune autre règle :

    gcloud app firewall-rules update default --action deny
    gcloud app firewall-rules test-ip 123.456.7.89
API

Pour créer de manière automatisée des règles de pare-feu pour votre application App Engine, vous pouvez utiliser les méthodes apps.firewall.ingressRules de l'API Admin.

Pour tester une règle de pare-feu et vérifier que la priorité et l'action engendrent bien le comportement attendu, vous pouvez utiliser la méthode apps.firewall.ingressRules.list et spécifier l'adresse IP à tester dans le paramètre matchingAddress.

Comprendre les règles de pare-feu App Engine

Un pare-feu App Engine consiste en une liste numérotée de règles pouvant autoriser ou refuser l'accès à votre application depuis l'adresse IP (ou la plage d'adresses IP) spécifiée. La règle s'applique à toutes les ressources de l'application App Engine.

Priorité des règles de pare-feu

Les règles de pare-feu sont classées selon leur importance, que vous définissez à l'aide d'une valeur numérique dans la priorité de chaque règle. Vous devez indiquer une valeur de priorité unique pour chaque règle, car elle définit l'importance de cette dernière par rapport aux autres règles du pare-feu. Les valeurs définies pour la priorité d'une règle varient de la plus élevée (1) à la plus faible (2147483647).

Chaque pare-feu inclut une règle default qui est automatiquement créée avec la priorité 2147483647 et qui s'applique à toute la plage d'adresses IP de votre application. La règle default est toujours évaluée après toutes les autres règles du pare-feu et appliquée à l'ensemble des requêtes envoyées sur toutes les adresses IP.

Le pare-feu évalue d'abord la règle ayant la priorité la plus élevée. Toutes les règles restantes dans le pare-feu sont évaluées de manière séquentielle jusqu'à ce qu'une règle corresponde à la plage d'adresses IP de la requête concernée. Lorsqu'une règle de correspondance est trouvée, la connexion est autorisée ou refusée, et toutes les autres règles du pare-feu sont ignorées. Si aucune des règles définies manuellement dans le pare-feu ne correspond à la requête, la règle default est évaluée.

Par exemple, si vous créez une règle avec la priorité 1, celle-ci est toujours évaluée en premier. Si une requête entrante correspond à la règle de priorité 1, seule cette règle est évaluée et toutes les autres règles du pare-feu sont ignorées, y compris la règle default.

L'exemple de pare-feu ci-dessous montre comment la priorité d'une règle peut modifier le comportement du pare-feu.

Exemple de pare-feu

Dans cet exemple, une entreprise a configuré un pare-feu pour accorder à l'équipe d'ingénierie et au réseau d'entreprise interne l'accès à son application en cours de développement. Les règles de pare-feu ont été créées avec de grands écarts entre chaque priorité afin de pouvoir en ajouter par la suite.

Priorité Action Plage d'adresses IP Description
1 000 Refuser 192.0.2.1 Empêche l'accès à l'application dans le cadre d'une attaque DoS.
2 000 Autoriser 198.51.100.2 Autorise un ingénieur du bureau satellite à accéder à l'application.
3 000 Refuser 198.51.100.0/24 Empêche l'accès à l'application depuis les bâtiments qui n'abritent pas de services d'ingénierie.
5 000 Autoriser 203.0.113.0/24 Autorise le réseau du bâtiment principal à accéder à l'application.
2147483647 Refuser * Action par défaut

Une fois le pare-feu créé, supposez que les requêtes ci-dessous soient adressées à l'exemple d'application. Notez alors la réponse de l'application :

  • La requête provenant de l'adresse 198.51.100.2 correspond à la règle de priorité 2000. Elle est autorisée.
  • La requête provenant de l'adresse 198.51.100.100 correspond à la règle de priorité 3000. Elle est refusée.
  • La requête provenant de l'adresse 203.0.113.54 correspond à la règle de priorité 5000. Elle est autorisée.
  • La requête provenant de l'adresse 45.123.35.242 correspond à la règle par défaut. Elle est refusée.

Résoudre les problèmes liés aux règles en conflit

Supposons par exemple que vous échangiez deux des priorités définies dans le pare-feu de l'entreprise. Si vous échangez les règles correspondant aux priorités 2000 et 3000, vous pouvez observer un comportement inattendu.

Priorité Action Plage d'adresses IP Description
1 000 Refuser 192.0.2.1 Empêche l'accès à l'application dans le cadre d'une attaque DoS.
2000 Refuser 198.51.100.0/24 Empêche l'accès à l'application depuis les bâtiments qui n'abritent pas de services d'ingénierie.
3000 Autoriser 198.51.100.2 Autorise un ingénieur du bureau satellite à accéder à l'application.
5 000 Autoriser 203.0.113.0/24 Autorise le réseau du bâtiment principal à accéder à l'application.
2147483647 Refuser * Action par défaut

L'ingénieur du bureau satellite ne pourra pas accéder à l'application de l'entreprise, car la nouvelle priorité de la règle signifie qu'elle ne sera jamais évaluée. L'adresse IP 198.51.100.2 de l'ingénieur est mise en correspondance avec la règle qui refuse l'accès à tous les utilisateurs non ingénieurs situés dans la plage d'adresses IP 198.51.100.0/24, avant la règle qui l'autorise à accéder à l'application.

Pour résoudre ce problème, vous devez définir la priorité de la règle qui autorise l'accès de l'adresse IP 198.51.100.2 de sorte qu'elle soit supérieure à la règle qui refuse l'accès de la plage d'adresses IP 198.51.100.0/24.

Étape suivante

Pour vous assurer que vous avez configuré votre application de manière sécurisée et défini les niveaux d'accès appropriés, consultez les pages Sécurité des applications et Contrôle des accès.