Collecter les journaux de flux VPC AWS

Compatible avec :

Ce document explique comment collecter les journaux de flux VPC AWS à l'aide d'un transmetteur Google Security Operations.

Pour en savoir plus, consultez Ingérer des données dans Google SecOps.

Un libellé d'ingestion identifie l'analyseur qui normalise les données de journaux brutes au format UDM structuré. Les informations de ce document s'appliquent au parseur avec le libellé d'ingestion AWS_VPC_FLOW.

Formats de journaux de flux VPC AWS compatibles

Google SecOps permet l'ingestion des journaux de flux VPC AWS dans deux formats de texte principaux :

  • Format JSON : le type de journal AWS_VPC_FLOW analyse les journaux au format JSON. Dans ce format, chaque entrée de journal inclut à la fois une clé et sa valeur correspondante, ce qui rend les données auto-descriptives.

  • Format CSV : Google SecOps fournit également un analyseur pour les journaux de flux VPC AWS au format CSV. Dans ce format, les clés de champ ne sont listées qu'une seule fois dans la ligne d'en-tête, les lignes suivantes ne contenant que des valeurs séparées par des virgules.

Pour ingérer des journaux de flux VPC AWS au format CSV, spécifiez le type de journal AWS_VPC_FLOW_CSV lorsque vous configurez votre transmetteur. Pour obtenir des instructions de configuration, consultez Configurer le redirecteur Google SecOps et syslog pour ingérer les journaux de flux VPC AWS.

Étant donné que le format CSV n'inclut pas de clés de champ dans chaque entrée de journal, l'analyseur AWS_VPC_FLOW_CSV repose sur un ordre strict et prédéfini des valeurs. Pour que vos fichiers CSV soient analysés correctement, ils doivent respecter l'ordre des champs suivant :

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

Voici un exemple de ligne de journal CSV :

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

Pour les champs pour lesquels aucune valeur n'est disponible, une valeur vide (par exemple, , ,) doit être transmise pour conserver le bon ordre positionnel dans la ligne CSV.

Avant de commencer

Configurer les journaux de flux VPC AWS

Configurez AWS VPC Flow selon que vous transférez les journaux vers Amazon S3 ou Amazon CloudWatch.

Configurer les journaux de flux pour transférer les journaux vers Amazon S3

Une fois le bucket Amazon S3 créé et configuré, vous pouvez créer des journaux de flux pour vos interfaces réseau, vos sous-réseaux et vos réseaux VPC.

Créer un journal de flux pour une interface réseau

  1. Connectez-vous à la console Amazon EC2.
  2. Dans le volet de navigation, sélectionnez Interfaces réseau.
  3. Sélectionnez une ou plusieurs interfaces réseau.
  4. Sélectionnez Actions> Créer un journal de flux.
  5. Configurez les paramètres des journaux de flux. Pour en savoir plus, consultez la section Configurer les paramètres des journaux de flux de ce document.

Créer un journal de flux pour un sous-réseau

  1. Connectez-vous à la console Amazon VPC.
  2. Dans le volet de navigation, sélectionnez Sous-réseaux.
  3. Sélectionnez un ou plusieurs sous-réseaux.
  4. Sélectionnez Actions> Créer un journal de flux.
  5. Configurez les paramètres des journaux de flux. Pour en savoir plus, consultez la section Configurer les paramètres des journaux de flux de ce document.

Créer un journal de flux pour un VPC

  1. Connectez-vous à la console Amazon VPC.
  2. Dans le volet de navigation, sélectionnez VPC.
  3. Sélectionnez un ou plusieurs VPC.
  4. Sélectionnez Actions> Créer un journal de flux.
  5. Configurez les paramètres des journaux de flux. Pour en savoir plus, consultez la section Configurer les paramètres des journaux de flux de ce document.

Configurer les paramètres des journaux de flux

  1. Dans la section Filtre, spécifiez le trafic IP à consigner :

    • Accepter : enregistre uniquement le trafic accepté.

    • Refuser : enregistre uniquement le trafic refusé.

    • Tous : enregistre le trafic accepté et refusé.

  2. Dans la section Intervalle d'agrégation maximal, sélectionnez 1 minute.

  3. Dans la section Destination, sélectionnez Envoyer vers un bucket Amazon S3.

  4. Dans la section ARN du bucket S3, spécifiez l'ARN d'un bucket Amazon S3.

  5. Dans la section Format des enregistrements de journaux, spécifiez les formats suivants pour l'enregistrement du journal de flux :

    1. Pour utiliser le format d'enregistrement des journaux de flux par défaut, sélectionnez Format AWS par défaut.
    2. Pour créer un format personnalisé, sélectionnez Format personnalisé.
  6. Configurez le flux de journaux VPC avec le format de journal AWS personnalisé pour utiliser les fonctionnalités d'adresse IP réelle MSS.

  7. Dans la liste Format du journal, sélectionnez tous les attributs.

  8. Dans la section Aperçu du format, examinez le format personnalisé.

  9. Dans la section Format du fichier journal, sélectionnez Texte (par défaut).

  10. Dans la section Préfixe S3 compatible avec Hive, laissez la case Activer décochée.

  11. Dans la section Partitionner les journaux par heure, sélectionnez Toutes les heures (60 minutes).

  12. Pour ajouter un tag au journal de flux, sélectionnez Ajouter un tag, puis spécifiez la clé et la valeur du tag.

  13. Sélectionnez Créer un journal de flux. Pour en savoir plus, consultez Publier des journaux de flux sur Amazon S3.

