Sommaire de la documentation

AarView · Intégrer

API machine

L'API d'AarView pour vos outils : accès par identifiant client et secret, portées explicites, envoi d'alertes, lecture des incidents, notes et statistiques.

Sur cette page

L’API machine sert à un SIEM, un SOAR ou un script. Elle ne s’utilise jamais avec une session d’utilisateur : chaque appel porte un identifiant d’accès machine, et chaque appel est limité au client de cet accès.

Créer un accès machine

Dans Paramètres > API & Webhooks, le super administrateur crée un accès machine. Il reçoit :

  • un identifiant client (avc_…) ;
  • un secret (avs_…), affiché une seule fois et conservé seulement sous forme d’empreinte ;
  • l’adresse de l’API ;
  • les portées accordées. Rien n’est accordé par défaut.

En option, l’accès peut être limité à des réseaux d’origine, et recevoir une date d’expiration. Le secret se renouvelle à tout moment. La création et le renouvellement demandent une connexion de moins de 10 minutes.

S’authentifier

Deux en-têtes :

curl -sS https://aarview.example.org/api/v1/ext/whoami \
  -H "X-AarView-Client-Id: avc_..." \
  -H "X-AarView-Client-Secret: avs_..."

L’authentification HTTP Basic (identifiant:secret) est aussi acceptée. La réponse de whoami donne le client de l’accès, son nom et ses portées.

Un accès inconnu, expiré, désactivé ou utilisé depuis un réseau non autorisé reçoit la même réponse 401, sans distinction.

Portées

PortéeAutorise
ingest:alertsdéposer des alertes
incidents:readlire les incidents
incidents:commentajouter une note à un incident
stats:readlire les statistiques
archive:readarchiver ses évènements et alertes (outil d’archive sur site)

Points d’accès

Base : https://<votre domaine>/api/v1/ext

Méthode et cheminPortéeRôle
GET /whoamiaucunequi est l’accès, ses portées
POST /alertsingest:alertsdéposer des alertes
GET /incidentsincidents:readlister les incidents
GET /incidents/{id}incidents:readlire un incident
POST /incidents/{id}/notesincidents:commentajouter une note
GET /statsstats:readstatistiques du client
GET /archivearchive:readune fenêtre d’évènements ou d’alertes, pour l’archive sur site

Lister les incidents

Paramètres : page, per_page (200 au plus), status (open, in_progress, resolved, closed), severity (critical, high, medium, low), kind (case ou alert), since (date ISO 8601), rule_id.

curl -sS "https://aarview.example.org/api/v1/ext/incidents?status=open&severity=critical" \
  -H "X-AarView-Client-Id: avc_..." \
  -H "X-AarView-Client-Secret: avs_..."

Ajouter une note

visibility vaut internal (reste à votre équipe, par défaut) ou client (visible du client). Le texte compte 5 000 caractères au plus.

curl -sS https://aarview.example.org/api/v1/ext/incidents/<id>/notes \
  -H "X-AarView-Client-Id: avc_..." \
  -H "X-AarView-Client-Secret: avs_..." \
  -H "Content-Type: application/json" \
  -d '{"body": "Poste réimagé par l'\''équipe système.", "visibility": "internal"}'

Statistiques

GET /stats?days=30 : les chiffres de la vue Statistiques pour le client de l’accès, sur 1 à 365 jours.

Déposer des alertes

POST /api/v1/ext/alerts accepte une liste d’alertes, 100 au plus par appel.

ChampObligatoireContenu
titleoui512 caractères au plus
sourceouile nom de votre outil, 64 caractères au plus
source_refnonvotre identifiant de l’alerte ; il sert à reconnaître un doublon
severitynonde 1 (faible) à 4 (critique)
source_levelnonniveau de l’outil source, de 0 à 15, converti par AarView à la place de severity
descriptionnon20 000 caractères au plus
alert_typenonvotre catégorie
tagsnonliste d’étiquettes
observablesnonliste de {"data_type": "ip", "data": "203.0.113.7"}
observed_atnondate ISO 8601 de l’observation
tlpnonde 0 à 3, 2 par défaut
rawnonl’évènement d’origine
curl -sS https://aarview.example.org/api/v1/ext/alerts \
  -H "X-AarView-Client-Id: avc_..." \
  -H "X-AarView-Client-Secret: avs_..." \
  -H "Content-Type: application/json" \
  -d '[{"title": "Connexion SSH depuis une adresse inconnue", "source": "mon-outil",
        "source_ref": "evt-2041", "severity": 3,
        "observables": [{"data_type": "ip", "data": "203.0.113.7"}]}]'

La réponse donne le nombre d’alertes reçues, créées et reconnues comme doublons, et les identifiants créés. Le client n’est jamais lu dans le corps : il vient de l’accès. Un nouvel envoi de la même alerte (même source, même référence) ne crée pas de second incident.

Format générique

Pour un outil qui ne sait envoyer que son propre JSON, créez plutôt une source connectée au format générique. AarView y lit :

DonnéeChamps lus, dans l’ordre
titretitle, name, rule, rule_name, alert
sévéritéseverity, level, priority : un mot (low, medium, high, critical…), un nombre de 1 à 4, ou une note sur 10 ou sur 100
référenceid, ref, alert_id, uuid
descriptiondescription, message, details
datetimestamp, time, @timestamp
observablesobservables (type et value, ou data_type et data), et les valeurs trouvées dans fields ou event
étiquettestags

Une alerte sans titre est rejetée ; une sévérité absente ou inconnue devient « moyen ».