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.
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 :
-
Accédez à la page "Créer une règle de pare-feu" dans la console Google Cloud :
-
Saisissez les détails de la règle :
- 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
et2147483646
. 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". -
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 surdeny
répondent aux requêtes en renvoyant l'erreur403 Forbidden
. - 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.
- Facultatif : Dans Description, ajoutez une description de la règle de 100 caractères maximum.
- 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.
- Cliquez sur Enregistrer pour créer la règle.
- Testez la règle pour vous assurer que la priorité et l'action engendrent le comportement attendu :
- Cliquez sur Tester une adresse IP.
- Saisissez l'adresse IP que vous souhaitez valider, puis cliquez sur Tester pour vérifier que la règle correspondante est correctement évaluée.
Exécutez les commandes gcloud
app firewall-rules
suivantes pour créer une règle de pare-feu :
-
Exécutez la commande suivante pour créer une règle de pare-feu :
où :gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
-
PRIORITY est un nombre entier compris entre
1
et2147483646
, 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
oudeny
. Les règles définies surallow
transfèrent la requête vers l'application. Celles définies surdeny
répondent aux requêtes en renvoyant l'erreur403 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.
-
PRIORITY est un nombre entier compris entre
- Exécutez la commande suivante pour tester la règle, et pour vérifier que la priorité et l'action engendrent le comportement attendu :
où IP_ADDRESS est l'adresse IP que vous souhaitez tester sur le pare-feu.gcloud app firewall-rules test-ip IP_ADDRESS
- Exécutez la commande suivante pour afficher la liste des règles existantes :
gcloud app firewall-rules list
- Exécutez la commande suivante pour supprimer une règle existante :
où PRIORITY correspond à la valeur de priorité de la règle à supprimer.gcloud app firewall-rules delete PRIORITY
- 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
-
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.