Comment puis-je restreindre le trafic direct vers un ALB et autoriser le trafic via CloudFront uniquement à l'aide d'AWS WAF ?

Dernière mise à jour : 20/07/2022

Je veux restreindre l'accès direct des utilisateurs à un Application Load Balancer (ALB) et autoriser l'accès uniquement via Amazon CloudFront à l'aide d'AWS WAF. Comment puis-je y parvenir à l'aide d'AWS WAF ?

Solution

Pour restreindre le trafic direct vers un ALB et autoriser le trafic uniquement via CloudFront à l'aide d'AWS WAF, procédez comme suit :

  1. Configurez CloudFront pour ajouter un en-tête HTTP personnalisé avec une valeur secrète dans les demandes que CloudFront envoie à l'ALB.
  2. Créez une règle dans votre ACL Web AWS WAF associée à l'ALB pour bloquer les demandes qui ne contiennent pas la valeur secrète de l'en-tête HTTP personnalisé.

Configurer CloudFront pour ajouter un en-tête HTTP personnalisé avec une valeur secrète dans les demandes qu'il envoie à l'ALB

  1. Ouvrez la console Amazon CloudFront.
  2. Dans le panneau de navigation, choisissez Distributions (Distributions).
  3. Sélectionnez l'ID de votre distribution.
  4. Choisissez Origins (Origines).
  5. Sélectionnez votre origine ALB, puis choisissez Edit (Modifier).
    Remarque : si vous n'avez pas d'origine ALB, consultez Création d'une distribution ou Mise à jour d'une distribution.
  6. Pour Add custom header (Ajouter un en-tête personnalisé), ajoutez le nom de l'en-tête et la valeur. Un exemple de nom d'en-tête est Custom-header et la valeur est Random-12345.
    Important : considérez le nom d'en-tête et la valeur comme des informations d'identification sécurisées, comme un nom d'utilisateur et un mot de passe.
  7. Choisissez Save changes (Enregistrer les modifications).

Création d'une règle dans votre ACL Web AWS WAF associée à l'ALB pour bloquer les demandes qui ne contiennent pas la valeur secrète de l'en-tête HTTP personnalisé

Remarque : si vous n'avez pas d'ACL Web existante associée à votre ALB, suivez les étapes de la section Création d'une ACL Web AWS WAF. Si vous avez une ACL Web existante associée à votre ALB, passez alors à Création d'une règle.

Créer une ACL Web AWS WAF

  1. Ouvrez la console AWS WAF.
  2. Dans le panneau de navigation, sous AWS WAF, choisissez Web ACLs (ACL Web).
  3. Pour Region (Région), sélectionnez la région AWS où se trouve votre ALB.
  4. Choisissez Create Web ACL (Créer une ACL Web), puis saisissez un Name (Nom).
  5. Pour Associated AWS resources (Ressources AWS associées), associez votre ALB, puis sélectionnez Next (Suivant).
  6. Pour Default Web ACL action for requests that don't match any rules (Action par défaut de l'ACL Web pour les demandes qui ne correspondent à aucune règle), choisissez Allow (Autoriser), puis Next (Suivant).
  7. Pour Request sampling options (Options d'échantillonnage des demandes), choisissez Enable sampled requests (Activer les demandes échantillonnées), puis Next (Suivant).
  8. Vérifiez la configuration de l'ACL Web. Si elle correspond à vos spécifications, sélectionnez Create Web ACL (Créer une ACL Web).

Création d'une règle

  1. Ouvrez la console AWS WAF.
  2. Dans le panneau de navigation, sous AWS WAF, choisissez Web ACLs (ACL Web).
  3. Pour Region (Région), sélectionnez la région AWS où se trouve votre ALB.
  4. Sélectionnez l'ACL Web à laquelle vous avez associé votre ALB.
  5. Choisissez Rules (Règles), puis Add Rules (Ajouter des règles), Add my own rules and rule groups (Ajouter mes propres règles et groupes de règles).
  6. Pour Name (Nom), saisissez un nom de règle, puis choisissez Regular Rule (Règle régulière).
  7. Pour If a request (Si une demande), choisissez doesn’t match the statement (NOT) (ne correspond pas à l'instruction (NOT)).
  8. Dans Statement 1 (Instruction 1) :
    Pour Inspect (Inspecter), choisissez Single Header (En-tête unique).
    Pour Header field name (Nom du champ d'en-tête), saisissez le nom de l'en-tête créé dans CloudFront. Par exemple, Custom-header.
    Pour Match type (Type de correspondance), choisissez Exactly matches string (Correspondance exacte).
    Pour String to match (Chaîne à faire correspondre), saisissez la valeur créée dans CloudFront. Par exemple, Random-12345.
    Pour Text transformation (Transformation de texte), choisissez None (Aucune).
  9. Pour Action, choisissez Block (Bloquer).
  10. Choisissez Save rule (Enregistrer la règle).
  11. Pour Set rule priority (Définir la priorité de la règle), si vous avez plusieurs règles, définissez cette règle sur la priorité la plus élevée.
  12. Choisissez Save (Enregistrer).

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?