Comment puis-je configurer la journalisation complète d’AWS WAF pour stocker les journaux dans Amazon S3 ?

Date de la dernière mise à jour : 19/11/2019

J'ai configuré AWS WAF et je dois à présent configurer une journalisation complète pour stocker les journaux dans Amazon Simple Storage Service (Amazon S3). Comment faire ?

Brève description

Vous pouvez activer la journalisation complète sur une liste de contrôle d'accès web (ACL Web) à l'aide d'un flux Amazon Kinesis Data Firehose destiné à un compartiment Amazon S3 de la même région. Pour ce faire, vous devez utiliser trois services AWS :

  • AWS WAF pour créer les journaux
  • Kinesis Data Firehose pour recevoir les journaux
  • Amazon S3 pour stocker les journaux

Remarque : AWS WAF, Kinesis Data Firehose et Amazon S3 doivent être exécutés dans la même région.

Résolution

Créer un Kinesis Data Firehose

  1. Ouvrez la console Kinesis.
  2. Dans la barre de navigation, choisissez la région dans laquelle votre liste ACL Web est stockée.
  3. Dans le volet de navigation, choisissez « Data Firehose » (Firehose de données).
  4. Choisissez « Create Delivery Stream » (Créer un flux de diffusion).
  5. Pour « Delivery stream name » (Nom du flux de diffusion), entrez un nom pour votre flux de diffusion. Le nom doit commencer par aws-waf-logs- et se terminer par le suffixe de votre choix. Par exemple, aws-waf-logs-demo.
  6. Pour Source, conservez la valeur par défaut « Direct PUT » ou d'autres sources sélectionnées. Ensuite, sélectionnez « Next » (Suivant).
  7. Conservez les options par défaut pour les paramètres suivants :
    Transformation d'enregistrement (désactivée)
    Conversion de format d'enregistrement (Désactivé)
  8. Sélectionnez « Next » (Suivant).
  9. Pour Destination, choisissez Amazon S3.
  10. Dans la section « S3 destination »  (Destination S3) choisissez « Create new » (Créer une nouvelle destination).
  11. Pour « S3 bucket name » (Nom du compartiment S3), saisissez un nom. Pour des raisons d'uniformité, vous pouvez utiliser le même nom que celui que vous avez utilisé pour le flux de diffusion que vous avez créé à l'étape 4.
  12. Choisissez la région dans laquelle les journaux AWS WAF seront stockés.
  13. Choisissez « Create S3 bucket » (Créer un compartiment S3).
  14. (Facultatif) Configurez un préfixe S3 et un préfixe d'erreur.
    Remarque : lespréfixes personnalisés sont utiles lorsque votre compartiment est partagé avec d'autres journaux.
  15. Sélectionnez « Next » (Suivant).
  16. Vous pouvez conserver les options par défaut pour les paramètres suivants :
    « Buffer size » (mémoire tampon) (5)
    « Buffer interval » (Intervalle de la mémoire tampon) (300)
    « S3 compression » (Compression S3) (Désactivée)
    « S3 encryption » (Chiffrement S3) (désactivé)
  17. (Facultatif) Configurez des balises si nécessaire.
  18. Pour « IAM role » (Rôle IAM), choisissez « Create new » (Créer) ou choisissez.
  19. Pour « Role Name » (Nom du rôle), entrez un nom descriptif. Par exemple, firehose_to_s3-waflogs-demo.
  20. Choisissez « Allow » (Autoriser), puis « Next » (Suivant).
  21. Vérifiez la configuration, puis choisissez « Create delivery stream » (Créer un flux de diffusion).

Association d'AWS WAF à Kinesis Data Firehose

  1. Ouvrez la console d’AWS WAF.
  2. Dans le volet de navigation, choisissez « Web ACLs » (ACL Web).
  3. Pour « Filter » (Filtrer), choisissez la région dans laquelle votre liste ACL Web a été créée.
  4. Choisissez la liste ACL Web appropriée dans la liste obtenue, puis choisissez « Logging » (Journalisation).
  5. Choisissez « Enable Logging »(Activer la journalisation).
  6. Pour Amazon Kinesis Data Firehose, choisissez le flux de diffusion que vous avez créé ci-dessus.
  7. (Facultatif) Configurez les champs qui doivent être expurgés à partir des journaux.
  8. Choisissez « Create » (Créer). Tous les journaux AWS WAF sont stockés dans le compartiment Amazon S3 à des fins d'analyse.

Remarque : un journal AWS WAF équivaut à un enregistrement Kinesis Data Firehose. Si vous recevez généralement 10 000 requêtes par seconde, définissez une limite de 10 000 enregistrements par seconde dans Kinesis Data Firehose pour activer la journalisation complète. Dans le cas contraire, AWS WAF n'enregistre pas tous les journaux. Pour plus d'informations, consultez Limites d’Amazon Kinesis Data Firehose.