Skip to main content

Beveiligingsgebeurtenissen in je SIEM

Sobolt houdt per organisatie bij wat er rond inloggen en toegang gebeurt: wie inlogt, wie het niet lukt, SSO, het wisselen van organisatie en wie welke rechten krijgt of verliest. Je organisatie leest alleen haar eigen gebeurtenissen, nooit die van een andere organisatie.

Je haalt ze op drie manieren op:

  • Opvragen (polling): je SIEM vraagt elke minuut wat er nieuw is.
  • Stream (Server-Sent Events): een open verbinding die elke gebeurtenis binnen enkele seconden doorgeeft.
  • Webhook: Sobolt stuurt nieuwe gebeurtenissen zelf naar een HTTPS-adres van jou, ondertekend, binnen een minuut.

Gebeurtenissen blijven 365 dagen bewaard.

Instellen​

In het Sobolt Portal: Organisaties → je organisatie → Beveiliging. Daarvoor heb je het recht org.security_events.manage nodig; beheerders van de organisatie hebben het. Lezen in het portal vraagt org.security_events.read.

API-token​

Maak onder SIEM-koppeling een API-token aan, met een naam (bijvoorbeeld "Sentinel") en een geldigheid van 30 tot 365 dagen.

  • Het token begint met sbt_ en wordt één keer getoond. Bewaar het direct in de kluis van je SIEM.
  • Het token leest alleen de beveiligingsgebeurtenissen van je eigen organisatie. Het opent niets anders in Sobolt.
  • Je trekt het in met één klik; het werkt dan meteen niet meer. In de lijst zie je wanneer het voor het laatst is gebruikt.

Gebruik het als bearer token: Authorization: Bearer sbt_….

Webhook​

Vul onder Webhook een HTTPS-adres in en sla op. Je krijgt dan één keer het geheim te zien waarmee Sobolt elke levering ondertekent (begint met whsec_).

  • Het adres moet met https:// beginnen en op het internet bereikbaar zijn. Interne adressen worden geweigerd.
  • Test versturen stuurt een ondertekende levering zonder gebeurtenissen, met "test": true.
  • Een webhook stuurt de gebeurtenissen vanaf het moment dat je hem aanmaakt, niet de geschiedenis. Die haal je met de API op.
  • Onder Leveringen zie je de laatste 50 pogingen met het antwoord van je adres.

Opvragen​

curl -H "Authorization: Bearer sbt_…" \
"https://auth.sobolt.com/organisations/<organisatie-id>/security-events?after=0&limit=1000"

Het antwoord:

{
"events": [
{
"id": 18234,
"occurred_at": "2026-11-02T09:31:07.512Z",
"event": "sso.login",
"outcome": "success",
"user_id": "5f0c…",
"user_email": "j.jansen@voorbeeld.nl",
"actor_id": null,
"actor_email": null,
"client_id": "sobolt-portal",
"target": "voorbeeld",
"reason": null,
"ip": "203.0.113.7",
"user_agent": "Mozilla/5.0 …"
}
],
"next_cursor": 18234,
"has_more": true
}
  • Nieuw ophalen: geef after=<hoogste id dat je al hebt>. Je krijgt de gebeurtenissen erna, oudste eerst, tot limit (standaard 100, hoogstens 1000). Bewaar het hoogste id en vraag de volgende keer daarna. Zo mis je niets en krijg je niets dubbel.
  • Gebeurtenissen van de laatste 5 seconden komen pas bij de volgende vraag mee. Zo slaat een SIEM nooit een gebeurtenis over die op hetzelfde moment op een andere server werd geschreven.
  • Bladeren: zonder after krijg je de nieuwste eerst; before=<id> geeft de pagina daarvoor (next_cursor). has_more zegt of er nog een pagina is.
  • Op tijd ophalen: since=<tijd>&order=asc geeft de gebeurtenissen vanaf die tijd, oudste eerst, ook met 5 seconden marge.
  • Filters: since en until, event, outcome (success, failure, refused) en user_id. Een tijd mag ISO 8601 zijn (met of zonder tijdzone; zonder is UTC) of Unix-tijd in seconden of milliseconden.
  • Tijden in het antwoord zijn UTC met precies drie decimalen.
  • Inloggen: Authorization: Bearer sbt_…, of Basic met het token als wachtwoord (de gebruikersnaam wordt niet gelezen) voor een SIEM die alleen Basic kent.

Stream​

curl -N -H "Authorization: Bearer sbt_…" \
"https://auth.sobolt.com/organisations/<organisatie-id>/security-events/stream"

Elke gebeurtenis komt als event: security_event, met het id van de gebeurtenis en dezelfde velden als hierboven in data. Zonder after begint de stream bij nu. De verbinding sluit na een paar minuten; maak opnieuw verbinding met de header Last-Event-ID: <laatste id> (een EventSource-client doet dat zelf), dan gaat hij verder waar hij was.

