Tous les produits
Search
Centre de documentation

Security Center:Utiliser des requêtes et analyses de journal personnalisées

Dernière mise à jour :Aug 10, 2026

La page Log Analysis de Security Center vous permet de rédiger des requêtes personnalisées et d'effectuer des analyses statistiques sur vos journaux de sécurité. Utilisez la syntaxe décrite dans cette rubrique pour filtrer les journaux par mot-clé ou par champ, agréger les résultats avec SQL et analyser les modèles de connexion selon l'horodatage ou l'adresse IP.

Fonctionnement

Une instruction de requête se compose de deux parties séparées par une barre verticale (|) :

<search syntax> | <analytics syntax>

Ces deux parties sont facultatives :

Partie Fonction Limites
Recherche Filtre les journaux par mot-clé, valeur de champ ou plage numérique Impossible d'agréger ou de calculer des statistiques
Analyse Agrège et calcule des statistiques sur les résultats filtrés ou sur l'ensemble des données de la plage temporelle Impossible de filtrer par mot-clé en texte intégral de manière autonome
  • Si la partie de recherche est * ou vide, aucun filtre n'est appliqué : tous les journaux de la plage temporelle sélectionnée sont transmis à la partie d'analyse.

  • Si la partie d'analyse est vide, les entrées de journal correspondantes sont renvoyées telles quelles, sans calcul de statistiques.

Pour ouvrir l'éditeur de requêtes, accédez à Risk Governance > Log Analysis dans le volet de navigation de gauche de la console Security Center, puis saisissez votre instruction dans Search & Analyze.

Syntaxe de recherche

La partie de recherche prend en charge les requêtes en texte intégral et les recherches spécifiques aux champs. L'éditeur de requêtes accepte la saisie multiligne et la coloration syntaxique.

Requête en texte intégral

