Koppel Splunk aan de WeTransfer Activity Events API en stream workspace-events naar je SIEM.
Wat je nodig hebt
- Een Activity API-token — zie Generate an API token in de hoofdhandleiding van Activity Log
- Een Splunk Enterprise-instantie (Cloud of self-hosted), versie 9.x of later
Stap 1 — Installeer de REST API Modular Input-add-on
De integratie is afhankelijk van de REST API Modular Input-add-on van BaboonBones Ltd (Damien Dallimore), die beschikbaar is op Splunkbase.
- Open in de Splunk-web-UI Apps → Find More Apps
- Zoek naar REST API Modular Input en installeer het vanaf Splunkbase
- Start Splunk opnieuw wanneer daarom wordt gevraagd
Stap 2 — Configureer een nieuwe REST-input
Ga naar Settings → Data inputs → REST → New en vul het formulier in met de waarden hieronder. Veldnamen komen overeen met de labels zoals weergegeven door de add-on.
Veld | Waarde |
|---|---|
| Endpoint-URL | https://wetransfer.com/api/external/v1/activity-events |
| HTTP-methode | GET |
| Authenticatietype | none — de bearer-token wordt in plaats daarvan via een custom HTTP-header verzonden |
| HTTP-headereigenschappen | Authorization=Bearer <YOUR_TOKEN> |
| URL-argumenten | since=YYYY-MM-DDTHH:MM:SSZ — stel dit in op de ISO 8601-timestamp waarvandaan je wilt beginnen. Alles ouder dan 1 jaar wordt geweigerd, omdat events slechts 1 jaar bewaard worden. |
| Responstype | json |
| Polling-interval | 60 seconden (aanbevolen). De API ondersteunt tot 1 request/sec, maar 60s is ruim voldoende voor SIEM-gebruik. |
| Response-handler | WTActivityEventHandler — we voegen deze toe in Stap 3. |
| Sourcetype | Stel in op Manual en voer wetransfer:activity in |
| Index | Kies de index waar je events naartoe geschreven moeten worden, of laat de standaardinstelling staan |

Stap 3 — Voeg de aangepaste response-handler toe
Het WeTransfer-endpoint retourneert een enkel JSON-object met een events[]-array en een next_cursor. Standaard indexeert de REST-add-on de hele response als één Splunk-event. Om één Splunk-event per WeTransfer activity event te krijgen, voeg je een kleine aangepaste response-handler toe.
Bewerk $SPLUNK_HOME/etc/apps/rest_ta/bin/responsehandlers.py en voeg het volgende toe:
class WTActivityEventHandler:
"""Splits the WeTransfer activity-events response (dict with events[]) into one Splunk event per WT event."""
def __init__(self, **args):
pass
def __call__(self, response_object, raw_response_output, response_type, req_args, endpoint, oauth2=None):
if response_type == "json":
output = json.loads(raw_response_output)
for entry in output.get("events", []):
print_xml_stream(json.dumps(entry))
else:
print_xml_stream(raw_response_output)Start Splunk opnieuw nadat je het bestand hebt bewerkt.
Stap 4 — Verifieer de ingestie
Voer in de Splunk-zoekbalk het volgende uit:
index=<your-index> sourcetype=wetransfer:activity | head 20Je zou één Splunk-event per WeTransfer activity event moeten zien, met de volgende velden zichtbaar: event_id, event_type, actor_email, actor_id, ip_address, country_code, created_at, target.*, en data.*.

Stap 5 — Opmerkingen over paginatie
- De REST-add-on volgt de
next_cursorniet automatisch. Voor backfilling van grote historische reeksen voer je een eenmalig script uit dat pagineert vianext_cursortotdathas_morefalseis, en zet je de add-on daarna op het heden. - Voor lopende ingestie is een polling-interval van 60s voldoende voor typische workspaces — events per minuut passen meestal op één pagina, dus cursor-opvolging is niet nodig. Voor workspaces met hoger volume, zie de backfill-opmerking hierboven.
- Het endpoint retourneert maximaal 100 events per response (standaard 50).
Alerts bouwen
Zodra events binnenkomen, kun je alerts bouwen op basis van de wetransfer:activity-data met behulp van Splunk's ingebouwde saved-search en alerting-functionaliteit. Detectieontwerp is workspace- en beleidsspecifiek, raadpleeg daarom de documentatie van Splunk voor de alertopties die in jouw versie beschikbaar zijn.
Probleemoplossing
De meeste problemen aan de Splunk-kant met deze integratie verschijnen in $SPLUNK_HOME/var/log/splunk/restmodinput*.log — controleer daar eerst als er iets niet klopt.
Symptoom | Wat er gebeurt / oplossing |
|---|---|
| Elke poll wordt geïndexeerd als één enorme JSON-blob | De aangepaste response-handler uit Stap 3 wordt niet toegepast. Controleer of het Response Handler-veld in de REST-inputconfig precies WTActivityEventHandler is, dat de klasse is toegevoegd aan responsehandlers.py, en dat Splunk is herstart nadat je de wijziging hebt doorgevoerd. |
| Events verschijnen maar er worden geen velden geëxtraheerd | Zelfde onderliggende oorzaak als hierboven — de handler splitst elk WeTransfer-event in een apart JSON-document, dat Splunk vervolgens automatisch extraheert. Controleer de handlernaam en code en start daarna opnieuw. |
| Dubbele events bij elke pollingcyclus | De since-parameter in URL-argumenten is statisch — de add-on haalt op elke poll dezelfde events opnieuw op. Dubbele items worden naar de index geschreven; verwijder duplicaten tijdens het zoeken met | dedup event_id. Om ze bij ingestie te vermijden, gebruik de response-substitutie van de add-on om de cursor bij elke poll te verplaatsen (gevorderd). |
401-fouten in restmodinput*.log | De bearer-token in HTTP-headereigenschappen ontbreekt, is onjuist geformatteerd of ingetrokken. Controleer de regel Authorization=Bearer <token> opnieuw en genereer zo nodig een nieuw token vanuit het WeTransfer-beheerpaneel. |
Timeouts of verbinding geweigerd naar wetransfer.com | Netwerk-egressprobleem. Je Splunk-host kan wetransfer.com niet rechtstreeks bereiken — waarschijnlijk door een bedrijfsfirewall of HTTP-proxy. Configureer de uitgaande proxy van Splunk in de inputinstellingen of systeemwijd en verifieer de connectiviteit met een curl vanaf de Splunk-host. |