Configurer les journaux de flux vers Amazon CloudWatch

Vous pouvez configurer les journaux de flux à partir des VPC, des sous-réseaux ou des interfaces réseau.

  1. Dans la section Filtre, spécifiez le type de trafic IP à enregistrer :

    • Accepter : enregistre uniquement le trafic accepté.

    • Refuser : enregistre uniquement le trafic refusé.

    • Tous : enregistre le trafic accepté et refusé.

  2. Dans la section Intervalle d'agrégation maximal, sélectionnez 1 minute.

  3. Dans la section Destination, sélectionnez Envoyer à CloudWatch Logs.

  4. Dans la section Destination log group (Groupe de journaux de destination), indiquez le nom du groupe de journaux de destination que vous avez créé.

  5. Dans la liste Rôle IAM, sélectionnez le nom du rôle. Le nom de rôle sélectionné dispose des autorisations nécessaires pour publier des journaux dans les journaux CloudWatch.

    Le rôle IAM doit inclure les autorisations suivantes :

       {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "logs:CreateLogGroup",
               "logs:CreateLogStream",
               "logs:PutLogEvents",
               "logs:DescribeLogGroups",
               "logs:DescribeLogStreams"
           ],
           "Resource": "*"
         }
        ]
       }
    
  6. Dans la section Format des enregistrements de journaux, sélectionnez Format personnalisé pour l'enregistrement du journal de flux.

  7. Pour ajouter un tag au journal de flux, sélectionnez Ajouter un tag, puis spécifiez la clé et la valeur du tag.

  8. Sélectionnez Créer un journal de flux. Pour en savoir plus, consultez Publier des journaux de flux sur Amazon S3.

Amazon S3 peut être configuré pour envoyer les notifications d'événement à Amazon SQS. Pour en savoir plus, consultez Configurer un bucket pour les notifications (rubrique SNS ou file d'attente SQS).

Des règles utilisateur IAM sont requises pour Amazon S3 et Amazon SQS si vous utilisez Amazon SQS (Amazon S3 avec Amazon SQS) comme méthode de collecte des journaux. Pour en savoir plus, consultez Utiliser des stratégies IAM avec AWS KMS.

En fonction du service et de la région, identifiez les points de terminaison pour la connectivité en vous référant à la documentation AWS suivante :

Configurer le transfert Google SecOps et Syslog pour ingérer les journaux de flux VPC AWS

  1. Sélectionnez Paramètres SIEM> Relais.
  2. Cliquez sur Ajouter un nouveau transfert.
  3. Saisissez un nom unique pour le nom du transitaire.
  4. Cliquez sur Envoyer, puis sur Confirmer. Le redirecteur est ajouté et la fenêtre Ajouter une configuration de collecteur s'affiche.
  5. Dans le champ Nom du collecteur, saisissez un nom.
  6. Dans le champ Type de journal, sélectionnez Flux VPC AWS ou Flux VPC AWS (CSV), selon le format de votre journal.
  7. Dans le champ Type de collecteur, sélectionnez Syslog.
  8. Configurez les paramètres d'entrée obligatoires suivants :
    • Protocole : spécifiez le protocole de connexion que le collecteur utilisera pour écouter les données Syslog.
    • Adresse : spécifiez l'adresse IP ou le nom d'hôte cibles où réside le collecteur et les adresses des données syslog.
    • Port : spécifiez le port cible sur lequel le collecteur réside et écoute les données syslog.
  9. Cliquez sur Envoyer, puis sur Confirmer.

Pour en savoir plus sur les répartiteurs Google SecOps, consultez la documentation sur les répartiteurs Google Security Operations. Pour en savoir plus sur les exigences de chaque type de redirecteur, consultez Configuration des redirecteurs par type.

Si vous rencontrez des problèmes lors de la création de transferts, contactez l'assistance Google Security Operations.

Référence du mappage de champs

Ce parseur transforme les journaux de flux VPC AWS bruts (au format JSON ou CSV) en format UDM structuré. Il extrait les champs pertinents, les mappe pour qu'ils correspondent au schéma UDM et enrichit les données avec un contexte supplémentaire (type de ressource, fournisseur de services cloud et libellés, par exemple) pour permettre une analyse plus approfondie. La logique de mappage est cohérente dans les deux formats : l'analyseur CSV s'appuie sur un ordre de champ prédéfini pour aligner les valeurs avec les mêmes champs UDM utilisés dans le format JSON.

