Interrogation des journaux de flux Amazon VPC - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Interrogation des journaux de flux Amazon VPC

Les journaux de flux Amazon Virtual Private Cloud capturent des informations sur le trafic IP circulant vers et depuis les interfaces réseau d'un VPC. Utilisez les journaux pour examiner les modèles de trafic réseau, et identifier les menaces et les risques au sein de votre réseau VPC.

Avant de commencer à interroger les journaux dans Athena, activez les journaux de flux VPC et configurez-les pour qu'ils soient enregistrés dans votre compartiment Amazon S3. Une fois que vous avez créé les journaux, laissez-les s'exécuter quelques minutes pour collecter les données. Les journaux sont créés dans un format de compression GZIP que Athena vous permet d'interroger directement.

Lorsque vous créez un journal de flux VPC, vous pouvez utiliser le format par défaut ou spécifier un format personnalisé. C'est dans un format personnalisé que vous spécifiez les champs à renvoyer dans le journal de flux et l'ordre dans lequel ils doivent apparaître. Pour de plus amples informations, veuillez consulter Enregistrements de journaux de flux dans le Amazon VPC Guide de l'utilisateur.

Création de la table pour les journaux de flux VPC

La procédure suivante crée une table Amazon VPC pour les journaux de flux VPC qui utilisent le format par défaut. Si vous créez un journal de flux avec un format personnalisé, vous devez créer une table avec des champs correspondant à ceux que vous avez spécifiés lors de la création du journal de flux, dans le même ordre que celui où vous les avez spécifiés.

Pour créer la table Amazon VPC

  1. Copiez et collez l'instruction DDL suivante dans l’éditeur de requêtes de la console Athena :

    CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs ( version int, account string, interfaceid string, sourceaddress string, destinationaddress string, sourceport int, destinationport int, protocol int, numpackets int, numbytes bigint, starttime int, endtime int, action string, logstatus string ) PARTITIONED BY (`date` date) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's3://your_log_bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/' TBLPROPERTIES ("skip.header.line.count"="1");

    Notez les points suivants :

    • La requête spécifie ROW FORMAT DELIMITED et omet de spécifier un SerDe. Cela signifie que la requête utilise le LazySimpleSerDe pour fichiers CSV, TSV et avec séparateur personnalisé. Dans cette requête, les champs sont terminés par un espace.

    • La clause PARTITIONED BY utilise le type date. Cela permet d'utiliser des opérateurs mathématiques dans les requêtes pour sélectionner ce qui est plus ancien ou plus récent par rapport à une certaine date.

      Note

      Étant donné que date est un mot-clé réservé dans les instructions DDL, il est entouré de guillemets inversés. Pour plus d'informations, consultez Mots-clés réservés.

    • Pour un journal de flux VPC avec un format personnalisé, modifiez les champs pour qu'ils correspondent aux champs que vous avez spécifiés lors de la création du journal de flux.

  2. Modifiez le préfixe LOCATION 's3://your_log_bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/' afin qu'il pointe vers le compartiment Amazon S3 contenant vos données de journaux.

  3. Exécutez la requête dans la console Athena. Une fois que la requête est terminée, Athena enregistre la table vpc_flow_logs, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

  4. Créez des partitions pour être en mesure de lire les données, comme dans l'exemple de requête suivant. Cette requête suivant crée une partition unique pour une date spécifique. Remplacez les espaces réservés de date et d'emplacement en fonction des besoins.

    Note

    Cette requête crée seulement une partition unique, pour une date que vous spécifiez. Pour automatiser le processus, utilisez un script qui exécute cette requête et crée ainsi des partitions pour le year/month/day.

    ALTER TABLE vpc_flow_logs ADD PARTITION (`date`='YYYY-MM-dd') location 's3://your_log_bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/YYYY/MM/dd';

Exemple de requêtes pour les journaux de flux Amazon VPC

L'exemple de requête suivant répertorie un maximum de 100 journaux de flux pour la date spécifiée.

SELECT * FROM vpc_flow_logs WHERE date = DATE('2020-05-04') LIMIT 100;

La requête suivante répertorie toutes les connexions TCP rejetées et utilise la nouvelle colonne de partition de date, date, pour en extraire le jour de la semaine pendant lequel ces événements sont survenus.

SELECT day_of_week(date) AS day, date, interfaceid, sourceaddress, action, protocol FROM vpc_flow_logs WHERE action = 'REJECT' AND protocol = 6 LIMIT 100;

Pour voir lequel de vos serveurs reçoit le plus grand nombre de demandes HTTPS, utilisez cette requête. Elle comptabilise le nombre de paquets reçus sur le port HTTPS 443, les regroupe par adresse IP de destination et renvoie les 10 principaux.

SELECT SUM(numpackets) AS packetcount, destinationaddress FROM vpc_flow_logs WHERE destinationport = 443 AND date > current_date - interval '7' day GROUP BY destinationaddress ORDER BY packetcount DESC LIMIT 10;

Pour plus d'informations, consultez le billet de blog AWS sur le Big Data Analyzing VPC Flow Logs with Amazon Kinesis Firehose, Athena, and Amazon QuickSight.