Affichage des objets de journaux de flux
Un journal de flux est un récapitulatif du trafic réseau qui est identifié de manière unique par une connexion entre deux cartes d'interface réseau virtuelles (vNIC), dans une fenêtre de temps donnée. Il décrit le trafic que le pare-feu accepte (groupes de sécurité pertinents ou ACL de réseau) ou rejette, mais pas les deux. Il contient des informations d'en-tête et des statistiques relatives au contenu.
Les journaux de flux sont enregistrés périodiquement sur IBM Cloud® Object Storage toutes les 5 minutes environ. Ils sont publiés plus fréquemment dans les cas où le collecteur de journaux de flux collecte des flux ayant atteint 100 ko.
Actuellement, les journaux de flux collectent le trafic TCP (Transmission Control Protocol) et UDP (User Datagram Protocol), mais pas le trafic ICMP (Internet Control Message Protocol).
Chaque objet de journal de flux contient des journaux de flux individuels. Pour visualiser ou analyser les journaux de flux, utilisez le IBM Analytics Engine. Pour plus d'informations, voir le tutoriel de démarrage IBM Analytics Engine.
IBM Cloud Data Engine est obsolète et n'est plus pris en charge. Si vous utilisez actuellement des instances existantes d' Data Engine, il est recommandé de migrer vos charges de travail vers IBM Analytics Engine.
Format des données de journal de flux
Les récapitulatifs de trafic des journaux de flux contiennent les informations suivantes :
- Le nombre d'octets/paquets, séparément pour RX (receive) et TX (transmission).
- Il indiquent si une connexion démarre ou s'arrête dans la fenêtre de temps.
Etant donné qu'un journal des flux reflète le trafic réseau dans une fenêtre de temps limitée, une connexion à long terme peut provoquer l'émission de plusieurs journaux de flux. Pour chaque connexion traitée par une carte vNIC, une séquence ordonnée dans le temps de journaux de flux est émise (sans compter les échecs). Ces journaux de flux apparaissent dans un ou plusieurs objets d' Object Storage.
L'élément initiator_ip dans un journal de flux est défini comme étant l'adresse IP source_ip qui apparaît dans le premier paquet de sa connexion qui a atteint la carte vNIC. Au niveau de l'implémentation, ce paquet
est généralement celui qui provoque l'ajout de la nouvelle connexion à la table des connexions. De même, le paramètre target_ip dans le journal de flux est défini sur la zone dest_ip de ce même paquet.
Si la carte vNIC initiatrice de la connexion et la carte vNIC cible de la connexion activent toutes les deux des journaux de flux, les zones d'IP et de ports de l'initiatrice et de la cible sont identiques dans les journaux de flux des deux cartes vNIC.
Exemple : prenons le cas d'un client qui envoie une requête HTTP à un serveur web. Le journal de flux de cette demande HTTP sur la vNIC côté client présente l'adresse IP client initiator_ip. Le journal de flux correspondant sur
la vNIC côté serveur présente la même adresse initiator_ip.
Les éléments start_time et end_time dans un journal de flux sont les suivants :
- Capture time : heure à laquelle les éléments de chemin de données ont été demandés pour les compteurs de trafic.
- Data path time : temps tel qu'il est conservé dans l'élément de chemin de données lui-même.
Il est possible que le journal de flux ne reflète pas tout le trafic (par exemple, dans le chemin de données) entre les heures start_time et end_time d'un journal de flux. En d'autres termes, il se peut que les paquets
envoyés et reçus par la carte vNIC vers la fin de la fenêtre de capture ne soient reflétés que dans un journal de flux d'une fenêtre start_time ultérieure.
Les journaux de flux reflètent le trafic réel sur les connexions : si aucun trafic n'est détecté sur une connexion dans une fenêtre de capture, aucun journal de flux n'apparaît pour cette connexion dans l'objet d' Object Storage ion pour cette fenêtre. Cela signifie que la séquence des journaux de flux pour une connexion peut être mappée à une séquence d'objets d' Object Storage s non consécutifs.
Il n'est pas nécessaire de trier le tableau des journaux de flux d'un objet dans un ordre spécifique.
Trafic rejeté :
- Un journal de flux spécifique récapitule le trafic rejeté ou accepté, jamais les deux.
- La séquence des journaux de flux pour une connexion peut présenter des chevauchements de temps entre les journaux de flux acceptés et rejetés.
- Les paquets rejetés qui ne sont pas associés à une connexion existante (par exemple, un groupe de sécurité ou une liste de contrôle d'accès réseau rejette l'initiation de la connexion).
- Le nombre de paquets rejetés sur une connexion existante (par exemple, le trafic qui ne correspond pas à la machine d'état TCP ou une règle de liste de contrôle d'accès réseau modifiée à mi-connexion).
- Les paquets rejetés sont inscrits dans des journaux de flux distincts selon qu'ils sont entrants ou sortants.
Les flux sont étiquetés comme étant rejetés si leurs paquets sont bloqués par des règles de groupe de sécurité ou de liste de contrôle d'accès au réseau.
Format des objets de journal de flux
Les journaux de flux sont enregistrés dans le compartiment Object Storage spécifié par l'utilisateur selon la convention de nommage suivante :
ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz
Où :
{stream-id}est une chaîne de date et d'heure au format ISO 8601yyyymmddThhmmssZ(Temps universel coordonné), définie comme la date/heure de création du premier objet dansdirectory.{sequence-number}est un compteur d'objets dans le flux, représenté sous la forme d'une zone de huit caractères, remplie de zéro (%08d).{all|ingress|egress}indique le type de trafic inclus dans le flux.{xxxx}est l'année sous la forme de quatre chiffres.{yy}est le mois sous la forme de deux chiffres, avec un zéro au début pour les neuf premiers mois.{zz}est le jour du mois sous la forme de deux chiffres, avec un zéro au début pour les neuf premiers jours.{hh}est l'heure avec des zéros au début pour les neuf premières heures (par exemple 00-24).
Toutes les occurrences de caractères non sécurisés d'URL dans le chemin d'accès sont codées par URL.
L'objet d' Object Storage s d'un journal de flux contient un seul objet JSON valide. L'objet Object Storage est .gz compressé.
Les champs d'en-tête d'objet spécifiés dans le tableau suivant sont écrits dans les métadonnées de l'objet Object Storage.
Champs d'en-tête d'objet des journaux de flux (par objet S d' Object Storage )
| Zone | Type | Description |
|---|---|---|
version |
chaîne | Version sémantique. |
collector_crn |
chaîne | Nom de ressource de cloud (CRN) du collecteur de journaux de flux. |
attached_endpoint_type |
chaîne | Actuellement, la seule valeur est vnic. |
network_interface_id |
chaîne | ID vnic car il n'y a pas de CRN vNIC. |
instance_crn |
chaîne | CRN de l'instance à laquelle l'interface réseau est associée. |
vpc_crn |
chaîne | CRN du VPC dont le collecteur de journaux de flux est membre. |
capture_start_time |
chaîne | Date et heure RFC 3339 (temps universel coordonné) |
capture_end_time |
chaîne | Date et heure RFC 3339 (temps universel coordonné) |
state |
chaîne | Indique l'état opérationnel du collecteur de journal de flux. OK signifie que les données sont collectées et expédiées sans aucune erreur. skip data indique les données perdues au cours de cet intervalle de
collecte (par exemple, en raison du taux élevé de paquets SYN rejetés). |
number_of_flow_logs |
uin32 | Nombre d'éléments dans un tableau flow_logs. Comme ce nombre est très variable, il est utile pour obtenir rapidement le nombre de journaux de flux contenus dans un seul objet d' Object Storage, sans avoir à télécharger l'objet
au préalable. |
flow_logs |
tableau d'objets JSON | Il peut s'agir d'un tableau vide, ce qui indique que le trafic est nul : no traffic. |
Zones des journaux de flux
| Zone | Type | Description |
|---|---|---|
start_time |
chaîne | Lorsque le premier octet d'un journal de flux a été capturé et vu dans le chemin de données (RFC 3339 Date et heure - Temps universel coordonné). |
end_time |
chaîne | Lorsque le dernier octet d'un journal de flux a été capturé et vu dans le chemin de données (RFC 3339 Date et heure - Temps universel coordonné). |
connection_start_time |
chaîne | Lorsque le premier octet d'une connexion de journal de flux a été capturé et vu dans le chemin de données (RFC 3339 Date et Time - Coordinated Universal Time). |
direction |
chaîne | Les valeurs sont I pour les données entrantes ou O pour les données sortantes. Si le premier paquet de la connexion a été reçu par le vNIC, la direction est I. Si le premier paquet a été
envoyé par le vNIC, la direction est O. |
action |
chaîne | Les valeurs sont accepted (le trafic résumé par ce flux a été accepté) ou rejected (le trafic a été rejeté). |
initiator_ip |
chaîne | (Adresse IPv4) IP source telle qu'elle apparaît dans le premier paquet traité par la carte vNIC sur cette connexion. Si direction=="outbound", il s'agit d'une adresse IP privée associée à la carte vNIC. |
target_ip |
chaîne | (Adresse IPv4) IP de destination telle qu'elle apparaît dans le premier paquet traité par la carte vNIC sur cette connexion. Si direction=="inbound", il s'agit d'une adresse IP privée associée à la carte vNIC. |
initiator_port |
uint16 | Port source TCP/UDP, tel qu'il apparaît dans le premier paquet traité par cette carte vNIC sur cette connexion. |
target_port |
uint16 | Port de destination TCP/UDP, tel qu'il apparaît dans le premier paquet traité par cette carte vNIC sur cette connexion. |
transport_protocol |
uint8 | Numéro de protocole (TCP ou UDP) de l'autorité IANA (Internet Assigned Numbers Authority). |
ether_type |
chaîne | Actuellement, IPv4 est la seule valeur. |
was_initiated |
booléen | Connexion initiée dans ce journal de flux. |
was_terminated |
booléen | Connexion terminée (par exemple, timeout/RST/Final-FIN). |
bytes_from_initiator |
uint64 | Nombre d'octets sur la connexion dans la fenêtre de temps du journal de flux, de l'initiateur à la cible. |
packets_from_initiator |
uint64 | Nombre de paquets sur la connexion dans la fenêtre de temps du journal de flux, de l'initiateur à la cible. |
bytes_from_target |
uint64 | Nombre d'octets sur la connexion dans la fenêtre de temps du journal de flux, de la cible à l'initiateur. |
packets_from_target |
uint64 | Nombre de paquets sur la connexion dans la fenêtre de temps du journal de flux, de la cible à l'initiateur. |
cumulative_bytes_from_initiator |
uint64 | Nombre d'octets depuis le lancement de la connexion, de l'initiateur à la cible. |
cumulative_packets_from_initiator |
uint64 | Nombre de paquets depuis le lancement de la connexion, de l'initiateur à la cible. |
cumulative_bytes_from_target |
uint64 | Nombre d'octets depuis le lancement de la connexion, de la cible à l'initiateur. |
cumulative_packets_from_target |
uint64 | Nombre de paquets depuis le lancement de la connexion, de la cible à l'initiateur. |
Dans la plupart des cas, vous pouvez trouver la zone de direction en comparant l'adresse IP privé de la carte vNIC avec les IP source et destination. Cependant, cette zone est pratique pour les requêtes.
Exemple d'objet de journal de flux
{
"version": "0.0.1",
"collector_crn": "crn",
"attached_endpoint_type": "vnic",
"network_interface_id": "crn",
"instance_crn": "crn",
"vpc_crn": "crn"
"capture_end_time": "2008-09-15T15:53:00Z",
"capture_start_time": "2008-09-15T15:00:00Z",
"state": "ok",
"number_of_flow_logs" : 1,
"flow_logs": [
{
"start_time": "2008-09-15T15:53:00",
"end_time": "2008-09-15T15:40:00",
"direction": "O",
"action": "accepted",
"initiator_ip": "1.2.3.4",
"initiator_port": 20033,
"target_ip": "5.6.7.8",
"target_port": 80,
"transport_protocol": 6,
"ether_type": "IPv4",
"was_initiated": true,
"was_terminated": false,
"bytes_from_initiator": 12000,
"packets_from_initiator": 2212,
"bytes_from_target": 323232,
"packets_from_target": 3232
"cumulative_packets_from_initiator": 2212,
"cumulative_packets_from_target": 3232,
"cumulative_bytes_from_target": 323232,
"cumulative_bytes_from_initiator": 12000,
}
],
}
Affichage des fichiers journaux de flux générés à partir du compartiment Object Storage
Si vous utilisez le plan tarifaire Lite (gratuit) pour IBM Cloud Object Storage, vous pouvez accéder aux fichiers d'objets de journal de flux générés directement à partir du seau Object Storage pour vérifier que les fichiers ont été créés avec succès et que les objets sont en cours de génération.
Pour afficher les fichiers journaux de flux générés à partir du compartiment Object Storage, procédez comme suit:
-
Pour vous assurer que les journaux de flux sont capturés, vérifiez le compartiment Object Storage.
-
Naviguez dans le dossier pour trouver votre VPC ou la ressource sur laquelle vous avez configuré la surveillance.
-
Explorez la ressource en aval pour trouver la ressource réseau que vous surveillez.
Si la configuration est correcte, vous devriez voir plusieurs fichiers gzip pour chaque entrée de journal.
Pour s'assurer que les données sont capturées, téléchargez l'un des fichiers pour en visualiser le contenu et vérifier que le trafic est bien capturé.