Microsoft Sentinel Codeless Connector Platform
Er zijn veel verschillende manieren om je beveiligingsdata in Microsoft Sentinel te krijgen: je kunt gebruik maken van agent based software, spelen met de Diagnostische Instellingen van Azure Resources, API’s gebruiken om data direct naar Sentinel te sturen, of een van de vele kant-en-klare Microsoft-integraties gebruiken. Echter, er is een verborgen parel die, naar mijn bescheiden mening, waarschijnlijk de beste optie is voor de meeste Sentinel-integraties: Het Codeless Connector Platform (CCP). In dit artikel verkennen we de achtergrond van het CCP: wat is het, hoe werkt het, en wat is het grote verschil met de “klassieke” methoden voor het onboarden van een databron? Laten we erin duiken!
Wat is een Dataconnector?
Voordat we beginnen, leggen we eerst de basis: Microsoft Sentinel is een cloud-native Security Information & Event Management (SIEM) oplossing, gebouwd op een Log Analytics Workspace, een Azure Resource. Om bedreigingen effectief te kunnen detecteren met een SIEM, moet je relevante data sturen: het is moeilijk om afwijkingen in aanmeldingslogs te detecteren als je geen logs hebt om mee te beginnen.
Microsoft Sentinel heeft een speciale Dataconnector pagina, waar je verschillende databronnen kunt koppelen aan Microsoft Sentinel. Een dataconnector is een invoer op deze Dataconnector pagina. Een Dataconnector bestaat uit een GUI die informatie toont, zoals de verbonden status, het aantal ontvangen gebeurtenissen en installatie instructies. Op de achtergrond moet de connector ook een mechanisme bieden om de logs in Sentinel te krijgen: dit kan gebeuren via diagnostische instellingen als het gaat om Azure-resources (bijvoorbeeld de Azure Storage Account connector), een black-box systeem als het een product van Microsoft zelf is (bijvoorbeeld de Microsoft XDR-connector), of een systeem gebaseerd op code/agents als het om producten van derden gaat (bijvoorbeeld Cisco DUO).
Connectors zijn een van de belangrijkste onderdelen in Microsoft Sentinel. Een slecht functionerende connector kan leiden tot verloren logs, waardoor mogelijke beveiligingsincidenten onopgemerkt blijven. Als je je eigen applicatie ontwikkelt, stelt een connector op de Sentinel Content Hub je klanten in staat om je product eenvoudig te integreren met Microsoft Sentinel, wat zorgt voor een soepele onboarding in het beveiligingsproces van hun bedrijf.
De “klassieke” dataconnector
Als je rondgekeken hebt in de Sentinel Content Hub, weet je dat de meeste beschikbare dataconnectors worden ingesteld via een soort intermediair systeem: vaak een function-app of soms een virtuele machine. Dit systeem haalt dan data op met een pull-push aanpak: Het systeem haalt de data op van het bronsysteem en stuurt het vervolgens door naar het bestemmingssysteem (Sentinel).
Deze aanpak werkt, maar er zijn enkele nadelen voor de klant. Allereerst kan de implementatie vrij eenvoudig zijn, maar het kan ook nogal wat gedoe opleveren. Een goed voorbeeld is een connector die vereist dat je een VM instelt, meerdere OS-pakketten installeert, een OMS-agent installeert en alles configureert van A tot Z. Daarnaast, na al die stappen, zit de klant met een intermediair systeem met alle bijbehorende kosten, complexiteit en onderhoud. Werkt de function-app niet? Dan moet de klant weten hoe ze diagnostische instellingen of app-insights kunnen inschakelen om problemen op te lossen! Heb je een VM moeten implementeren? Dan moet de klant een aanpak hebben voor het toepassen van patches en het maken van back-ups. Daarnaast hebben sommige connectors twijfelachtige configuraties, zoals function-apps die direct aan het internet zijn blootgesteld of API-sleutels die niet op beveiligde locaties worden opgeslagen.
CCP schiet te hulp!
Dit is waar het Codeless Connector Platform (CCP) om de hoek komt kijken. Het CCP staat voor het Codeless Connector Platform. De naam suggereert al wat het doet: optreden als een Sentinel Dataconnector, zonder dat er code geschreven hoeft te worden. Het idee achter het CCP is om een methode te introduceren die weinig inspanning en complexiteit vereist om je databronnen met Microsoft Sentinel te integreren, zonder dat je hoeft te weten hoe je moet programmeren of een soort intermediairsysteem moet hosten.
Het CCP volgt een fundamenteel andere aanpak en kiest voor een pull-aanpak. In plaats van een tussenliggend systeem, is een CCP-connector een “definitie” van een API: welk eindpunt moet worden aangeroepen, hoe moet er worden geauthenticeerd, en hoe moet het verzoek worden geparsed. Die definitie wordt dan door Sentinel gebruikt om met de API te communiceren en de data op te halen.
Deze aanpak heeft veel voordelen voor de klant: onboarding is zo simpel als het invullen van een GUI met de vereiste velden en op “connect” klikken. Er is geen tussenliggend systeem dat kosten, complexiteit, onderhoud en een extra aanvalsoppervlak met zich meebrengt.
Configuratie
Een Codeless Connector is niets meer dan een ARM-sjabloon, bestaande uit twee delen: Een “connectorUiConfig” (de GUI van je connector in het tabblad Sentinel Data Connectors) en een “pollingConfig” (de daadwerkelijke API-definitie). De pollingconfiguratie is verreweg het meest interessante deel: hier gebeurt de magie! De pollingconfiguratie heeft vier hoofdeigenschappen:
- Auth: definieert hoe Sentinel authenticatie uitvoert naar de API. Het CCP ondersteunt meerdere opties, zoals API-sleutels, gebruikersnaam/wachtwoord combinaties of OAuth 2.0. De klant kan deze waarden via de GUI invoeren.
- Request: definieert hoe de API daadwerkelijk wordt aangeroepen. Hier geef je instructies aan Sentinel om een GET- of POST-verzoek te doen, naar welk eindpunt dat verzoek moet worden gestuurd, wat er in de body moet worden verzonden (indien van toepassing), hoe vaak de query moet worden uitgevoerd en hoe snelheidslimieten en time-outs moeten worden toegepast.
- Paging: sommige datasets kunnen te groot zijn om in één enkele API-aanroep te retourneren. Om dit probleem op te lossen, is paginering uitgevonden. In plaats van alle gegevens op te vragen, vraag je eenvoudigweg de “eerste pagina” van je volledige gegevensboek aan. Nadat je de eerste pagina hebt ontvangen, vraag je de tweede pagina op, vervolgens de derde, enzovoort. Paginering komt in veel vormen voor, en het CCP ondersteunt veel van deze, zoals LinkHeaders, NextPageTokens, NextPageUrl’s en Offsets.
- Response: het response gedeelte geeft Sentinel instructies over hoe het antwoord moet worden gelezen. Bijvoorbeeld, is het resultaat een .zip-bestand dat moet worden uitgepakt? Je kunt Sentinel ook instrueren waar de exacte locatie van de logs in de response te vinden is. De meeste API’s zullen logs retourneren in een response.Content, response.Value of een response.Item-eigenschap. Met het Response-gedeelte kan Sentinel het geretourneerde bericht correct verwerken.
Nadelen van de Microsoft Sentinel CCP
Op dit punt denk je waarschijnlijk: “De CCP klinkt goed, maar wat zijn de nadelen?” Wel, dat hangt grotendeels af van de versie van het CCP die je gaat gebruiken. Zoals je kunt zien in de afbeelding, werd CCP versie 1 beschikbaar in openbare preview begin 2023. CCP V1 verliet de openbare preview nooit voordat het in 2024 als “legacy” werd beschouwd. Gelukkig werd de opvolger van V1, de CCP V2, in dezelfde blogpost geïntroduceerd.
Conclusie
Je weet nu dat het Codeless Connector Platform je in staat stelt een klantvriendelijke connector te maken: verbinden via een CCP-connector is net zo eenvoudig als de standaard Microsoft-integraties. Het ontlast een klant van het moeten hosten en beheren van intermediaire systemen, terwijl het zo dicht mogelijk bij een authentieke “cloud ervaring” blijft.
Je hebt echter ook gelezen dat de ontwikkeling van de CCP-connector een uitdaging kan zijn, aangezien je moet werken met lange ARM-sjablonen en ingewikkelde API-terminologie. Daarom neem ik je in de volgende stapsgewijze blog mee door het ontwerp en de bouw van je eigen CCP-connector. Bedankt voor het lezen en hopelijk zie ik je in de volgende blog!