VCL personnalisé pour les requêtes de blocage

Vous pouvez utiliser le module de réseau CDN Fastly pour le Magento 2 afin de créer une liste de contrôle d’accès Edge avec la liste des adresses IP que vous souhaitez bloquer. Vous pouvez ensuite utiliser cette liste avec un extrait de code VCL pour bloquer les requêtes entrantes. Le code vérifie l’adresse IP de la requête entrante. S’il correspond à une adresse IP incluse dans la liste ACL, Fastly bloque l’accès à votre site à la requête et renvoie une 403 Forbidden error. Toutes les autres adresses IP client sont autorisées à y accéder.

Conditions préalables :

  • Votre environnement doit être configuré pour utiliser le réseau CDN Fastly. Voir Configuration des services Fastly.

  • Assurez-vous d’exécuter la dernière version du module Fastly CDN pour le Magento 2. Voir Mise à niveau du module Fastly.

  • Vérifiez la configuration de l’environnement pour le service Fastly . Voir Vérification de la mise en cache rapide.

  • Vous devez disposer des informations d’identification d’administrateur pour accéder aux environnements d’évaluation et de production.

  • Liste des adresses IP client à bloquer

Créer une liste de contrôle d’accès Edge pour bloquer les adresses IP des clients

Vous créez une liste de contrôle d’accès Edge pour définir la liste des adresses IP à bloquer. Après avoir créé la liste de contrôle d’accès, vous pouvez l’utiliser dans un fragment de code VCL personnalisé pour gérer l’accès à votre site d’évaluation ou de production.

Gérez l’accès pour les sites d’évaluation et de production en créant la liste de contrôle d’accès Edge portant le même nom dans les deux environnements. Le code de fragment de code VCL s’applique aux deux environnements.

  1. Connectez-vous à l’administrateur.
  2. Accédez à Magasins > Paramètres > Configuration > Avancé > Système > Cache de page complet > Fastly Configuration.
  3. Développez la section ACL Edge .
  4. Cliquez sur Ajouter une liste de contrôle d’accès pour créer une liste. Placer sur la liste bloquée Pour cet exemple, nommez la liste « ».
  5. Saisissez les valeurs des adresses IP dans la liste. Toutes les adresses IP client ajoutées à cette liste sont bloquées et ne peuvent pas accéder au site.
  6. Si nécessaire, cochez la case Annulé.

Vous référencez la liste de contrôle d’accès Edge par son nom dans votre code de fragment de code VCL.

Créer le VCL personnalisé pour la place sur la liste bloquée

NOTE
Cet exemple montre aux utilisateurs expérimentés comment créer un fragment de code VCL pour configurer des règles de blocage personnalisées à charger vers le service Fastly. Vous pouvez configurer une liste bloquée ou une liste autorisée en fonction du pays à partir de l’Administration d’Adobe Commerce à l’aide de la fonctionnalité Blocage disponible dans le module Fastly CDN pour Magento 2.

Après avoir défini la liste de contrôle d’accès Edge, vous pouvez l’utiliser pour créer le fragment de code VCL afin de bloquer l’accès aux adresses IP spécifiées dans la liste de contrôle d’accès. Vous pouvez utiliser le même fragment de code VCL dans les environnements d’évaluation et de production, mais vous devez charger le fragment de code dans chaque environnement séparément.

Le code de fragment de code VCL personnalisé suivant (format JSON) illustre la logique de blocage des requêtes entrantes avec une adresse IP client correspondant à une adresse dans la liste de contrôle d’accès de la liste bloquée.

{
  "name": "blocklist",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}

Avant de créer un fragment de code basé sur cet exemple, passez en revue les valeurs pour déterminer si vous devez apporter des modifications :

  • name : nom du fragment de code VCL. Pour cet exemple, nous avons utilisé le nom blocklist.

  • priority : détermine à quel moment le fragment de code VCL s'exécute. La priorité est 5 pour s’exécuter immédiatement et vérifier si une requête d’administration provient d’une adresse IP autorisée. Le fragment de code s'exécute avant que l'un des fragments de code VCL de Magento par défaut (magentomodule_*) se voie attribuer une priorité de 50. Définissez une priorité supérieure ou inférieure à 50 pour chaque fragment de code personnalisé en fonction du moment où vous souhaitez que votre fragment de code s’exécute. Les fragments de code dont le numéro de priorité est inférieur s’exécutent en premier.

  • type : spécifie le type de fragment de code VCL qui détermine l'emplacement du fragment de code dans le code VCL généré. Dans cet exemple, nous utilisons recv, qui insère le code VCL dans le sous-programme vcl_recv, sous le code VCL standard et au-dessus de tous les objets. Pour obtenir la liste des types de fragment de code, reportez-vous à la Référence de fragment de code VCL Fastly.

  • content : fragment de code VCL à exécuter, qui vérifie l’adresse IP du client. Si l’adresse IP se trouve dans la liste de contrôle d’accès d’Edge, elle est bloquée avec une erreur de 403 Forbidden pour l’ensemble du site web. Toutes les autres adresses IP client sont autorisées à y accéder.

