Toegangsbeheer in defensie C2-software is geen functie die aan het einde van de ontwikkeling wordt toegevoegd. Het is een fundamentele architectuurkeuze die bepaalt wie welke data kan zien, wie welke opdrachten kan geven, en hoe die beslissingen worden afgedwongen op elke laag van het systeem — van API-eindpunten tot databasequery's tot WebSocket-abonnementen. Het fout doen betekent ofwel het blootstellen van geclassificeerde data aan onbevoegde gebruikers of het vergrendelen van operators die real-time situationeel bewustzijn nodig hebben om tijdkritieke beslissingen te nemen.

Standaard rolgebaseerde toegangscontrole (RBAC), zoals geГЇmplementeerd in commerciГ«le identiteitsproviders zoals Keycloak of Azure AD, dekt rol-naar-toestemming-toewijzing adequaat voor bedrijfssoftware. Defensie C2-systemen vereisen een extra dimensie: classificatieniveaus en compartimenten. Een gebruiker kan geverifieerd zijn en de juiste rol hebben (bijv. "operator") maar toch de toegang worden geweigerd tot een specifieke track omdat die track is gemarkeerd met een classificatie of compartiment waarvoor de gebruiker geen machtiging heeft. Dit is het need-to-know principe in technische vorm.

RBAC vs ABAC: Welk Model Past bij Defensie C2

Pure RBAC wijst machtigingen toe aan rollen en rollen aan gebruikers. Een "Bataljon S2"-rol verleent toegang tot inlichtingenoverlays; een "Logistiek Officier"-rol verleent toegang tot aanvoerketendata. Dit model is eenvoudig te implementeren en te auditen, maar het kan geen fijnkorrelige beperkingen op dataniveau uitdrukken zonder rolexplosie — het aanmaken van een aparte rol voor elke mogelijke dataclassificatiecombinatie.

Attribute-Based Access Control (ABAC) evalueert toegangsbeslissingen op basis van attributen van het subject (gebruiker), de resource (dataobject), de actie en de omgeving (tijd, netwerkcontext). In een ABAC-model wordt toegang tot een track verleend als: het machtigingsniveau van de gebruiker groter of gelijk is aan het classificatieniveau van de track EN de gebruiker alle compartimenttags heeft die bij de track horen EN de huidige terminal van de gebruiker zich op een goedgekeurd netwerksegment bevindt.

In de praktijk gebruiken defensie C2-systemen een hybride: RBAC voor grove rolhandhaving (wie kan welke applicatiemodule benaderen) en ABAC voor fijnkorrelige datafiltering (welke records binnen een module een gebruiker kan zien). De RBAC-laag wordt afgedwongen bij authenticatietijd via JWT-claims; de ABAC-laag wordt afgedwongen bij querytijd door de datalaag die beveiliging op rijniveau toepast op basis van de attribuutset van de gebruiker.

Classificatieniveaus en Compartimenten

NAVO-classificatieniveaus in oplopende volgorde: NIET-GECLASSIFICEERD, BEPERKT, VERTROUWELIJK, GEHEIM, TOP SECRET. De meeste tactische C2-systemen werken op GEHEIM of lager, waarbij sommige systemen TOP SECRET/SCI-data verwerken in afzonderlijke enclaves. Het classificatieniveau van een dataobject is het minimale machtigingsniveau dat vereist is om het te benaderen.

Compartimenten zijn orthogonaal aan classificatieniveaus. Een gebruiker met GEHEIM-machtiging heeft mogelijk niet het SIGINT- of HUMINT-compartiment, zelfs niet op GEHEIM-niveau. Een track afgeleid van een SIGINT-sensor is getagd met het SIGINT-compartiment; alleen gebruikers met dat compartiment zien de track in de COP, ongeacht hun algemene machtigingsniveau. In software worden compartimenten geГЇmplementeerd als een set tekenreekstags op zowel het datarecord als de attribuutset van de gebruiker; toegang wordt alleen verleend wanneer de compartimentset van het datarecord een deelverzameling is van de compartimentset van de gebruiker.

Need-to-know voegt een derde dimensie toe: zelfs een gebruiker met het juiste machtigingsniveau en compartimentlidmaatschap kan worden beperkt van toegang tot data die niets te maken heeft met hun huidige missieopdracht. Dit is moeilijker programmatisch af te dwingen en wordt vaak geГЇmplementeerd als een combinatie van ABAC-beleid en handmatige databeheerder-controles.

JWT-claimstructuur voor Defensie C2

JSON Web Tokens dragen de identiteits- en attributenclaims van de gebruiker tussen de identiteitsprovider en C2-applicatieservices. Een defensiegericht JWT-payloadstructuur:

{
  "sub": "user-uuid-1234",
  "name": "Kpt. A. Smit",
  "roles": ["operator", "s2-officer"],
  "clearance": "SECRET",
  "compartments": ["SIGINT", "HUMINT"],
  "unit": "1-32-IN",
  "network_segment": "SIPRNET",
  "iat": 1746960000,
  "exp": 1746963600,
  "jti": "unique-token-id"
}

De clearance-claim draagt het machtigingsniveau van de gebruiker als een tekenreeks die wordt gekoppeld aan een numerieke waarde in de beleidsmotor (NIET-GECLASSIFICEERD=0, BEPERKT=1, VERTROUWELIJK=2, GEHEIM=3, TOP SECRET=4). De compartments-claim is een array van compartimenttekenreeksen. De network_segment-claim draagt de netwerkcontext — SIPRNET, NIPRNET of een missiespecifieke netwerkidentificator — waardoor omgevingsgebaseerde toegangsbeslissingen mogelijk zijn.