Table de mappage UDM pour l'analyseur AWS EC2 VPC

Champ du journal (ordre croissant) Mappage UDM Logique
CidrBlock event.idm.entity.entity.resource.attribute.labels.cidr_block Mappé directement à partir du champ "CidrBlock" dans le journal brut.
CidrBlock event.idm.entity.entity.network.ip_subnet_range Mappé directement à partir du champ "CidrBlock" dans le journal brut.
CidrBlockAssociation.AssociationID event.idm.entity.entity.resource.attribute.labels.cidr_block_association_association_id Mappé directement à partir du champ "AssociationID" dans le tableau "CidrBlockAssociation" du journal brut.
CidrBlockAssociation.CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_state Directement mappé à partir du champ "State" dans l'objet "CidrBlockState" du tableau "CidrBlockAssociation" dans le journal brut.
CidrBlockAssociation.CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_status_message Directement mappé à partir du champ "StatusMessage" dans l'objet "CidrBlockState" du tableau "CidrBlockAssociation" dans le journal brut.
DhcpOptionsID event.idm.entity.entity.resource.attribute.labels.dhcp_options_id Mappé directement à partir du champ "DhcpOptionsID" du journal brut.
ID event.idm.entity.entity.resource.product_object_id Mappé directement à partir du champ "ID" du journal brut, qui est renommé "VpcID" dans l'analyseur.
ID event.idm.entity.metadata.product_entity_id Mappé directement à partir du champ "ID" du journal brut, qui est renommé "VpcID" dans l'analyseur.
InstanceTenancy event.idm.entity.entity.resource.attribute.labels.instance_tenancy Directement mappé à partir du champ "InstanceTenancy" du journal brut.
IsDefault event.idm.entity.entity.resource.attribute.labels.is_default Mappé directement à partir du champ "IsDefault" dans le journal brut.
Ipv6CidrBlockAssociationSet.AssociationID event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_association_id Mappé directement à partir du champ "AssociationID" dans le tableau "Ipv6CidrBlockAssociationSet" du journal brut.
Ipv6CidrBlockAssociationSet.Ipv6CidrBlock event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block Mappé directement à partir du champ "Ipv6CidrBlock" dans le tableau "Ipv6CidrBlockAssociationSet" du journal brut.
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_state Directement mappé à partir du champ "State" dans l'objet "Ipv6CidrBlockState" du tableau "Ipv6CidrBlockAssociationSet" dans le journal brut.
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_status_message Directement mappé à partir du champ "StatusMessage" dans l'objet "Ipv6CidrBlockState" du tableau "Ipv6CidrBlockAssociationSet" dans le journal brut.
Ipv6CidrBlockAssociationSet.Ipv6Pool event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_pool Mappé directement à partir du champ "Ipv6Pool" dans le tableau "Ipv6CidrBlockAssociationSet" du journal brut.
Ipv6CidrBlockAssociationSet.NetworkBorderGroup event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_network_border_group Mappé directement à partir du champ "NetworkBorderGroup" dans le tableau "Ipv6CidrBlockAssociationSet" du journal brut.
OwnerID event.idm.entity.entity.resource.attribute.labels.owner_id Mappé directement à partir du champ "OwnerID" dans le journal brut.
État event.idm.entity.entity.resource.attribute.labels.state Mappé directement à partir du champ "État" du journal brut.
TagSet.Key event.idm.entity.entity.resource.attribute.labels.key Directement mappé à partir du champ "Key" (Clé) dans le tableau "TagSet" du journal brut. Un libellé est créé pour chaque tag du "TagSet".
TagSet.Value event.idm.entity.entity.resource.attribute.labels.value Mappé directement à partir du champ "Value" du tableau "TagSet" dans le journal brut. La valeur de chaque libellé correspondant créé à partir du champ "Clé" est alors renseignée.
N/A event.idm.entity.entity.resource.attribute.cloud.environment Codé en dur sur "AMAZON_WEB_SERVICES" dans le code du parseur.
N/A event.idm.entity.entity.resource.resource_type Codé en dur sur "VPC_NETWORK" dans le code du parseur.
N/A event.idm.entity.metadata.collected_timestamp Valeur insérée avec l'horodatage de l'événement, qui est dérivé du champ "collection_time" dans le journal brut.
N/A event.idm.entity.metadata.entity_type Codé en dur sur "RESOURCE" dans le code du parseur.
N/A event.idm.entity.metadata.product_name Codé en dur sur "Amazon VPC" dans le code du parseur.
N/A event.idm.entity.metadata.vendor_name Codé en dur sur "AWS" dans le code du parseur.
N/A events.timestamp Valeur insérée avec l'horodatage de l'événement, qui est dérivé du champ "collection_time" dans le journal brut.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.