Connectez Splunk à l’API WeTransfer Activity Events et transmettez les événements de votre espace de travail vers votre SIEM.
Ce dont vous aurez besoin
- Un jeton Activity API — voir Generate an API token dans le guide principal du journal d’activité
- Une instance Splunk Enterprise (Cloud ou auto‑hébergée), version 9.x ou ultérieure
Étape 1 — Installer le module complémentaire REST API Modular Input
L’intégration repose sur le module complémentaire REST API Modular Input de BaboonBones Ltd (Damien Dallimore), disponible sur Splunkbase.
- Dans l’interface web de Splunk, ouvrez Apps → Find More Apps
- Recherchez REST API Modular Input et installez‑le depuis Splunkbase
- Redémarrez Splunk lorsque vous y êtes invité
Étape 2 — Configurer une nouvelle entrée REST
Allez dans Settings → Data inputs → REST → New et remplissez le formulaire avec les valeurs ci‑dessous. Les noms des champs correspondent aux libellés affichés par le module complémentaire.
Champ | Valeur |
|---|---|
| URL du point de terminaison | https://wetransfer.com/api/external/v1/activity-events |
| Méthode HTTP | GET |
| Type d’authentification | none — le jeton Bearer est envoyé via un en‑tête personnalisé à la place |
| Propriétés des en‑têtes HTTP | Authorization=Bearer <YOUR_TOKEN> |
| Arguments d’URL | since=YYYY-MM-DDTHH:MM:SSZ — définissez ceci sur l’horodatage ISO 8601 à partir duquel vous souhaitez commencer. Tout ce qui est antérieur à 1 an est rejeté, car les événements ne sont conservés que pendant 1 an. |
| Type de réponse | json |
| Intervalle de sondage | 60 secondes (recommandé). L’API prend en charge jusqu’à 1 requête/s, mais 60 s suffisent pour une utilisation avec un SIEM. |
| Gestionnaire de réponse | WTActivityEventHandler — nous l’ajouterons à l’étape 3. |
| Sourcetype | Définissez sur Manual et saisissez wetransfer:activity |
| Index | Choisissez l’index dans lequel vous voulez que les événements soient écrits, ou laissez la valeur par défaut |

Étape 3 — Ajouter le gestionnaire de réponse personnalisé
Le point de terminaison WeTransfer renvoie un seul objet JSON contenant un tableau events[] et un next_cursor. Par défaut, le module complémentaire REST indexe toute la réponse comme un seul événement Splunk. Pour obtenir un événement Splunk par événement d’activité WeTransfer, ajoutez un petit gestionnaire de réponse personnalisé.
Éditez $SPLUNK_HOME/etc/apps/rest_ta/bin/responsehandlers.py et ajoutez :
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)Redémarrez Splunk après avoir modifié le fichier.
Étape 4 — Vérifier l’ingestion
Dans la barre de recherche Splunk, exécutez :
index=<your-index> sourcetype=wetransfer:activity | head 20Vous devriez voir un événement Splunk par événement d’activité WeTransfer, avec les champs suivants visibles : event_id, event_type, actor_email, actor_id, ip_address, country_code, created_at, target.* et data.*.

Étape 5 — Remarques sur la pagination
- Le module complémentaire REST ne suit pas automatiquement le
next_cursor. Pour rétroremplir de larges plages historiques, exécutez un script ponctuel qui parcourt lenext_cursorjusqu’à ce quehas_moresoitfalse, puis pointez le module complémentaire vers le présent. - Pour l’ingestion continue, un intervalle de sondage de 60 s suffit pour les espaces de travail typiques — les événements par minute tiennent généralement sur une seule page, donc le suivi du curseur n’est pas nécessaire. Pour les espaces de travail à volume élevé, consultez la remarque sur le rétroremplissage ci‑dessus.
- Le point de terminaison renvoie au maximum 100 événements par réponse (par défaut 50).
Mettre en place des alertes
Une fois que les événements sont ingérés, vous pouvez créer des alertes à partir des données wetransfer:activity en utilisant les fonctionnalités intégrées de Splunk pour les recherches enregistrées et les alertes. La conception des détections dépend de l’espace de travail et des politiques ; consultez la documentation de Splunk pour les options d’alerte disponibles dans votre version.
Dépannage
La plupart des problèmes côté Splunk liés à cette intégration apparaissent dans $SPLUNK_HOME/var/log/splunk/restmodinput*.log — vérifiez d’abord ce fichier lorsque quelque chose semble anormal.
Symptôme | Ce qui se passe / solution |
|---|---|
| Chaque sondage est indexé comme un unique gros objet JSON | Le gestionnaire de réponse personnalisé de l’étape 3 n’est pas appliqué. Vérifiez que le champ Response Handler dans la configuration de l’entrée REST est exactement WTActivityEventHandler, que la classe a bien été ajoutée à responsehandlers.py et que Splunk a été redémarré après la modification. |
| Les événements apparaissent mais aucun champ n’est extrait | Même cause racine que ci‑dessus — le gestionnaire est responsable de la séparation de chaque événement WeTransfer en un document JSON distinct, que Splunk extrait automatiquement ensuite. Vérifiez le nom et le code du gestionnaire, puis redémarrez. |
| Événements en double à chaque cycle de sondage | Le paramètre since dans URL Arguments est statique — le module complémentaire re‑récupère les mêmes événements à chaque sondage. Des doublons sont écrits dans l’index ; éliminez‑les au moment de la recherche avec | dedup event_id. Pour les éviter à l’ingestion, utilisez la substitution de réponse du module complémentaire pour avancer le curseur à chaque sondage (avancé). |
Erreurs 401 dans restmodinput*.log | Le jeton Bearer dans HTTP Header Properties est manquant, mal formé ou révoqué. Vérifiez la ligne Authorization=Bearer <token> et, si nécessaire, générez un nouveau jeton depuis le panneau d’administration WeTransfer. |
Dépassements de délai ou connexion refusée vers wetransfer.com | Problème de sortie réseau. Votre hôte Splunk ne peut pas atteindre wetransfer.com directement — probablement à cause d’un pare‑feu d’entreprise ou d’un proxy HTTP. Configurez le proxy sortant de Splunk dans les paramètres de l’entrée ou au niveau système, et vérifiez la connectivité avec un curl depuis l’hôte Splunk. |