Tokengeldigheidsperiodes voor defensiesystemen zijn korter dan commerciële normen: 60-minuten toegangstokens met vernieuwingstokenrotatie. Elke tokenvernieuwing hervalideert tegen de huidige attribuutopslag van de identiteitsprovider, zodat ingetrokken machtigingen van kracht worden binnen één vernieuwingscyclus.

Beleidshandhavingspunten

In een microservices C2-architectuur moet toegangsbeheer op meerdere lagen worden afgedwongen — niet alleen bij de API-gateway. Een defensie C2-systeem heeft typisch drie beleidshandhavingspunten:

API-gateway (grove RBAC). Valideert JWT-handtekening en vervaldatum. Weigert aanvragen met ongeldige tokens. Routeert aanvragen naar de juiste service op basis van rolclaims. Maakt geen toegangsbeslissingen op dataniveau.

Servicelaag (ABAC-beleidsevaluatie). Elke service die geclassificeerde data verwerkt, heeft een ingebedde beleidsbesluiteenheid. Vóór het retourneren van een dataobject evalueert de service: gebruikersmachtiging >= dataclassificatieniveau EN gebruikerscompartimenten superset van datacompartimenten. Objecten die deze controle niet doorstaan, worden gefilterd uit de respons, niet teruggegeven met een 403-fout — het bestaan van geclassificeerde records is zelf vaak geclassificeerd.

Databaselaag (beveiliging op rijniveau). PostgreSQL-beveiligingsbeleid op rijniveau (RLS) dwingt beperkingen op dataniveau af bij de database zelf, wat diepgaande verdediging biedt tegen fouten in de applicatielogica. Zelfs als een service een bug heeft in zijn beleidsevaluatie, voorkomt de databaselaag dat ongefilterde data de applicatie bereikt.

Bell-LaPadula Multi-niveau Beveiligingsmodel

Het Bell-LaPadula (BLP) model formaliseert toegangsbeheer voor geclassificeerde informatie met twee primaire regels. De Eenvoudige Beveiligingseigenschap (niet omhoog lezen): een subject op classificatieniveau L kan een object op classificatieniveau L' niet lezen waar L' > L. De Stereigenschap (niet naar beneden schrijven): een subject op classificatieniveau L kan niet schrijven naar een object op classificatieniveau L' waar L' < L — waarmee wordt voorkomen dat een gemachtigde gebruiker geclassificeerde data kopieert naar een niet-geclassificeerd record.

In de praktijk is de regel van niet-naar-beneden-schrijven de moeilijkst af te dwingen in webapplicatie-architecturen. Een operator met GEHEIM-machtiging die in een C2-applicatie werkt, zou via fouten in de applicatielogica GEHEIM-trackdata kunnen kopiГ«ren naar een NIET-GECLASSIFICEERD rapport. Handhaving vereist dat schrijfbewerkingen expliciet het classificatieniveau van het doelrecord instellen op het maximum van het classificatieniveau van de brondata, en dat deze logica wordt afgedwongen op de servicelaag, niet overgelaten aan de operator.

IAM-providerintegratie

Keycloak is de meest gebruikte open-source identiteitsprovider in defensie C2-programma's vanwege zijn ondersteuning voor LDAP/Active Directory-federatie, fijnkorrelig autorisatiebeleid en on-premises implementatie zonder cloudafhankelijkheid. Het kan air-gapped worden ingezet, wat een vereiste is voor geclassificeerde netwerken.

De autorisatieservices van Keycloak ondersteunen ABAC-beleidsevaluatie native. Beleid wordt gedefinieerd als op JavaScript gebaseerde regels of met behulp van de ingebouwde JSON-beleidstaal. In een typische C2-integratie geeft Keycloak JWT's uit met de machtigings- en compartimentclaims van de gebruiker, afgeleid van Active Directory-groepslidmaatschap gesynchroniseerd vanuit de directoryservice van het geclassificeerde netwerk.

Auditsporen en SIEM-integratie

Elke toegangsbeslissing — zowel toewijzingen als weigeringen — moet worden gelogd met voldoende detail voor beveiligingsaudit en incidentrespons. Een defensie C2-auditlogvermelding omvat: tijdstempel, gebruikers-id, gebruikersmachtigingsniveau, geprobeerde actie, resource-id, resourceclassificatieniveau, beslissing (TOESTAAN/WEIGEREN) en de beleidsregel die de beslissing produceerde.

Auditlogs worden doorgestuurd naar een Security Information and Event Management (SIEM) systeem — IBM QRadar of Splunk Enterprise Security in de meeste NAVO-programmacontexten — voor real-time anomaliedetectie. Een gebruiker die een ongewoon aantal records benadert buiten zijn normale operationeel gebied, of een reeks geweigerde toegangspogingen gevolgd door succesvolle toegang, triggert een waarschuwing voor beveiligingsbeoordeling.

Implementatienota: Implementeer toegangsbeheer nooit als alleen een UI-beperking. Een knop verbergen in de interface terwijl het onderliggende API-eindpunt onbeschermd blijft, is een veelgemaakte fout in defensiesoftware in een vroeg stadium. Elk API-eindpunt moet de autorisatie van de beller onafhankelijk verifiГ«ren voordat data wordt geretourneerd, ongeacht of de UI de actie blootstelt of niet.