Webhook-leveringen​

Sobolt stuurt een POST met JSON:

{
"webhook_id": "…",
"delivery_id": "…",
"organisation_id": "…",
"events": [ … ]
}
  • Hoogstens 100 gebeurtenissen per levering, oudste eerst, met dezelfde velden als de API.
  • Antwoord met een 2xx binnen 10 seconden. Elk ander antwoord, of geen antwoord, telt als mislukt: Sobolt stuurt dezelfde gebeurtenissen opnieuw, eerst na 30 seconden, daarna steeds later tot eens per uur. Lukt het 72 uur niet, dan zet Sobolt de webhook uit; je zet hem in het portal weer aan en hij gaat verder waar hij was.
  • Een levering kan dus twee keer aankomen. Gebruik het id van de gebeurtenissen (of delivery_id) om dubbele te herkennen.
  • Sobolt volgt geen doorverwijzingen (3xx).

De handtekening controleren​

Elke levering heeft de header:

Sobolt-Signature: t=1762075867,v1=5b1e…

v1 is de HMAC-SHA256, in hexadecimaal, van <t>.<de ruwe body> met het webhookgeheim als sleutel. Controleer hem op de ruwe body, voordat je de JSON leest, en weiger een levering met een t van meer dan 5 minuten geleden.

import hashlib, hmac, time

def is_from_sobolt(secret: str, header: str, body: bytes) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
signed = f"{parts['t']}.".encode() + body
expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
fresh = abs(time.time() - int(parts["t"])) < 300
return fresh and hmac.compare_digest(expected, parts["v1"])

Na Geheim vernieuwen tekent Sobolt meteen met het nieuwe geheim.

Microsoft Sentinel en ArcSight​

Voor beide is er een kant-en-klare koppeling die de gebeurtenissen met een API-token ophaalt. Je hoeft niets in je firewall open te zetten. Vraag de bestanden aan Sobolt.

  • Microsoft Sentinel: een data connector op het Codeless Connector Framework. Na het installeren open je de connector "Sobolt security events", vul je je organisatie-id en een API-token in en klik je op Connect. De gebeurtenissen komen in de tabel SoboltSecurityEvents_CL.
  • ArcSight (FlexConnector for REST): een parserbestand (sobolt.jsonparser.properties) en deze instellingen: Events URL https://auth.sobolt.com/organisations/<organisatie-id>/security-events?since=$START_AT_TIME&order=asc&limit=1000, authenticatie Basic met je organisatie-id als gebruikersnaam en het API-token als wachtwoord. Zet maintaineventcache=true in agent.properties.

Welke gebeurtenissen​

GebeurtenisWanneerreason
login.requestedIemand vraagt een inloglink of wordt naar SSO gestuurdmagic_link, signup_link, sso, unknown_address (onbekend adres op een domein met jullie SSO)
magic_link.usedEen inloglink wordt gebruiktlogin, signup, already_used, invalid_or_expired
sso.loginInloggen via jullie identity providerleeg bij succes; anders bijvoorbeeld not_a_member, no_account, domain_not_connection, provider_error
org.switchIemand wisselt naar jullie organisatienot_a_member, sso_required
grant.created / grant.revokedEen recht wordt gegeven of ingetrokken (actor_email is wie het deed)het id van het recht
masquerade.started / masquerade.handoffEen Sobolt-medewerker kijkt mee als een van jullie gebruikers (actor_email is de medewerker)
oauth.refresh_reusedEen ingetrokken token van een gekoppelde app wordt opnieuw gebruikt; de hele reeks wordt ingetrokkenfamily_revoked
sso.domains_removedEen domein is van jullie SSO-koppeling gehaald
security_events.read / security_events.streamedIemand leest deze gebeurtenissen in het portal (actor_email is wie)
security_token.created / security_token.revokedEen API-token is gemaakt of ingetrokken
security_token.usedEen API-token wordt gebruikt: één keer per dag, bij het eerste gebruik (target is het begin van het token). Elke afzonderlijke vraag van je SIEM komt niet in deze gebeurtenissen, anders zou je SIEM bij elke vraag zijn eigen vorige vraag terugkrijgen.
security_webhook.saved / .secret_rotated / .deleted / .disabledDe webhook is gewijzigd, of na 72 uur mislukken uitgezet

outcome is success, failure (iets ging mis) of refused (Sobolt weigerde). Nieuwe gebeurtenissen kunnen erbij komen; laat je SIEM onbekende namen doorlaten.

Privacy​

Een gebeurtenis bevat het IP-adres en de browser (user agent) van wie handelde, en het e-mailadres van de gebruiker. Dat zijn persoonsgegevens: Sobolt bewaart ze 365 dagen om beveiligingsincidenten te kunnen onderzoeken, en jullie lezen alleen die van je eigen organisatie. Een gebeurtenis bevat nooit een wachtwoord, token, inloglink of geheim.