Handleiding voor de integratie van PowerDMARC en Splunk
PowerDMARC → Startpagina Oplossingen → Integraties → SIEM
Met de Splunk-integratie van PowerDMARC kunt u uw gegevens over e-mailauthenticatie en domeinbeveiliging rechtstreeks in uw Splunk-omgeving importeren en monitoren. Door gebruik te maken van de PowerDMARC-API kunnen organisaties een gestroomlijnde SIEM-integratie opzetten zonder ingewikkelde configuraties — aansluiten, starten en centraal inzicht krijgen in hun e-mailbeveiligingsstatus voor alle domeinen.
Deze handleiding richt zich op de installatie en het importeren van gegevens. Splunk-dashboards en geavanceerde visualisaties vallen buiten het bestek van deze handleiding.
API-documentatie
Swagger-documentatie: https://app.powerdmarc.com/swagger-ui/index.html
Alternatieve documentatie: https://api.powerdmarc.com/
Opmerking: Naamgevingsconventies (indexnamen, brontypen, bestandspaden) zijn suggesties, geen vereisten. Pas ze aan zodat ze overeenkomen met de normen van uw omgeving.
Welke gegevens het script verzamelt
Het integratiescript haalt twee datasets op uit de PowerDMARC-API:
Voor elk domein in uw account worden geaggregeerde rapporten verzameld, over de conforme, mislukteen doorgestuurd statussen. Domeinen worden automatisch opgesomd via /api/v1/domains.
Overzicht architectuur
PowerDMARC API
↓
Python-script (gepland via cron / systemd-timer / Taakplanner)
↓
Splunk HTTP Event Collector (HEC)
↓
Splunk (zoekfuncties, dashboards, waarschuwingen, correlatie)
Splunk ontvangt gegevens via zijn HTTP Event Collector (HEC)-eindpunt, dat veilige gegevensinvoer vanuit externe bronnen mogelijk maakt.
Het script ondersteunt ook het schrijven van JSON-bestanden die door regeleinden worden gescheiden, in plaats van — of naast — HEC, voor omgevingen waarin uitgaand HTTPS-verkeer naar de Splunk HEC-poort niet is toegestaan. Zie Alternatief: Bestandsmonitor-opname.
Vereisten
Splunk Enterprise of Splunk Cloud met beheerdersrechten
Toestemming om HEC-tokens aan te maken, indexen aan te maken en gegevensinvoer te configureren
Python 3.7 of nieuwer op het systeem waarop het script wordt uitgevoerd
Een PowerDMARC API-bearer-token met toestemming voor toegang tot auditlogboeken en geaggregeerde rapporten
Netwerkverbinding van de script-host naar:
PowerDMARC API — https://app.powerdmarc.com (TCP 443)
Je Splunk HEC-eindpunt (TCP 8088 voor Splunk Enterprise, TCP 443 voor Splunk Cloud)
Splunk-configuratie
Stap 1: Maak een speciale index aan
Ga naar Instellingen → Indexen
Klik Nieuwe index
Configureren:
Indexnaam: powerdmarc
Indexgegevenstype: Gebeurtenissen
App: zoek (of je favoriete app)
Laat de overige instellingen op hun standaardwaarden staan, of pas ze aan op basis van uw bewaartermijnen
Klik op Opslaan
Stap 2: HTTP Event Collector (HEC) inschakelen
Ga naar Instellingen → Gegevensinvoer
Klik HTTP-gebeurtenisverzamelaar
Klik op Algemene instellingen
Configureren:
Alle tokens: Ingeschakeld
SSL inschakelen: Ingeschakeld (aanbevolen)
HTTP-poortnummer: 8088 (standaard)
Klik op Opslaan
Klanten van Splunk Cloud: HEC is standaard ingeschakeld en luistert op poort 443. U hoeft de algemene instellingen niet te wijzigen, maar bij sommige stacktypes moet u mogelijk een supportverzoek indienen om HEC in te schakelen.
Stap 3: Maak het HEC-token aan
Nog steeds in Instellingen → Gegevensinvoer → HTTP-gebeurtenisverzamelaar, klik op Nieuw token
Tokeninstellingen configureren:
Naam: PowerDMARC_Integratie
Bronnaam overschrijven: powerdmarc:api
Beschrijving: Token voor het importeren van PowerDMARC-auditlogs en geaggregeerde rapporten
Klik Volgende
Invoerinstellingen:
Bron type: Select Automatisch
Toegestane indexen: omvatten powerdmarc
Standaardindex: powerdmarc
Klik op 'Beoordelen', en vervolgens Verzenden
Belangrijk: Kopieer en bewaar de tokenwaarde onmiddellijk — u kunt deze later niet meer opvragen.
Waarom "Automatisch" belangrijk is: het script stelt per gebeurtenis een sourcetype in (dmarc:audit of dmarc:aggregate) in de HEC-payload. Als je een vast brontype voor het token selecteert, worden die waarden overschreven en worden beide datasets samengevoegd tot één brontype.
Integratiescript instellen
Stap 4: Bereid de Python-omgeving voor
Het script heeft één afhankelijkheid van een externe partij: requests.
Optie A — Online installatie (aanbevolen)
pip3 install requests
Optie B — Offline-installatie
Op een computer met internettoegang:
pip3 download requests -d ./packages
Zet de pakketten map naar het doelsysteem en voer vervolgens het volgende uit:
pip3 install --no-index --find-links=./packages requests
Controleer de installatie:
python3 -c "import requests; print(requests.__version__)"
Elke redelijk recente versie (2.25 of hoger) is prima.
Stap 5: Het script implementeren
Maak een speciaal serviceaccount en een speciale mappenstructuur aan in plaats van de integratie als root uit te voeren:
sudo useradd -r -s /usr/sbin/nologin dmarc
sudo mkdir -p /opt/dmarc /etc/dmarc /var/lib/dmarc /var/log/dmarc
sudo chown dmarc:dmarc /var/lib/dmarc /var/log/dmarc
sudo chmod 750 /var/lib/dmarc /var/log/dmarc
Kopiëren dmarc_to_splunk.py op de juiste plaats:
sudo install -o dmarc -g dmarc -m 750 dmarc_to_splunk.py /opt/dmarc/
Stap 6: Configureer het script
Elke instelling kan worden opgegeven door het bewerken van de configuratiebestand in main() of door een omgevingsvariabele in te stellen. Het gebruik van omgevingsvariabelen wordt sterk aanbevolen zodat inloggegevens nooit in het scriptbestand worden opgeslagen.
URL-formaten voor HEC-eindpunten:
Splunk Enterprise / op locatie: https://your-splunk-instance:8088/services/collector/event
Splunk Cloud: https://http-inputs-<your-stack>.splunkcloud.com/services/collector/event
Splunk Cloud hostnames vary by stack age and type — some use http-inputs-<stack>.splunkcloud.com on port 443, others use a .splunkcloud.com:8088 form. Confirm yours under Settings → Data inputs → HTTP Event Collector in your Splunk Cloud console rather than assuming.
Maak het bestand met inloggegevens aan:
sudo tee /etc/dmarc/splunk.env >/dev/null <<'EOF'
DMARC_API_KEY=je_powerdmarc_bearer_token
SPLUNK_HEC_URL=https://your-splunk-instance:8088/services/collector/event
SPLUNK_HEC_TOKEN=uw_hec_token
SPLUNK_INDEX=powerdmarc
DMARC_DAYS_TO_FETCH=7
EOF
sudo chown root:dmarc /etc/dmarc/splunk.env
sudo chmod 640 /etc/dmarc/splunk.env
Stap 7: Controleer de verbinding
Het script accepteert een --test vlag die één enkele testaanvraag naar HEC verstuurt en vervolgens afsluit. Hiermee worden het token, de URL, de TLS-keten en het firewallpad gevalideerd zonder te wachten op een volledige verzamelronde:
sudo -u dmarc bash -c 'set -a; . /etc/dmarc/splunk.env; set +a; python3 /opt/dmarc/dmarc_to_splunk.py --test'
Verwachte output:
============================================================
Integratie van PowerDMARC met Splunk
Uitvoermodus: hec
============================================================
De verbinding met Splunk HEC wordt getest...
Een reeks van 1 dmarc:audit-gebeurtenis verzonden (1/1)
HEC-overzicht voor dmarc:audit — verzonden: 1, mislukt: 0, totaal: 1
Controleer of de sonde is aangekomen:
index=powerdmarc actie="integratie_connectiviteitstest"
Stap 8: Voer een volledige verzameling uit
sudo -u dmarc bash -c 'set -a; . /etc/dmarc/splunk.env; set +a; python3 /opt/dmarc/dmarc_to_splunk.py'
Verwachte uitvoer (afgekort):
============================================================
Integratie van PowerDMARC met Splunk
Uitvoermodus: hec
============================================================
DMARC-geaggregeerde rapporten worden verwerkt...
Overzichtsrapporten ophalen van 30-01-2026 tot en met 06-02-2026
Alle domeinen ophalen...
Pagina 1 opgehaald: 24 domeinen (totaal tot nu toe: 24)
Er zijn in totaal 24 domeinen opgehaald
Voortgang: 1,4% (1/72) | Domein 1/24: example.com | Verwachte voltooiingstijd: nog 4,7 min.
...
318 unieke gebeurtenissen in het geaggregeerde rapport verwerkt
Een batch van 318 dmarc:aggregate-gebeurtenissen verzonden (318/318)
HEC-overzicht voor dmarc:aggregate — verzonden: 318, mislukt: 0, totaal: 318
Auditlogboeken worden verwerkt...
Auditlogboeken ophalen van 30-01-2026 tot en met 06-02-2026
Er zijn in totaal 15 auditlogboekvermeldingen opgehaald
15 unieke auditlogboekgebeurtenissen van de afgelopen 7 dagen verwerkt
HEC-overzicht voor dmarc:audit — verzonden: 15, mislukt: 0, totaal: 15
============================================================
Integratie succesvol voltooid
============================================================
De eerste doorloop duurt het langst, omdat daarbij het volledige terugblikvenster wordt verzameld. Bij volgende doorlopen wordt alles overgeslagen wat al is ingelezen (zie Deduplicatie).
Geautomatiseerde uitvoering plannen
Linux/Unix (cron)
sudo crontab -u dmarc -e
Per uur:
0 * * * * set -a; . /etc/dmarc/splunk.env; set +a; /usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py >> /var/log/dmarc/run.log 2>&1
Het script schrijft naar de standaarduitvoer, dus de bovenstaande omleiding zorgt ervoor dat het uitvoerlogboek wordt vastgelegd. Voeg een logrotate regel toe voor /var/log/dmarc/run.log in de productieomgeving.
Het interval instellen. Het script houdt een interval van ongeveer 2 seconden aan tussen API-aanroepen om binnen de limiet van PowerDMARC te blijven, en het doet drie verzamelverzoeken per domein. Een ruwe schatting van de totale verzameltijd is domeinen × 3 × 4 seconden — ongeveer 5 minuten voor 25 domeinen, maar bijna 2 uur voor 500. Als uw account meer dan ~100 domeinen bevat, zal een schema per uur zichzelf overlappen. U kunt dan kiezen uit:
Verdeel het schema — voer het verzamelen van auditlogs elk uur uit en het verzamelen van geaggregeerde gegevens één keer per dag, of
Voeg een lock-bestand toe (flock) toe, zodat overlappende processen netjes worden afgesloten:
0 * * * * /usr/bin/flock -n /tmp/dmarc-splunk.lock -c 'set -a; . /etc/dmarc/splunk.env; set +a; /usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py' >> /var/log/dmarc/run.log 2>&1
Linux (systemd-timer)
Voor deze taak verdient een systemd-timer over het algemeen de voorkeur boven cron — deze verwerkt het omgevingsbestand op een native manier, voorkomt dat processen elkaar overlappen en stuurt de uitvoer naar het logboek.
/etc/systemd/system/dmarc-splunk.service:
[Eenheid]
Beschrijving=Gegevensoverdracht van PowerDMARC naar Splunk
After=network-online.target
[Dienst]
Type=oneshot
Gebruiker=dmarc
Groep=dmarc
EnvironmentFile=/etc/dmarc/splunk.env
ExecStart=/usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py
/etc/systemd/system/dmarc-splunk.timer:
[Eenheid]
Beschrijving=Voer elk uur de gegevensoverdracht van PowerDMARC naar Splunk uit
[Timer]
OnCalendar=hourly
Persistent=true
[Installeren]
WantedBy=timers.target
Schakel deze functie in:
sudo systemctl daemon-reload
sudo systemctl enable --now dmarc-splunk.timer
sudo systemctl list-timers dmarc-splunk.timer
journalctl -u dmarc-splunk.service -f
Windows (Taakplanner)
Openen Taakplanner en klik op Taak aanmaken
Tabblad ‘Algemeen’:
Naam: PowerDMARC Splunk-integratie
Beveiligingsopties: Uitvoeren ongeacht of de gebruiker is aangemeld
Tabblad ‘Triggers’: Nieuw → Start: Volgens een schema → Dagelijks, elke uur herhalen
Tabblad ‘Acties’: Nieuw → Een programma starten
Programma: python.exe
Argumenten: C:\dmarc\dmarc_to_splunk.py
Klik OK
Stel in Windows de configuratiewaarden in in het config direct in het woordenboek in te stellen of de omgevingsvariabelen op systeemniveau te definiëren, en output_dir / state_file in Windows-paden zoals C:\dmarc\logs en C:\dmarc\state\state.json.
Gegevensinvoer in Splunk valideren
Controledagboeken
index=powerdmarc sourcetype=dmarc:audit
| sorteren - _time
| kop 20
| tabel _time, gebruikersnaam, actie, ip-adres, beheerdersgebruikersnaam
Velden die je zou moeten zien:
gebruikersnaam — gebruiker die de actie heeft uitgevoerd
actie — beschrijving van de uitgevoerde handeling
ip_adres — IP-adres van de gebruiker
admin_username — beheerdersaccount, indien van toepassing
tijdstempel — oorspronkelijke tijdstip van de PowerDMARC-gebeurtenis
Geaggregeerde rapporten
index=powerdmarc sourcetype=dmarc:aggregate
| stats sum(email_volume) als volume, avg(dmarc_pass_percentage) als avg_pass per domain_name
| sorteren - volume
Geaggregeerde gebeurtenissen bevatten per domein en per afzender het aantal en de percentages voor DMARC, SPF en DKIM, evenals het daadwerkelijk toegepaste beleid.
Voorbeelden van evenementenstructuren
dmarc:audit
{
"sourcetype": "dmarc:audit",
"tijdstempel": "4 februari 2026 14:29:24",
"gebruikersnaam": "John Doe",
"actie": "Bijgevoegde domeinen bijgewerkt",
"ip_address": "12.111.67.123",
"admin_username": "n.v.t.",
"overige_informatie": "n.v.t."
}
dmarc:aggregate (afgekort)
{
"sourcetype": "dmarc:aggregate",
"tijdstempel": "6 februari 2026",
"report_date_from": "30-01-2026",
"report_date_to": "2026-02-06",
"domain_id": 1234,
"domeinnaam": "example.com",
"sending_source": "Google",
"status": "conform",
"email_volume": 4821,
"dmarc_pass_count": 4810,
"dmarc_pass_percentage": 99,77,
"spf_align_percentage": 99.77,
"dkim_align_percentage": 100.0
}
Tijdstempels van gebeurtenissen
Het script stelt de HEC in tijd veld van elke gebeurtenis in op basis van de eigen tijdstempel, voor zover het die kan parseren, dus _time geeft weer wanneer de gebeurtenis plaatsvond in plaats van wanneer deze werd ingelezen. Dit is van belang bij de eerste uitvoering: zonder deze instelling zou een backfill van zeven dagen volledig in de huidige minuut terechtkomen en er in elk tijdreeks-paneel onjuist uitzien.
Ontdubbeling
Het script houdt een statusbestand bij (standaard /var/lib/dmarc/state.json) met daarin de SHA-256-vingerafdrukken van alle reeds afgeleverde gebeurtenissen. Bij elke uitvoering worden gebeurtenissen die overeenkomen met een opgeslagen vingerafdruk overgeslagen. Vingerafdrukken die ouder zijn dan 14 dagen worden automatisch verwijderd om te voorkomen dat het bestand onbeperkt groeit.
Vingerafdrukken worden pas vastgelegd pas de levering is geslaagd. Een mislukte HEC POST zorgt er dus voor dat deze gebeurtenissen in aanmerking komen voor een nieuwe poging bij de volgende run, in plaats van dat ze stilzwijgend worden genegeerd.
Twee operationele gevolgen:
Het statusbestand moet bij elke uitvoering en bij het opnieuw opstarten behouden blijven. Plaats het niet in /tmp of in een containerlaag die wordt verwijderd.
Als je het statusbestand verwijdert, wordt bij de volgende run het volledige terugblikvenster opnieuw ingelezen. Dat is de juiste manier om een backfill te forceren, maar houd rekening met duplicaten in Splunk als de gegevens daar al aanwezig zijn.
Alternatief: Verwerking van bestandsmonitorgegevens
Als er geen uitgaande toegang tot de HEC-poort beschikbaar is, stel dan DMARC_OUTPUT_MODE=file (of beide). Het script schrijft JSON, gescheiden door regeleinden, naar output_dir, één bestand per uitvoering per dataset:
/var/log/dmarc/dmarc_aggregate_20260206_140312.json
/var/log/dmarc/audit_logs_20260206_140312.json
Configureer een Splunk-forwarder om die map te monitoren. In $SPLUNK_HOME/etc/system/local/inputs.conf:
[monitor:///var/log/dmarc/dmarc_aggregate_*.json]
disabled = false
index = powerdmarc
sourcetype = dmarc:aggregate
[monitor:///var/log/dmarc/audit_logs_*.json]
disabled = false
index = powerdmarc
sourcetype = dmarc:audit
En in props.conf, zodat gebeurtenissen per regel worden weergegeven en de tijdstempels correct worden weergegeven:
[dmarc:aggregate]
INDEXED_EXTRACTIONS = json
KV_MODE = none
SHOULD_LINEMERGE = false
TIME_PREFIX = "report_date_to":\s*"
TIME_FORMAT = %Y-%m-%d
[dmarc:audit]
INDEXED_EXTRACTIONS = json
KV_MODE = none
SHOULD_LINEMERGE = false
TIME_PREFIX = "timestamp":\s*"
TIME_FORMAT = %Y-%m-%d %H:%M:%S
De Splunk-gebruiker heeft leestoegang tot de map nodig — voeg deze toe aan de dmarc groep, of verruim de modus van de map naar 0755. Voeg een opschoontaak toe (find /var/log/dmarc -name '*.json' -mtime +7 -delete) zodat oude uitvoerbestanden zich niet opstapelen.
Probleemoplossing
Er worden geen gegevens weergegeven in Splunk
Uitvoeren met --test om te achterhalen of het probleem aan de kant van HEC of aan de kant van PowerDMARC ligt
Controleer of het HEC-token correct is en ingeschakeld is (Instellingen → Gegevensinvoer → HTTP Event Collector)
Controleer of de toegestane indexen van het token het volgende bevatten: powerdmarc
Controleer of de index bestaat en of je rol toegang heeft om daarin te zoeken
Controleer of de firewallregels uitgaand HTTPS-verkeer van de script-host naar het HEC-eindpunt toestaan
Bekijk het uitvoeringslogboek voor HEC heeft HTTP teruggestuurd … regels — in de fouttekst van Splunk wordt het specifieke probleem genoemd
HTTP 403 "Ongeldig token" van HEC
The token value is wrong, disabled, or belongs to a different Splunk stack. Note that the header format is Authorization: Splunk <token> — not Bearer.
HTTP 400 "Onjuiste index"
Het token staat de index waarop het script is gericht niet toe. Voeg ofwel powerdmarc toe aan de lijst met toegestane indexen van het token, of wijzig SPLUNK_INDEX in een index die het token al toestaat.
Fouten met SSL-certificaten
Installeer een certificaat dat door de script-host als betrouwbaar wordt beschouwd — dit is de juiste oplossing. Stel, uitsluitend als tijdelijke maatregel in niet-productieomgevingen, het volgende in: SPLUNK_VERIFY_SSL=false. Doe dit nooit in een productieomgeving; hierdoor wordt de beveiliging uitgeschakeld die HEC via TLS zinvol maakt.
Fouten bij de authenticatie via de PowerDMARC-API
Controleer of het API-token geldig is en niet is verlopen
Controleer of het token toestemming heeft voor zowel auditlogboeken als geaggregeerde rapporten
Controleer of de basis-URL van de API bereikbaar is vanaf de host
Het script wordt uitgevoerd, maar er zijn geen logbestanden opgehaald
Controleer of er daadwerkelijk auditlogs bestaan voor de terugblikperiode
Verhogen DMARC_DAYS_TO_FETCH tijdelijk
Houd er rekening mee dat deduplicatie eerder ingelezen gebeurtenissen onderdrukt — een rapportage van een run 0 unieke auditloggebeurtenissen verwerkt na een eerdere succesvolle run is normaal en geen fout
Toegang geweigerd bij het opstarten
Het serviceaccount kan geen bestanden aanmaken of schrijven in /var/lib/dmarc of /var/log/dmarc. Maak beide mappen vooraf aan en voer wijzig de eigenaar ze toe aan het account waaronder het script wordt uitgevoerd, zoals weergegeven in stap 5.
De uitvoering duurt langer dan het geplande tijdsinterval
Zie de opmerking over de maatvoering onder Geautomatiseerde uitvoering plannen. Voeg flock of splits het ophaalrooster op.
Volgende stappen
Als de gegevens binnenkomen, kun je:
Maak aangepaste dashboards voor DMARC-naleving, met trends per domein en afzender
Waarschuwingen bij auditgebeurtenissen, zoals beleidswijzigingen of aanmeldingen vanuit onverwachte IP-bereiken
Waarschuwing bij verslechtering van de naleving — een afzender waarvan dmarc_pass_percentage van week tot week sterk daalt
Koppel PowerDMARC-gegevens aan andere beveiligingslogboeken (mailgateway, identiteitsbeheer, EDR)
Stel rapportages op over naleving en managementrapportages op basis van de geaggregeerde gegevensset
Aanbevolen verbeteringen
Extra API-eindpunten: breid het script uit om forensische rapporten of configuratiegegevens per domein op te halen
Logboekrotatie: voeg een logrotate regel toe voor het uitvoeringslogboek van het script in de productieomgeving
Foutmeldingen: plaats het script in een aanroep die een waarschuwing geeft bij een exitstatus die niet nul is, of geef in Splunk een waarschuwing bij het ontbreken van het verwachte aantal gebeurtenissen per uur
Als Splunk TA bundelen: bundel de inputs, props en configuratie op index-tijdstip als een Technology Add-on voor eenvoudigere distributie
Beheer van geheimen: vervang het omgevingsbestand door een geheimenbeheerder (Vault, AWS Secrets Manager, systemd-inloggegevens) indien beschikbaar
Beveiligingsoverwegingen
Sla de inloggegevens buiten het script op. Gebruik het omgevingsbestand (modus 640, eigendom van root:dmarc) of een geheimenbeheerder. Committeer tokens nooit naar versiebeheer.
Zorg ervoor dat TLS-verificatie ingeschakeld blijft. SPLUNK_VERIFY_SSL is standaard ingesteld op true om een bepaalde reden.
Draai het programma onder een speciaal account zonder beheerdersrechten. Voor de integratie zijn geen root-rechten nodig.
Beperk het HEC-token. Beperk het tot de powerdmarc index.
Beide tokens volgens een schema afwisselen — het PowerDMARC-bearer-token en het Splunk HEC-token.
De uitvoering controleren. Geef een waarschuwing bij mislukte uitvoeringen en bij onverwachte hiaten in de gegevensopname.
Controleer de toegangsbeperkingen van Splunk. Auditloggegevens identificeren gebruikers en bron-IP-adressen; beperk de index tot rollen die deze nodig hebben.
Ondersteuning en bronnen
PowerDMARC API-documentatie: https://api.powerdmarc.com/
Documentatie over Splunk HEC: https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector
Splunk Answers: https://community.splunk.com/