Webhooks entrants
Les webhooks entrants reçoivent des événements d’autres outils et les transforment en tickets ou en mises à jour. Il existe trois points d’entrée :
| Origine | Adresse | Configuration dans Core |
|---|---|---|
| Outils de supervision, DevOps et de sécurité | /api/connectors/{vendor}/{tenant} |
Integrations, connecteur de l’éditeur |
| Autres ITSM et sources REST génériques | /api/integration/webhook/{integration_id} |
Integration Center |
| Passerelle SNMP sur site | /api/snmp-gateway/trap/{tenant} |
Integrations → SNMP gateway |
Toutes les adresses se trouvent sur https://exocortex-api.ai-exo-cortex.com.
Connecteurs pour les outils de supervision, DevOps et de sécurité
Section intitulée « Connecteurs pour les outils de supervision, DevOps et de sécurité »Configurez le connecteur dans exoCortex Core, puis pointez le webhook de l’outil vers l’adresse du connecteur. L’outil envoie son format natif : exoCortex le normalise et, si nécessaire, ouvre un ticket.
Outils pris en charge :
- Supervision : Datadog, New Relic, Prometheus, Grafana, Nagios, Icinga, Centreon, Statuspage, NinjaOne.
- DevOps et astreinte : GitHub, GitLab, Jenkins, Bitbucket, PagerDuty, Opsgenie.
- Sécurité : Wazuh, Microsoft Sentinel, Tenable, Qualys, Splunk, Elastic, CrowdStrike, SentinelOne, QRadar, Cyber Protect, Fortigate, Check Point et sondes EDR réseau.
Dans l’adresse, {vendor} est le nom de l’outil en minuscules (par exemple datadog) et {tenant} est le code du tenant pour lequel vous avez configuré le connecteur.
Authentification
Section intitulée « Authentification »- GitHub, GitLab, PagerDuty, Opsgenie et Statuspage signent les requêtes avec leur propre mécanisme : exoCortex le vérifie.
- Pour tous les autres outils, vous utilisez la signature d’exoCortex, calculée avec le secret du connecteur (voir Signer les requêtes).
Si un connecteur échoue plusieurs fois de suite, exoCortex suspend temporairement les requêtes et répond 503 avec resume_in_ms, le nombre de millisecondes après lequel réessayer.
Intégrations et passerelles ITSM
Section intitulée « Intégrations et passerelles ITSM »Pour ServiceNow, Jira, Zendesk, BMC ou une source REST générique, configurez l’intégration dans l’Integration Center d’exoCortex Core, avec le mappage des champs. L’autre système envoie les événements à l’adresse de l’intégration ; exoCortex les mappe et crée ou met à jour le ticket.
La signature est obligatoire lorsque l’intégration a un secret, et les intégrations en mode webhook doivent en avoir un. Utilisez la signature d’exoCortex ; à défaut, X-Bridge-Signature, X-Hub-Signature-256 ou X-Signature sont acceptés avec la valeur sha256=<hex HMAC of the body>.
La réponse est 200 lorsque l’événement a été traité immédiatement, 202 lorsqu’il a été mis en file d’attente pour un traitement fiable.
Signer les requêtes
Section intitulée « Signer les requêtes »Pour signer une requête vers exoCortex, envoyez deux en-têtes :
X-Exo-Timestamp: l’heure actuelle en secondes Unix ;X-Exo-Signature:v1=suivi du HMAC-SHA256 hexadécimal detimestamp + "." + body, calculé avec le secret du connecteur.
exoCortex rejette les requêtes dont l’horodatage s’écarte de plus de 300 secondes de son heure.
ts=$(date +%s)body='{"title":"CPU high on web-01","alert_type":"error"}'sig=$(printf '%s.%s' "$ts" "$body" | openssl dgst -sha256 -hmac "$CONNECTOR_SECRET" -hex | sed 's/^.* //')curl -X POST "https://exocortex-api.ai-exo-cortex.com/api/connectors/datadog/ACME" \ -H "Content-Type: application/json" \ -H "X-Exo-Timestamp: $ts" -H "X-Exo-Signature: v1=$sig" \ --data-binary "$body"L’en-tête X-NH-Connector-Signature, avec le HMAC du seul corps, est déprécié et fonctionne jusqu’au 30 juin 2027.
Passerelle SNMP
Section intitulée « Passerelle SNMP »Si vous avez des équipements qui envoient des traps SNMP, une passerelle dans votre réseau les convertit en JSON et les envoie à exoCortex. Le secret se définit dans Integrations → SNMP gateway.
La passerelle signe chaque requête avec :
X-NH-SNMP-Timestamp: l’heure actuelle en millisecondes Unix ;X-NH-SNMP-Signature:sha256=suivi du HMAC-SHA256 hexadécimal detimestamp + "|" + body.
La tolérance sur l’heure est de 5 minutes. Un exemple de trap :
{ "source_ip": "192.0.2.10", "source_sysname": "core-sw-01", "trap_oid": "1.3.6.1.6.3.1.1.5.3", "severity": "major", "varbinds": { "1.3.6.1.2.1.2.2.1.1": "12", "1.3.6.1.2.1.2.2.1.2": "GigabitEthernet1/0/12" }}