Comment supprimer les données sensibles de mes journaux CloudFront ?

Lecture de 4 minute(s)
0

Par défaut, les journaux standard d'Amazon CloudFront capturent des données sensibles pour remplir certains champs. Pour des raisons de confidentialité, je souhaite supprimer ces informations des journaux.

Brève description

Remarque : cet article s'appuie sur l'exemple du champ Client-IP (c-ip).

Les journaux CloudFront capturent le champ c-ip comme l'un de ses champs par défaut. Il existe trois façons de supprimer le champ c-ip de vos journaux.

  • Déclencher une fonction AWS Lambda qui supprime le champ de la livraison des journaux à Amazon Simple Storage Service (Amazon S3).
  • Utiliser un processus Amazon Elastic Compute Cloud (Amazon EC2) qui s'exécute à certains intervalles pour supprimer le champ.
  • Utiliser les journaux en temps réel de CloudFront et supprimer le champ sensible avant d'envoyer les données de journal à Amazon S3.

Résolution

Déclencher une fonction Lambda

L'un des moyens de supprimer le champ c-ip consiste à utiliser les événements de notification Amazon S3. Lorsque CloudFront envoie le fichier journal au compartiment Amazon S3, configurez votre compartiment de manière à déclencher une fonction Lambda.

Créer une fonction Lambda

1.    Ouvrez la console AWS Lambda.

2.    Dans Fonctions, créez une nouvelle fonction Lambda avec les configurations suivantes :

  • Utilise le nom de l'objet issu de l'événement Amazon S3.
  • Récupère l'objet depuis le compartiment S3.

3.    Supprimez la colonne c-ip ou remplacez les valeurs par des données anonymisées.

Remarque : remplacez les valeurs pour conserver le même format au cas où d'autres applications traiteraient les journaux plus en détail.

4.    Enregistrez et rechargez le journal sur Amazon S3.

Créer un nouvel événement

1.    Dans le compartiment cible des journaux, accédez à Propriétés.

2.    Dans Notifications d'événements, créez un nouvel événement.

3.    Sélectionnez le type d'événement PUT et la fonction Lambda de destination.

4.    Sélectionnez la fonction Lambda créée à l'étape 1, puis cliquez sur Enregistrer.

Important : pour éviter un appel récursif (boucle infinie) avec votre fonction Lambda, effectuez les actions suivantes :

  • Livrez vos journaux CloudFront avec un préfixe de transit initial. Par exemple, « original ».
  • Déclenchez l'événement Amazon S3 uniquement sur ce préfixe.
  • Configurez la fonction Lambda de manière à livrer les journaux avec un préfixe différent. Par exemple, « traité ».

Si vous envoyez les journaux avec le même préfixe, la fonction Lambda se déclenche une nouvelle fois et crée une invocation récursive. Pour plus d'informations, consultez la rubrique Éviter les appels récursifs avec Amazon S3 et AWS Lambda.

Remarque : pour éviter l'augmentation des coûts d'Amazon S3, configurez une politique de cycle de vie Amazon S3 afin que les journaux d'origine expirent après une certaine période.

Utiliser un processus Amazon EC2

Utilisez Amazon EventBridge pour créer une règle planifiée (cron) qui lance une instance EC2 et traite les fichiers journaux selon une récurrence planifiée. Par exemple, une fois par jour. Une fois le processus terminé, arrêtez l'instance EC2 jusqu'à la prochaine récurrence pour réduire les coûts.

1.    Configurez EventBridge et Lambda de manière à démarrer une instance EC2 à un moment donné. Pour plus d'informations, reportez-vous à la rubrique Comment arrêter et démarrer des instances Amazon EC2 à des intervalles réguliers avec Lambda ?

2.    Sur l'instance EC2, déployez un code qui téléchargera les journaux pendant une période donnée. Par exemple, une journée complète. Supprimez la colonne c-ip pour traiter les journaux, ou remplacez les valeurs des colonnes par des données anonymisées. Rechargez les journaux traités dans le compartiment S3.

Facultatif : fusionnez tous les journaux traités en un seul fichier pour réduire les coûts de transition du cycle de vie Amazon S3. Ce processus est utile si vous prévoyez de stocker les journaux pendant de longues périodes.

Utiliser Kinesis Data Firehose

Utilisez les journaux en temps réel de CloudFront pour sélectionner les champs que vous souhaitez enregistrer. Ensuite, envoyez les données de journal à Amazon S3 via Amazon Kinesis Data Firehose.

Lorsque vous configurez les journaux en temps réel de CloudFront, vous pouvez obtenir une liste des champs inclus dans chaque enregistrement de journal en temps réel. Chaque enregistrement de journal contient jusqu'à 40 champs. Vous avez la possibilité de recevoir tous les champs disponibles ou uniquement ceux que vous devez surveiller et dont vous souhaitez analyser les performances. Désactivez le champ c-ip pour l'exclure de vos journaux.

Remarque : puisque vous utilisez Amazon Kinesis Data Streams, cette option peut représenter un certain coût. Pensez à utiliser les deux autres options (Déclencher une fonction Lambda ou Utiliser un processus Amazon EC2) pour réduire les coûts.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an