Architectuur

Figuur 1. RSBAC componenten

In figuur 1 wordt een schematisch overzicht van de architectuur gegeven. Het GFAC model vertaalt zich in een functionele scheiding tussen de delen die een beslissing nemen (ADF) en die delen die die beslissing afdwingen (AEF). De Linux AEF is (uiteraard) strikt Linux gebonden, maar met opzet zo klein mogelijk gehouden. De ADF bevat het grootste deel van de code en is zonder meer portable voor andere Unixen. Dit zou RSBAC eenvoudig porteerbaar moeten maken naar e.g. FreeBSD of gesloten Unixen, zoals HPUX, Solaris en dergelijke. RSBAC maakt verder nog gebruik van een eigen beschermd opslaggebied voor persistente data, de zogenaamde ACI, die ook een aantal aanroepen implementeert om deze data te kunnen lezen en schrijven. Per functioneel blok volgt een beschrijving.

ACI Access Control Information

Binnen dit blok bevindt zich de functionaliteit die zorgdraagt voor alle (interne) RSBAC administratie, waaronder locking informatie en linked lists in kernelgeheugen. Communicatie tussen de AEF en ADF vindt deels plaats via hier opgeslagen data. Hier worden de regels bewaard die de beveiligingsstrategieen definieren. Hier wordt ook de status tussen de diverse aanroepen bijgehouden. In het figuur is de ACI als een onderdeel van de kernel getekend. De ACI bevat echter ook, indien geconfigureerd, een koppeling met speciale directories per filesystem (die de naam 'rsbac' krijgen, dus bijvoorbeeld /rsbac, /var/rsbac etc.), waarin de kernellijsten zonodig door de kerneldaemon worden weggeschreven, om er bijvoorbeeld voor te kunnen zorgen dat na een reboot de meest actuele stand van zaken terug kan worden gezet.

AEF Access control Enforcement Facility

Dit is het stuk software wat de systemcalls van subjecten (processen) onderschept. De AEF haalt status-data uit de ACI. AEF communiceert vervolgens met ADF (zie hierna), die bepaalt of de system call wel of niet gehonoreerd mag worden. Afhankelijk van het besluit van de ADF zal de AEF de system call toestaan of afwijzen en een notificatie hiervan sturen aan de ADF.

ADF Access control Decision Facility

Deze softwarecomponent ontvangt van de AEF een notificatie dat er een system call wordt aangevraagd. De relevante data wordt uit de ACI gehaald. De keten van modules wordt vervolgens doorlopen, elke module bepaalt of de aanvraag wel of niet mag worden gehonoreerd. Aan het eind van de ketting is bekend welke module(s) toegang hebben geweigerd en welke toegang toestonden. De ADF zal de beslissing aan de AEF mededelen: als er 1 module was die de aanvraag afwees, is de aanvraag integraal afgewezen. De ADF wordt ook aangeroepen door de AEF wanneer een system call die eerder werd toegestaan is afgerond, waarna de ACI wordt bijgewerkt.

Samenvattend: de AEF onderschept de aanvragen, ADF bepaald of ze mogen worden gehonoreerd en ACI dient om de administratie bij te houden.