Recherchez dans tous les champs du journal sans spécifier de nom de champ. Séparez les mots-clés par un espace ou par and. Placez les expressions contenant des espaces entre guillemets doubles (").

Requête Résultat
www.aliyundoc.com 404 Journaux contenant les deux termes
www.aliyundoc.com and 404 Identique au précédent
www.aliyundoc.com and (error or 404) Journaux contenant www.aliyundoc.com et soit error, soit 404
www.aliyundoc.com and failed_* Journaux contenant www.aliyundoc.com et tout terme commençant par failed_
La correspondance avec joker ne prend en charge que les astérisques placés à la fin ( failed_* ). Un astérisque placé au début ( *failed ) n'est pas pris en charge.

Pour consulter la référence complète de la syntaxe de recherche, voir Présentation de la recherche de journaux.

Recherche spécifique à un champ

Filtrez un champ spécifique en utilisant Field: Value ou des comparaisons numériques telles que Field >= Value. Combinez plusieurs conditions de champ avec and ou or, ou mélangez-les avec des termes en texte intégral.

Chaque entrée de journal inclut un champ __topic__ qui identifie le type de journal. Utilisez __topic__ pour cibler une source de journal spécifique, puis ajoutez des filtres de champ pour ce type de journal.

Exemples

Rechercher les journaux d'alerte dont le niveau de gravité est sérieux :

__topic__ : sas-security-log and level: serious

Rechercher les événements de connexion SSH provenant d'une adresse IP spécifique :

__topic__:aegis-log-login and ip:1.2.XX.XX and warn_type:SSHLOGIN

Rechercher les requêtes DNS internes avec un temps de réponse supérieur à 1 seconde :

__topic__:local-dns and time_usecond > 1000000

Rechercher les requêtes DNS internes avec un temps de réponse compris entre 1 seconde et 10 secondes :

__topic__:local-dns and time_usecond in [1000000,10000000]

Syntaxe d'analyse

La partie d'analyse utilise des instructions SQL-92. La clause from log — équivalente à from <table name> en SQL standard — peut être omise.

Par défaut, les requêtes renvoient les 100 premières entrées de journal. Utilisez la clause LIMIT pour modifier ce comportement. Pour plus de détails, consultez Clause LIMIT.

Pour obtenir la liste complète des fonctions SQL prises en charge, voir Présentation de l'analyse des journaux.

Requêtes basées sur le temps

Chaque entrée de journal possède un champ intégré __time__ qui stocke l'horodatage du journal sous forme d'horodatage UNIX (secondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC). Convertissez ce champ avant de l'afficher dans les résultats de la requête.

Récupérer les événements de connexion les plus récents provenant d'une adresse IP spécifique

Renvoyez les 10 événements de connexion les plus récents provenant de l'adresse IP 1.2.XX.XX, avec un horodatage lisible :

__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type
order by __time__ desc
limit 10

Calculer le nombre de jours écoulés depuis chaque connexion

Ajoutez une colonne days_passed indiquant l'ancienneté de chaque événement de connexion en jours :

__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type ,
round((to_unixtime(now()) - __time__)/86400,1) as "days_passed"
order by __time__ desc
limit 10

L'expression round((to_unixtime(now()) - __time__)/86400, 1) fonctionne comme suit :

  1. to_unixtime(now()) convertit l'heure actuelle en horodatage UNIX.

  2. Soustrayez __time__ pour obtenir le nombre de secondes écoulées.

  3. Divisez par 86400 (nombre de secondes dans une journée).

  4. round(..., 1) arrondit le résultat à une décimale.

Compter les événements de connexion quotidiens pour un appareil

Regroupez les événements de connexion par jour et comptez le nombre d'événements survenus chaque jour :

__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_trunc('day', __time__) as dt,
count(1) as PV
group by dt
order by dt

date_trunc('day', __time__) aligne chaque horodatage sur le début de la journée. Remplacez 'day' par 'second', 'minute', 'hour', 'week', 'month' ou 'year' pour regrouper selon une autre unité de temps.

Compter les événements de connexion par tranches de 5 minutes

Regroupez les événements par tranches de 5 minutes pour tous les appareils :

__topic__: aegis-log-login
| select from_unixtime(__time__ - __time__% 300) as dt,
count(1) as PV
group by dt
order by dt
limit 1000

__time__ - __time__ % 300 arrondit chaque horodatage à la limite inférieure la plus proche par tranche de 5 minutes (300 secondes). limit 1000 récupère les 1 000 premières tranches, ce qui couvre environ 83 heures de données.

Pour en savoir plus sur les fonctions temporelles telles que date_parse et date_format, consultez Fonctions de date et d'heure.

Requêtes basées sur l'adresse IP

Le champ warn_ip dans les entrées de journal de connexion stocke l'adresse IP source. Utilisez les fonctions de géolocalisation IP pour analyser l'origine des connexions.

Identifier les pays sources des connexions à un serveur spécifique

__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_country(warn_ip) as country,
count(1) as "Number of logons"
group by country

ip_to_country(warn_ip) renvoie le pays correspondant à l'adresse IP source.

Ventiler les connexions par province ou État

__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_province(warn_ip) as province,
         count(1) as "Number of logons"
         group by province

ip_to_province(warn_ip) renvoie la province pour les adresses IP chinoises. Pour les adresses IP non chinoises, la fonction tente de renvoyer l'équivalent d'une province ou d'un État, mais le résultat ne peut pas être représenté sur une carte de la Chine.

Cartographier la répartition géographique des connexions

__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_geo(warn_ip) as geo,
         count(1) as "Number of logons"
         group by geo
         limit 10000

ip_to_geo(warn_ip) renvoie la latitude et la longitude de l'adresse IP source. limit 10000 récupère jusqu'à 10 000 entrées pour la représentation cartographique.

Pour découvrir d'autres fonctions IP, notamment ip_to_provider (recherche du fournisseur d'accès Internet) et ip_to_domain (détection des adresses IP publiques ou privées), consultez Fonctions IP.