Een SIEM-oplossing ontwikkelen voor Microsoft Sentinel

Met Microsoft Sentinel-oplossingen kunnen onafhankelijke softwareleveranciers (ISV's) en partners een gegevensconnector samen met gerelateerde beveiligingsinhoud, zoals werkmappen, analyseregels, opsporingsquery's, playbooks en parsers, bundelen in één installeerbaar pakket. Klanten kunnen deze oplossingen vervolgens detecteren en implementeren vanuit de Microsoft Sentinel inhoudshub en Azure Marketplace.

Opmerking

Als u een ISV bent die een Microsoft Sentinel-integratie bouwt, kan het Microsoft App Assure-team u mogelijk helpen tijdens het hele proces. Als u contact wilt opnemen met het team, stuurt u een e-mail naar azuresentinelpartner@microsoft.com.

Phase Activities
Leren Meer informatie over Sentinel, bepalen wat u moet bouwen, uitgeversaccounts maken, uw omgeving instellen
Build Uw omgeving inrichten, uw connector- en oplossingsinhoud bouwen
Test Uw oplossing verpakken, testen, een pull-aanvraag indienen en feedback oplossen
Publiceren Een aanbieding maken in partnercentrum, de preview testen en live gaan
Voorbeeld Informeer klanten, los ondersteuningsproblemen op, controleer vier weken
Ga naar de markt Verwijder de preview-vlag, luister naar klanten, verbeter uw oplossing

Learn

Voer de volgende stappen uit voordat u begint met bouwen:

Build

In de buildfase stelt u uw ontwikkelomgeving in en maakt u vervolgens uw connector- en oplossingsinhoud.

Uw omgeving inrichten

Configureer voordat u uw ontwikkelomgeving bouwt, zodat u oplossingsinhoud kunt ontwerpen, testen en verzenden.

Fork en kloon de opslagplaats

Voer de volgende stappen uit om de Azure-Sentinel opslagplaats te splitsen en te klonen:

  1. Ga in GitHub naar de Azure-Sentinel opslagplaats en selecteer Fork.

  2. Kloon uw fork naar uw lokale computer:

    git clone https://github.com/<your-github-username>/Azure-Sentinel.git
    cd Azure-Sentinel
    
  3. Voeg de upstream remote toe zodat u de meest recente wijzigingen kunt ophalen:

    git remote add upstream https://github.com/Azure/Azure-Sentinel.git
    

Een ontwikkel-/testwerkruimte instellen

U hebt een werkende Microsoft Sentinel werkruimte nodig om uw connector en inhoud te ontwikkelen en te valideren voordat u deze indient. Zie Onboard Microsoft Sentinel.

Nadat uw werkruimte is ingericht, wijst u de volgende machtigingen toe:

  • Microsoft Sentinel Contributor in de werkruimte om resources te implementeren en te beheren
  • Log Analytics-bijdrager voor de werkruimte om aangepaste tabellen en regels voor gegevensverzameling (DCR’s) te maken en te beheren
  • Inzender voor de resourcegroep voor het implementeren van ARM-sjablonen tijdens het testen

Aan de Defender-portal koppelen

Onboard uw werkruimte naar de Defender-portal om de installatie van uw oplossing te valideren, naadloze opname in het Unified Security Operations Platform te garanderen en end-to-end te testen voordat u publiceert. Zie Microsoft Sentinel in de Microsoft Defender-portal voor meer informatie.

Een oplossing bouwen

Een Microsoft Sentinel oplossing is een map met connector- en inhoudsbestanden die het verpakkingshulpprogramma in een implementeerbaar pakket samenstelt. Maak de mapstructuur, voeg de verpakkingsbestanden toe en bouw vervolgens elk inhoudstype.

De structuur van uw oplossingsmap maken in GitHub

Voer de volgende stappen uit om de mapstructuur van uw oplossing in te stellen:

  1. Maak en schakel over naar een nieuwe vertakking op uw fork. Gebruik een beschrijvende naam zoals add-<YourSolutionName>-solution:

    git checkout -b add-<YourSolutionName>-solution
    
  2. Maak een map met de naam van uw oplossing onder Solutions/:

    Solutions/<YourSolutionName>/
    ├── Data/
    │   └── Solution_<YourSolutionName>.json
    ├── SolutionMetadata.json
    ├── ReleaseNotes.md
    ├── Data Connectors/
    ├── Workbooks/
    ├── Analytic Rules/
    ├── Hunting Queries/
    ├── Playbooks/
    └── Parsers/
    
    bestand/map Vereist Inhoud
    Data/Solution_<YourSolutionName>.json Vereist Oplossingsmanifest dat elk inhoudsbestand in de oplossing weergeeft en het hulpprogramma voor het maken van pakketten aanstuurt
    SolutionMetadata.json Vereist Publisher- en marketplace-metagegevens: publisher-id, aanbiedings-id, categorieën en ondersteuningsgegevens
    ReleaseNotes.md Vereist Versiebeheergeschiedenistabel, vereist voor elke pakketinzending
    Data Connectors/ Optioneel JSON-connectorbestanden of Azure Functions code voor op functies gebaseerde connectors
    Workbooks/ Optioneel JSON-bestanden van werkmappen en zwart-wit voorbeeldschermafbeeldingen
    Analytic Rules/ Optioneel YAML-analyseregelsjablonen
    Hunting Queries/ Optioneel YAML-querysjablonen voor opsporing
    Playbooks/ Optioneel Playbook JSON-bestanden en Azure Logic Apps aangepaste connectordefinities
    Parsers/ Optioneel YAML-definities voor Kusto-functies/parsers

    De inhoudssubmappen zijn optioneel. Maak alleen de mappen die van toepassing zijn op uw oplossing. U hoeft niet elk inhoudstype op te nemen, maar als u voldoet aan de minimale inhoudsvereisten, wordt uw kwaliteitsscore verbeterd.

    Voor een voorbeeld van een volledige mapstructuur opent u de map Oplossingen/ map in de opslagplaats en bladert u door een aantal bestaande oplossingen.

De oplossingsverpakkingsbestanden maken

Data/Solution_<YourSolutionName>.json

Dit bestand stuurt het V3-verpakkingshulpprogramma aan. Het bevat alle inhoudsbestanden in uw oplossing en bepaalt hoe ze worden samengevoegd in mainTemplate.json. Elk inhoudstype is een matrix. Voeg één vermelding per bestand toe voor elk stukje inhoud dat u hebt. Zie Uw oplossing verpakken voor meer informatie over het verpakkingsprogramma.

In het volgende voorbeeld heeft de oplossing twee analyseregels, dus de "Analytic Rules" matrix heeft twee vermeldingen. Als u bijvoorbeeld geen playbooks maakt, verwijdert u de "Playbooks" sleutel volledig uit het bestand.

{
  "Name": "Contoso MyProduct",
  "Author": "Contoso - support@contoso.com",
  "Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/contoso.svg\" width=\"75px\" height=\"75px\">",
  "Description": "The Contoso MyProduct solution for Microsoft Sentinel enables you to ingest MyProduct logs into Microsoft Sentinel.",
  "BasePath": "C:/GitHub/Azure-Sentinel/Solutions/Contoso MyProduct",
  "Version": "1.0.0",
  "Metadata": "SolutionMetadata.json",
  "TemplateSpec": true,
  "Data Connectors": [
    "Data Connectors/ContosoMyProduct.json"
  ],
  "Workbooks": [
    "Workbooks/ContosoMyProductWorkbook.json"
  ],
  "Analytic Rules": [
    "Analytic Rules/ContosoMyProductSuspiciousLogin.yaml",
    "Analytic Rules/ContosoMyProductDataExfiltration.yaml"
  ],
  "Hunting Queries": [
    "Hunting Queries/ContosoMyProductThreatHunt.yaml"
  ],
  "Parsers": [
    "Parsers/ContosoMyProduct.yaml"
  ],
  "Playbooks": [
    "Playbooks/ContosoMyProduct-EnrichIncident/azuredeploy.json"
  ]
}
Veld Aantekeningen
Name Alleen alfanumerieke tekens en spaties. Geen afbreekstreepjes, onderstrepingstekens of symbolen.
Author Opmaak: Organization - email@domain.com
Logo HTML-tag <img> die verwijst naar uw logo SVG op de onbewerkte GitHub URL onder Logos/. Zie Uw logo toevoegen voor bestandsvereisten en validatieregels.
BasePath Het pad van uw lokale repository naar de oplossingsmap. Niet gebruikt tijdens runtime.
Version Moet overeenkomen SolutionMetadata.json en mainTemplate.json.
TemplateSpec Bekijk de bestaande oplossingen in de repository voor de juiste waarde voor uw connectortype.
Inhoudsmatrices Eén vermelding per bestand. Voeg alle bestanden voor een bepaald inhoudstype toe aan de matrix. Verwijder de sleutel volledig als u geen inhoud van dat type hebt. Laat geen lege matrix achter. Paden zijn relatief aan BasePath.

SolutionMetadata.json

Dit bestand bevat de marketplace- en uitgeversmetagegevens die tijdens de certificering van het Partnercentrum worden gebruikt.

{
  "publisherId": "contoso",
  "offerId": "contoso-myproduct-sentinel",
  "firstPublishDate": "2026-06-15",
  "lastPublishDate": "2026-06-15",
  "providers": [
    "Contoso"
  ],
  "categories": {
    "domains": [
      "Security - Threat Intelligence"
    ]
  },
  "support": {
    "name": "Contoso",
    "email": "support@contoso.com",
    "tier": "Partner",
    "link": "https://support.contoso.com"
  }
}

publisherId en offerId afkomstig zijn van uw partnercentrumaanbieding. support.tier moet voor ISV-oplossingen zijn "Partner" . Zie de categories.domains voor geldige waarden.

Veld Aantekeningen
publisherId Uw uitgever-id in Partner Center.
offerId Uw aanbiedings-id van Partner Center. Deze waarde wordt ingesteld wanneer u de aanbieding maakt in partnercentrum en niet kan worden gewijzigd na het maken. De waarde moet exact overeenkomen met de aanbiedings-id in het Partnercentrum. Een niet-overeenkomende fout veroorzaakt een certificeringsfout. Zie Pakket een SIEM-oplossing voor Microsoft Sentinel voor de wijze waarop de aanbiedings-id wordt gemaakt.
firstPublishDate ISO 8601-datum. Stel deze eenmaal in en wijzig deze niet na de eerste publicatie.
lastPublishDate Werk bij zodat deze overeenkomt met elke nieuwe release.
providers Matrix met leveranciers-/productprovidernamen.
categories.domains Een of meer domeincategorieën uit de oplossingencatalogus.
categories.verticals Optionele branches. Laat indien niet van toepassing.
support.tier "Partner"voor ISV, "Microsoft" voor Microsoft, "Community" voor community.

ReleaseNotes.md

Het ReleaseNotes.md bestand registreert de wijzigingsgeschiedenis voor uw oplossing. Dit bestand wordt gevalideerd tijdens pr-controles. Ontbrekende of onjuist opgemaakte vermeldingen leiden tot afwijzing van de PR.

De tabel moet exact drie kolommen bevatten met deze exacte koptekstnamen (inclusief de vetgedrukte markeringen):

| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|---|---|---|
| 1.0.1 | 12-06-2026 | Updated analytic rule query to fix false positives. |
| 1.0.0 | 01-06-2026 | Initial solution release. |

Validatieregels

  • Versie-indeling: X.Y.Z voeg geen voorvoegsel toe v . Alle drie de onderdelen zijn vereist.
  • Versies worden in aflopende volgorde weergegeven met de nieuwste versie in de eerste rij
  • Datumnotatie: DD-MM-YYYY met afbreekstreepjes (niet YYYY-MM-DD)
  • Kolomkoppen moeten exact overeenkomen, inclusief de **bold** markeringen
  • Wijzigingsgeschiedeniscel mag niet leeg zijn
  • Een nieuwe rij toevoegen voor elke versie-bump, inclusief typocorrecties

De versie in ReleaseNotes.md moet overeenkomen met de versie in SolutionMetadata.json, Data/Solution_*.jsonen de zip-bestandsnaam van het pakket.

Plaats uw logo op Logos/<YourProductName>.svg in de hoofdmap van de repository. Verwijs ernaar met Data/Solution_<YourSolutionName>.json behulp van een HTML-tag <img> die verwijst naar de onbewerkte GitHub-URL:

"Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/YourProductName.svg\" width=\"75px\" height=\"75px\">"

Het SVG-bestand moet voldoen aan de volgende vereisten:

Selecteren Requirement
Bestandsindeling .svg alleen de extensie. PNG-, JPEG- of andere indelingen zijn niet toegestaan.
Bestandsgrootte ≤ 5 kB
style=-kenmerk Niet toegestaan. Verwijder alle inlinekenmerken style="..." uit elementen.
cls=-kenmerk Niet toegestaan
xmlns:xlink naamruimte Niet toegestaan. Verwijderen uit het <svg> hoofdelement.
data-name-kenmerk Niet toegestaan. Illustrator voegt deze kenmerken toe als laagnamen. Ze moeten worden verwijderd.
xlink:href Niet toegestaan. Gebruik inline SVG-paden in plaats van ingesloten afbeeldingsverwijzingen.
<title> Tag Niet toegestaan. Verwijder alle <title>...</title> elementen.
Ingebedde PNG Niet toegestaan. Alle <image>-elementen die naar .png-bestanden verwijzen, worden afgewezen
Elementwaarden id Als er id="..." kenmerken aanwezig zijn, moet elke waarde een geldige UUID zijn (bijvoorbeeld id="a1b2c3d4-e5f6-4789-abcd-0123456789ab"). Leesbare ID's zoals id="Layer_1" werken niet. Alle id's moeten uniek zijn in het bestand.

Waarschuwing

SVG-bestanden die rechtstreeks vanuit Adobe Illustrator, Figma of Inkscape worden geëxporteerd zonder opschoning, doorstaan de validatie bijna altijd niet. Veelvoorkomende exportartefacten die moeten worden verwijderd, zijn onder andere:

  • style="stroke: none; fill: rgb(0,0,0); ..." op elk element: vervang door directe kenmerken fill en stroke, of verwijder deze indien standaard
  • data-name="Layer 1": kenmerk voor de naam van Illustrator-lagen; verwijderen uit elk <g>-element
  • xmlns:xlink="http://www.w3.org/1999/xlink": Op de <svg> wortel; verwijder het volledige attribuut
  • <title>Layer 1</title>: In de eerste <g>; verwijder de tag
  • Niet-GUID ID's zoals id="Layer_1" of id="cls-1": Vervang door een UUID of verwijder het id attribuut helemaal als het niet wordt genoemd

Een schoon logo gebruikt alleen fill en stroke kenmerken rechtstreeks op padelementen, zonder id kenmerken, tenzij naar een <defs> element wordt verwezen. Voor een minimaal geldig voorbeeld, zie Logos/XBOW.svg.

Een gegevensconnector bouwen

Als u een connector bouwt met behulp van de werkstroom van de AI-agent, raadpleegt u Aangepaste connectors maken met behulp van een AI-agent in Microsoft Sentinel in plaats van de onderstaande stappen uit te voeren.

Kies uw verbindingslijntype

Microsoft Sentinel ondersteunt verschillende connectortypen, waarvan veel gebruikmaken van het Codeless Connector Framework (CCF). Kies degene die het beste past bij uw gegevensbron en de gewenste klantervaring.

Verbindingslijntype Geschikt voor Begeleiding
CCF-polling REST API's die uw connector volgens een schema aanroept. Volledig SaaS, zonder agent of VM vereist. Bevat ingebouwde statuscontrole en volledige ondersteuning voor Microsoft. Een connector zonder code maken voor Microsoft Sentinel
CCF-push Gegevensbronnen die logboeken naar een Microsoft Sentinel-eindpunt pushen. Microsoft Sentinel CCF-pushconnectors (preview)
CCF-blob Gegevensbronnen die logboeken schrijven naar Azure Blob Storage of Azure Data Lake Storage. De Azure Storage-connector instellen
CCF GCP Gegevensbronnen die logboeken naar Google Cloud Storage schrijven. Referentie van de GCP-gegevensconnector
CEF On-premises apparaten die Common Event Format-logs genereren. Gegevens komen terecht in de bekende CommonSecurityLog tabel. Verbind logs in CEF-indeling
Syslog On-premises apparaten die alleen onbewerkte Syslog kunnen verzenden. Minst voorkeur; Voor query's is KQL-parsering vereist. Syslog-gegevensbronnen verzamelen
Azure Functions(verouderd) REST API's wanneer CCF niet haalbaar is vanwege technische beperkingen. Gebruik alleen als laatste redmiddel. Neem azuresentinelpartner@microsoft.com contact op voordat u gaat bouwen om te bevestigen of u in aanmerking komt. Sjabloon voor de Azure Functions-connector
De definitie van de connector bouwen

Gedetailleerde buildstappen zijn specifiek voor elk type connector. Gedetailleerde buildstappen zijn specifiek voor elk type connector. Volg de richtlijnen voor het gekozen type in de tabel van het connectortype. .

Gebruik de volgende oplossingen in de Azure-Sentinel opslagplaats als verwijzingen voor elk connectortype.

Verbindingslijntype Referentievoorbeeld
CCF-opvraging SentinelOne CCF-polling-connector
CCF-push Jamf Protect CCF-pushconnector
CCF-blob Cloudflare CCF blobconnector
CCF GCP Connector voor Google Cloud Platform-auditlogboeken
CEF/Syslog Cisco ISE CEF- en Syslog-connectoren

Wanneer de JSON van de connector is voltooid, plaatst u deze in de Data Connectors/ submap van de oplossingsmap en noemt u deze ProviderNameApplianceName.json (geen spaties).

Uw connector testen

Important

Controleer voordat u werkmappen, analyseregels en andere inhoud bouwt of uw connector gegevens naar de verwachte tabel verzendt en dat query's resultaten retourneren. Het is eenvoudiger om in deze fase problemen met gegevensstromen en schema's te ondervangen dan nadat u afhankelijke inhoud hebt gebouwd. Zie de sectie Uw pakket testen voor het verpakken en implementeren van uw connector in een dev-werkruimte.

Uw inhoud bouwen

Verrijk uw oplossing naast de gegevensconnector met SIEM-inhoud waarmee klanten direct waarde kunnen krijgen uit uw gegevens. Aanvullende SIEM-inhoud omvat:

  • Werkmappen
  • Analytische regels
  • Jachtzoekopdrachten
  • Playbooks
  • Parsers (taalanalysatoren)

Deze inhoud is optioneel, maar wordt aanbevolen. Zie Microsoft Sentinel kwaliteitsrichtlijnen voor oplossingen voor minimale vereisten en kwaliteitsscores.

Werkmappen maken

Werkmappen zijn dashboards en visualisaties waarmee klanten inzicht krijgen in hun gegevens. Zie Werkmappen maken voor Microsoft Sentinel als u een werkmap wilt maken.

Zie de volgende referentievoorbeelden in de Azure-Sentinel opslagplaats voor hulp bij het ontwerpen en indelen van werkmappen:

Analytische regels maken

Analytische regels zijn sjablonen waarmee bedreigingen in uw gegevens worden gedetecteerd. Elke regel is een YAML-bestand. Zie Analyseregels maken voor Microsoft Sentinel om een analyseregel te maken.

Zie de volgende referentievoorbeelden in de Azure-Sentinel opslagplaats voor hulp bij het ontwerpen en indeling van analyseregels:

Query's voor opsporing maken

Opsporingsquery's zijn sjablonen waarmee klanten proactief naar bedreigingen in hun gegevens kunnen zoeken. Ze verschijnen in de blade Opsporing, zodat analisten ze handmatig kunnen uitvoeren. Ze delen dezelfde YAML-structuur als analytische regels, maar zijn niet geautomatiseerd; Geplande uitvoeringsvelden zijn niet van toepassing en veroorzaken een beoordelingsmislukking als ze worden opgenomen. Zie Opsporingsquery’s maken voor Microsoft Sentinel als u een opsporingsquery wilt maken.

Zie de volgende referentievoorbeelden in de Azure-Sentinel opslagplaats voor hulp bij het ontwerpen en indeling van opsporingsquery's:

Playbooks maken

Playbooks zijn geautomatiseerde antwoordwerkstromen waarmee klanten kunnen reageren op bedreigingen in hun gegevens. Elk playbook is een Azure Logic Apps werkstroom die wordt geëxporteerd als een ARM-sjabloon. De twee vereiste bestanden zijn azuredeploy.json en readme.md, geplaatst in Solutions/<YourSolutionName>/Playbooks/<PlaybookName>/. Zie Playbooks voor Microsoft Sentinel maken om een playbook te maken.

Zie de volgende referentievoorbeelden in de Azure-Sentinel opslagplaats voor hulp bij het ontwerpen en indeling van playbooks:

Parsers maken

Een parser is een Kusto-functie die is opgeslagen in uw Log Analytics werkruimte die zich vóór onbewerkte logboekgegevens bevindt en deze normaliseert in schone, doorzoekbare velden. In plaats van in elke query veldextractielogica te schrijven, roepen klanten de parseralias eenmaal aan en krijgen ze gestructureerde resultaten. Parsers worden gedefinieerd als YAML-bestanden en automatisch geïmplementeerd wanneer een klant uw oplossing installeert. Zie Parsers maken voor Microsoft Sentinel om een parser te maken.

Zie de volgende referentievoorbeelden in de Azure-Sentinel opslagplaats voor hulp bij het ontwerpen en de indeling van parser:

Uw pakket testen

Testen volgt het pakket → implementeren → → validatiecyclus inschakelen . De cyclus is hetzelfde, ongeacht hoeveel inhoud u hebt gebouwd. Het V3-verpakkingshulpprogramma converteert uw oplossingsbestanden naar een implementeerbare ARM-sjabloon (mainTemplate.json). Implementeer de sjabloon in een Microsoft Sentinel-ontwikkelwerkruimte, schakel elk inhoudstype in en bevestig dat dit werkt voordat u een PR indient.

Herhaal deze cyclus terwijl u bouwt. U hoeft niet alle inhoudstypen te voltooien voordat u begint met testen. Verpakken en implementeren terwijl u elk inhoudstype voltooit, controleer of het werkt en voeg vervolgens meer inhoud en opnieuw verpakken toe.

Als uw oplossing een gegevensconnector bevat, test u eerst de connector voordat u afhankelijke inhoud bouwt, zoals analyseregels en werkmappen. Alle SIEM-inhoud is afhankelijk van gegevens die naar de juiste tabellen stromen met het juiste schema. Als de connector niet werkt of het schema niet overeenkomt met wat uw regels verwachten, moet u de afhankelijke inhoud opnieuw bewerken. Zorg ervoor dat de gegevens eerst stromen om tijd te besparen.

Opmerking

Alleen voor CCF-pollingconnectors: Voordat u uw connector verpakt, kunt u de pollingconfiguratie van uw connector valideren zonder deze te implementeren in een livewerkruimte. Klik in de Microsoft Sentinel-extensie voor Visual Studio Code met de rechtermuisknop op het definitiebestand van de connector en selecteer Connector testen. Zie stap 4: De connectorconfiguratie valideren voor meer informatie.

Uw oplossing verpakken

Nadat u uw Microsoft Sentinel oplossingsonderdelen hebt ontwikkeld en getest, is het verpakken de volgende kritieke stap in de levenscyclus van de oplossing. De verpakkingstool bundelt alle inhoud van uw oplossing — gegevensconnectors, parsers, werkmappen, analyseregels, opsporingsquery’s, aangepaste connectors voor Azure Logic Apps en playbooks — in een gestandaardiseerde indeling voor implementatie. Zie Een SIEM-oplossing verpakken voor Microsoft Sentinel voor meer informatie.

Ga naar de markt

Wanneer u Go live selecteert, doorloopt de oplossing een definitieve certificeringscontrole voordat deze openbaar beschikbaar wordt. Na certificering wordt de oplossing vermeld in de Microsoft Sentinel inhoudshub en zichtbaar in de Sentinel-werkruimte van elke klanttenant onder Content Hub. Het is ook te vinden in de Azure Marketplace. De oplossing is nu beschikbaar voor alle Microsoft Sentinel klanten. Raadpleeg SIEM-oplossingen publiceren naar Microsoft Sentinel voor meer informatie.

Vanaf dit punt vereist elke update van de oplossing, zoals inhoudelijke wijzigingen, bugfixes en versieverhogingen, een nieuwe GitHub-PR, een nieuwe pakketversie en een nieuwe inzending bij Partner Center met het bijgewerkte zip-bestand. Zie Uw oplossing bijhouden na publicatie in partnercentrum voor het bijhouden van status- en ondersteuningsproblemen na publicatie.