ServiceNow
fremforge kan opprette en ServiceNow-hendelse for hver sikkerhetshendelse: et nytt kritisk eller høyt funn, et treff på skadevare, en blokkert pull, et brudd på en policy eller en risikoaksept som har utløpt. Målet sender rett til Table API (POST /api/now/table/incident), så ServiceNow trenger bare en integrasjonsbruker, og verken et skriptet REST-API eller en MID-server.
1. ServiceNow-siden: en integrasjonsbruker
- Opprett en bruker for fremforge, for eksempel
fremforge.integration. Kryss av for Web service access only. - Gi den en rolle som kan opprette hendelser via Table API, vanligvis
itil, eller en smalere egendefinert rolle medcreatepåincident. - Velg hvordan fremforge skal autentisere seg:
- Basic: brukerens navn og passord, sendt som
Authorization: Basic <base64 of user:password>. - OAuth bearer: et OAuth-token for den brukeren, sendt som
Authorization: Bearer <token>. Et OAuth-tilgangstoken i ServiceNow utløper, så et token som utløper, må byttes ut på målet før det går ut. Basic er det enkleste valget for en maskinbruker.
- Basic: brukerens navn og passord, sendt som
- Valgfritt: noter
sys_idfor tildelingsgruppen som skal motta hendelsene, og for innmelderen som skal registreres.
ServiceNow må godta forespørsler fra fremforges utgående adresse. Hvis instansen din begrenser kilde-IP-er, ber du support om gjeldende adresse.
2. fremforge-siden: et mål i ServiceNow-format
Med API-et (scope webhooks:write):
AUTH="Basic $(printf '%s' 'fremforge.integration:<password>' | base64)"
curl -sS -X POST "https://frem.sh/_app/api/v1/orgs/acme/webhooks/destinations" \
-H "Authorization: Bearer $FREMFORGE_TOKEN" -H "Content-Type: application/json" \
-d @- <<EOF
{
"name": "ServiceNow incidents",
"target_url": "https://acme.service-now.com/api/now/table/incident",
"events": ["security.finding.created", "security.malware.matched",
"security.pull.blocked", "security.policy.violation",
"security.exception.expired"],
"payload_format": "servicenow",
"security_min_severity": "critical",
"security_hourly_cap": 50,
"servicenow": { "assignment_group": "<sys_id>", "category": "security" },
"auth_header": { "name": "Authorization", "value": "$AUTH" }
}
EOFVerdien i auth_header lagres kryptert og vises aldri igjen. Svaret sier "auth_header_set": true. For å bytte passord sender du en PATCH med en ny auth_header.
Send deretter en testhendelse og les resultatet:
curl -sS -X POST "https://frem.sh/_app/api/v1/orgs/acme/webhooks/destinations/$ID/test" \
-H "Authorization: Bearer $FREMFORGE_TOKEN"
curl -sS "https://frem.sh/_app/api/v1/orgs/acme/webhooks/deliveries?destination_id=$ID&limit=1" \
-H "Authorization: Bearer $FREMFORGE_TOKEN"En 201 i response_status betyr at ServiceNow opprettet hendelsen. En 401 betyr at legitimasjonen er feil. En 403 betyr at brukeren mangler rollen som trengs for å opprette hendelser.
Hva hendelsen inneholder
| Felt i hendelsen | Verdi |
|---|---|
short_description | [fremforge] etterfulgt av tittelen på hendelsen, for eksempel [fremforge] CVE-2026-12345 in lodash 4.17.20 (høyst 160 tegn) |
description | Navn på hendelsen, organisasjon, repository, alvorlighetsgrad, tidspunkt, korrelasjonsnøkkel, en lenke til fremforge-konsollen og detaljene om hendelsen som JSON |
urgency, impact | 1 for kritisk, 2 for høy, ellers 3 |
correlation_id | fremforge: etterfulgt av funnets korrelasjonsnøkkel. En nøkkel som er for lang for feltet, erstattes av en stabil SHA-256 av den |
correlation_display | fremforge |
assignment_group, caller_id, category, subcategory | Bare når de er satt på målet (objektet servicenow) |
ServiceNow beregner prioriteten til hendelsen fra urgency og impact som vanlig.
Hver hendelse oppretter en ny ServiceNow-hendelse. Table API oppdaterer ikke en eksisterende post. Hendelser om samme funn har samme correlation_id. Ett eksempel er et funn som senere følges av at en risikoaksept for det utløper. Bruk den verdien i en business rule eller et listefilter i ServiceNow for å gruppere dem. Timesgrensen begrenser hvor mange hendelser ett mål kan opprette per time. Når grensen er nådd, kommer det én oppsummerende hendelse etter timen.
Forespørselen er også signert (X-Fremforge-Signature). Table API ignorerer signaturen; det er auth-headeren som autentiserer forespørselen.
Alternativ: egen logikk i et Scripted REST API
For å oppdatere en eksisterende hendelse i stedet for å opprette en ny, eller for å tilordne felt på en annen måte, beholder du formatet Generic på målet og peker det mot en Scripted REST API-ressurs. Skriptet mottar den generiske bodyen. Slå opp en åpen hendelse etter correlation_id og oppdater den, eller sett inn en ny. For å verifisere signaturen i skriptet beregner du HMAC-SHA256 over <X-Fremforge-Timestamp>.<raw body> med målets signeringshemmelighet og sammenligner med v1-delen av X-Fremforge-Signature. Beskytt ressursen med den samme integrasjonsbrukeren og auth_header.
Relatert
- Webhooks for sikkerhetsvarsler: hendelser, body, signatur, nye forsøk og grensen.
- Videresending til SIEM: hele revisjonsloggen til en SIEM.