Après avoir examiné et mis à jour le code de votre environnement, utilisez l’une des méthodes suivantes pour ajouter le fragment de code VCL personnalisé à votre configuration de service Fastly :

Ajouter le fragment de code VCL personnalisé

  1. Connectez-vous à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développez Cache de page complet > Configuration rapide > Fragments de code VCL personnalisés.

  4. Cliquez sur Créer un fragment de code personnalisé.

  5. Ajoutez les valeurs de fragment de code VCL :

    • Nomblocklist

    • Typerecv

    • Priorité5

    • Ajoutez le contenu du fragment de code VCL :

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. Cliquez sur Créer pour générer le fichier de fragment de code VCL avec le modèle de nom type_priority_name.vcl, par exemple recv_5_blocklist.vcl

  7. Une fois la page rechargée, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly pour ajouter le fichier à la configuration de service Fastly.

  8. Après les chargements, actualisez le cache en fonction de la notification en haut de la page.

Valide rapidement la version mise à jour du code VCL pendant le processus de chargement. Si la validation échoue, modifiez le fragment de code VCL personnalisé pour résoudre le problème. Ensuite, chargez à nouveau le VCL.

Exemples VCL supplémentaires pour le blocage de requêtes

Les exemples suivants montrent comment bloquer des requêtes à l’aide d’instructions de condition intégrées au lieu d’une liste ACL.

WARNING
Dans ces exemples, le code VCL est formaté en tant que payload JSON qui peut être enregistrée dans un fichier et envoyée dans une requête API Fastly. Vous pouvez envoyer le fragment de code VCL à partir de l’Admin ou sous la forme d’une chaîne JSON à l’aide de l’API Fastly. Pour éviter les erreurs de validation lorsque vous utilisez l’API Fastly avec une chaîne JSON, vous devez utiliser une barre oblique inverse pour échapper les caractères spéciaux.
NOTE
Si vous soumettez le fragment de code VCL à partir de l'administrateur, extrayez les valeurs individuelles de l'exemple de code VCL et saisissez-les dans les champs correspondants. Par exemple :
  • Nom : <name of the VCL>
  • Dynamique : <0/1>
  • Type : <type>
  • Priorité : <priority>
  • Contenu : <content>

Voir Utilisation de fragments de code VCL dynamiques dans la documentation Fastly VCL.

Exemple de code VCL : bloquer par code de pays

Cet exemple utilise le code de pays ISO 3166-1 à deux caractères pour le pays associé à l’adresse IP.

{
  "name": "blockbycountrycode",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
NOTE
Au lieu d’utiliser un fragment de code VCL personnalisé, vous pouvez utiliser la fonction Fastly Blocage d’Adobe Commerce dans l’administration de l’infrastructure cloud pour configurer le blocage par code de pays ou par liste de codes de pays.

Exemple de code VCL : Bloquer par en-tête de requête HTTP User-Agent

{
  "name": "blockbyuseragent",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
NOTE
Au lieu de charger manuellement des fragments de code VCL personnalisés, vous pouvez les ajouter au répertoire $MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom dans votre environnement. Les fragments de code présents dans ce répertoire sont chargés automatiquement lorsque vous cliquez sur charger un fichier VCL vers Fastly dans Commerce Admin. Consultez la section Déploiement automatisé de fragments de code VCL personnalisés dans la documentation du module Fastly CDN pour Magento 2 .

Modifier le fragment de code VCL personnalisé

  1. Connectez-vous à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développez Cache de page complet > Configuration rapide > Fragments de code VCL personnalisés.

    Gestion des fragments de code VCL personnalisés

  4. Dans la colonne Action, cliquez sur l’icône de paramètres en regard du fragment de code à modifier.

  5. Une fois la page rechargée, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly.

  6. Une fois le chargement terminé, actualisez le cache en fonction de la notification en haut de la page.

WARNING
L’option d’interface utilisateur Fragments de code VCL personnalisés affiche uniquement les fragments de code ajoutés par l’intermédiaire de l’administrateur Adobe Commerce. Si vous ajoutez des fragments de code à l’aide de l’API Fastly, utilisez l’API pour les gérer.

Supprimer le fragment de code VCL personnalisé

  1. Connectez-vous à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développez Cache de page complet > Configuration rapide > Fragments de code VCL personnalisés.

    Gestion des fragments de code VCL personnalisés

  4. Dans la colonne Action, cliquez sur l’icône de la corbeille en regard du fragment de code à supprimer.

  5. Dans la fenêtre modale suivante, cliquez sur DELETE et activez une nouvelle version.

WARNING
L’option d’interface utilisateur Fragments de code VCL personnalisés affiche uniquement les fragments de code ajoutés par l’intermédiaire de l’administrateur Adobe Commerce. Si vous ajoutez des fragments de code à l’aide de l’API Fastly, utilisez l’API pour les gérer.
recommendation-more-help